Index: OSGOBJSceneFileType.cpp
===================================================================
RCS file: /cvsroot/opensg/OpenSG/Source/System/FileIO/OBJ/OSGOBJSceneFileType.cpp,v
retrieving revision 1.24
diff -u -r1.24 OSGOBJSceneFileType.cpp
--- OSGOBJSceneFileType.cpp	12 Nov 2006 19:12:12 -0000	1.24
+++ OSGOBJSceneFileType.cpp	13 Dec 2006 11:15:07 -0000
@@ -315,9 +315,27 @@
                         else
                             if (meshIndexMask != indexMask)
                             {
-                                FFATAL (( "IndexMask unmatch, can not create geo\n"));
-                                meshIndexMask = 0;
-                                break;
+				// consider this real-world example:
+				// [...]
+				// f 1603//1747 1679//1744 1678//1743
+				// s 1
+				// f 9/1/10 5/2/9 1680/3/1748 1681/4/174
+				// [...]
+				// Some faces contain texture coords and others do not.
+				// The old version did just skip this geometry.
+				// This version should continue if there's at least 
+				// the vertex index
+				// I've seen the change in the maskIndex only after a smooth group,
+				// so it's perhaps smarter to not ignore the smooth group further up in this code
+				if( !(indexMask & 1) )  {
+				  // if there are vertex indices there's no reason to get in here
+                                  FFATAL (( "IndexMask unmatch, can not create geo\n"));
+                                  meshIndexMask = 0;
+                                  break;
+				}else{
+				  // consider the minimum similarities of mesh masks
+				  meshIndexMask &= indexMask;
+				}
                             }
                     }
                 else
@@ -335,8 +353,9 @@
                         geoPtr->setLengths   ( lensPtr );
                         geoPtr->setTypes     ( typePtr );
 
-                        if ( texCoordPtr->size() > 0 )
+                        if ( (meshIndexMask & 2) && texCoordPtr->size() > 0 )
                         {
+			    // just make sure that there are tex coords for ALL meshes
                             geoPtr->setTexCoords ( texCoordPtr );
                         }
                         else
@@ -345,8 +364,9 @@
                             meshIndexMask &= ~Geometry::MapTexCoords;
                         }
                   
-                        if ( normalPtr->size() > 0 )
+                        if ( (meshIndexMask & 4) && normalPtr->size() > 0 )
                         {
+			    // just make sure that there are normals for ALL vertices
                             geoPtr->setNormals   ( normalPtr );
                         }
                         else
