Browse Source

V is always #V by 3

Former-commit-id: 2487b90902850284ff4c1107ab9e472cb30ceec7
Alec Jacobson 9 years ago
parent
commit
df0e402d4e
1 changed files with 14 additions and 1 deletions
  1. 14 1
      include/igl/read_triangle_mesh.cpp

+ 14 - 1
include/igl/read_triangle_mesh.cpp

@@ -39,7 +39,14 @@ IGL_INLINE bool igl::read_triangle_mesh(
   vector<vector<Index> > FTC, FN;
   if(e == "obj")
   {
-    return readOBJ(str,V,TC,N,F,FTC,FN);
+    // Annoyingly obj can store 4 coordinates, truncate to xyz for this generic
+    // read_triangle_mesh
+    bool success = readOBJ(str,V,TC,N,F,FTC,FN);
+    for(auto & v : V)
+    {
+      v.resize(std::min(v.size(),(size_t)3));
+    }
+    return success;
   }else if(e == "off")
   {
     return readOFF(str,V,F,N);
@@ -98,6 +105,12 @@ IGL_INLINE bool igl::read_triangle_mesh(
     {
       return false;
     }
+    // Annoyingly obj can store 4 coordinates, truncate to xyz for this generic
+    // read_triangle_mesh
+    for(auto & v : vV)
+    {
+      v.resize(std::min(v.size(),(size_t)3));
+    }
   }else if(ext == "off")
   {
     if(!readOFF(filename,vV,vF,vN))