From 241d058c92a4e1c5474e73611caeb103075c606e Mon Sep 17 00:00:00 2001 From: mtarini Date: Mon, 20 Apr 2009 22:59:08 +0000 Subject: [PATCH] Changed importers (off ply obj raw) to tag edges inside polygonal faces as "faux" --- wrap/io_trimesh/import_obj.h | 2 +- wrap/io_trimesh/import_off.h | 6 ++++++ wrap/io_trimesh/import_ply.h | 42 +++++++++++++++++++++++------------- wrap/io_trimesh/import_raw.h | 21 ++++++++++++------ 4 files changed, 48 insertions(+), 23 deletions(-) diff --git a/wrap/io_trimesh/import_obj.h b/wrap/io_trimesh/import_obj.h index 2fbf4c5f..f3304730 100644 --- a/wrap/io_trimesh/import_obj.h +++ b/wrap/io_trimesh/import_obj.h @@ -625,7 +625,7 @@ static int Open( OpenMeshType &m, const char * filename, Info &oi) } if ( oi.mask & vcg::tri::io::Mask::IOM_WEDGNORMAL ) m.face[i].WN(j).Import(normals[indexedFaces[i].n[j]]); - // set border flags according to internals faces + // set faux edge flags according to internals faces if(indexedFaces[i].edge[j]) m.face[i].SetF(j); else m.face[i].ClearF(j); } diff --git a/wrap/io_trimesh/import_off.h b/wrap/io_trimesh/import_off.h index 220930af..61261cb5 100644 --- a/wrap/io_trimesh/import_off.h +++ b/wrap/io_trimesh/import_off.h @@ -499,6 +499,12 @@ namespace vcg mesh.face[f+j].V(0) = &(mesh.vert[ vertIndices[0 ] ]); mesh.face[f+j].V(1) = &(mesh.vert[ vertIndices[1+j] ]); mesh.face[f+j].V(2) = &(mesh.vert[ vertIndices[2+j] ]); + if (tri::HasPerFaceFlags(mesh)) { + // tag internal polygnal edges as "faux" + if (j>0) mesh.face[f+j].SetF(0); + if (j3) fi->SetF(2); + for(k=0;k3) { - int curpos=int(fi-m.face.begin()); + int curpos=int(fi-m.face.begin()); Allocator::AddFaces(m,fa.size-3); fi=m.face.begin()+curpos; + } for(int qq=0;qq=m.vn ) - { - pi.status = PlyInfo::E_BAD_VERT_INDEX; - return pi.status; - } - (*fi).V(k) = index[ fa.v[1+qq+k] ]; - } + for(k=1;k<3;++k) + { + if( fa.v[2+qq]<0 || fa.v[2+qq]>=m.vn ) + { + pi.status = PlyInfo::E_BAD_VERT_INDEX; + return pi.status; + } + (*fi).V(k) = index[ fa.v[1+qq+k] ]; + + } - for(k=0;kSetF(0); + if (qq!=fa.size-3) fi->SetF(2); + + for(k=0;k::AddFaces(m,trinum); - + FaceIterator fi2 = fi; m.fn = trinum; for(cc=0; cc