Changed all vn,fn into VN(),FN() in all the samples.
Shortened the curvature example Cleaned the attribute Example comments
This commit is contained in:
parent
aa2d1751f7
commit
c40c1b7f6b
|
@ -66,10 +66,10 @@ int main()
|
||||||
named_hv[i] = 1.0f; // or an integer index
|
named_hv[i] = 1.0f; // or an integer index
|
||||||
}
|
}
|
||||||
|
|
||||||
// you can query if an attribute is present or not
|
// query if an attribute is present or not
|
||||||
bool hasRadiosity = tri::HasPerVertexAttribute(m,"Radiosity");
|
bool hasRadiosity = tri::HasPerVertexAttribute(m,"Radiosity");
|
||||||
|
|
||||||
// Once created with AddPerVertexAttribute, an handle to the attribute can be obtained as follows
|
// obtain another handle of a previously attribute
|
||||||
MyMesh::PerVertexAttributeHandle<float> ret_hv = tri::Allocator<MyMesh>::GetPerVertexAttribute<float>(m,"Radiosity");
|
MyMesh::PerVertexAttributeHandle<float> ret_hv = tri::Allocator<MyMesh>::GetPerVertexAttribute<float>(m,"Radiosity");
|
||||||
|
|
||||||
// you can also have PerMesh attributes
|
// you can also have PerMesh attributes
|
||||||
|
@ -78,10 +78,10 @@ int main()
|
||||||
// PerMesh attributes are accessed directly using the handle itself
|
// PerMesh attributes are accessed directly using the handle itself
|
||||||
hm() = 10;
|
hm() = 10;
|
||||||
|
|
||||||
// you can delete an attribute by name
|
// delete an attribute by name
|
||||||
tri::Allocator<MyMesh>::DeletePerVertexAttribute(m,"Radiosity");
|
tri::Allocator<MyMesh>::DeletePerVertexAttribute(m,"Radiosity");
|
||||||
|
|
||||||
// you can delete an attribute by handle
|
// delete an attribute by handle
|
||||||
tri::Allocator<MyMesh>::DeletePerVertexAttribute(m,anon_hv);
|
tri::Allocator<MyMesh>::DeletePerVertexAttribute(m,anon_hv);
|
||||||
|
|
||||||
bool res;
|
bool res;
|
||||||
|
|
|
@ -93,7 +93,7 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
vcg::tri::UpdateBounding<MyMesh>::Box(m);
|
vcg::tri::UpdateBounding<MyMesh>::Box(m);
|
||||||
vcg::tri::UpdateNormal<MyMesh>::PerFace(m);
|
vcg::tri::UpdateNormal<MyMesh>::PerFace(m);
|
||||||
printf("Input mesh vn:%i fn:%i\n",m.vn,m.fn);
|
printf("Input mesh vn:%i fn:%i\n",m.VN(),m.FN());
|
||||||
|
|
||||||
int t0=clock();
|
int t0=clock();
|
||||||
// Initialization
|
// Initialization
|
||||||
|
@ -106,7 +106,7 @@ int main(int argc, char **argv)
|
||||||
|
|
||||||
int t2=clock();
|
int t2=clock();
|
||||||
|
|
||||||
printf("Output mesh vn:%i fn:%i\n",m.vn,m.fn);
|
printf("Output mesh vn:%i fn:%i\n",m.VN(),m.FN());
|
||||||
printf("Created in :%i msec (%i+%i)\n",t2-t0,t1-t0,t2-t1);
|
printf("Created in :%i msec (%i+%i)\n",t2-t0,t1-t0,t2-t1);
|
||||||
|
|
||||||
vcg::tri::io::PlyInfo pi;
|
vcg::tri::io::PlyInfo pi;
|
||||||
|
|
|
@ -120,7 +120,7 @@ bool UnitTest_Closest(const char *filename1, int sampleNum, float dispPerc, std:
|
||||||
TriMeshGrid TRGrid;
|
TriMeshGrid TRGrid;
|
||||||
if(useFaceNumForGrid)
|
if(useFaceNumForGrid)
|
||||||
{
|
{
|
||||||
TRGrid.Set(mr.face.begin(),mr.face.end(),mr.fn*2);
|
TRGrid.Set(mr.face.begin(),mr.face.end(),mr.FN()*2);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
|
@ -90,7 +90,7 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
vcg::tri::UpdateBounding<MyMesh>::Box(m);
|
vcg::tri::UpdateBounding<MyMesh>::Box(m);
|
||||||
vcg::tri::UpdateNormal<MyMesh>::PerFace(m);
|
vcg::tri::UpdateNormal<MyMesh>::PerFace(m);
|
||||||
printf("Input mesh vn:%i fn:%i\n",m.vn,m.fn);
|
printf("Input mesh vn:%i fn:%i\n",m.VN(),m.FN());
|
||||||
vcg::tri::Clustering<MyMesh, vcg::tri::AverageColorCell<MyMesh> > Grid;
|
vcg::tri::Clustering<MyMesh, vcg::tri::AverageColorCell<MyMesh> > Grid;
|
||||||
Grid.DuplicateFaceParam=DupFace;
|
Grid.DuplicateFaceParam=DupFace;
|
||||||
Grid.Init(m.bbox,CellNum,CellSize);
|
Grid.Init(m.bbox,CellNum,CellSize);
|
||||||
|
@ -104,7 +104,7 @@ int main(int argc, char **argv)
|
||||||
int t1=clock();
|
int t1=clock();
|
||||||
Grid.ExtractMesh(m);
|
Grid.ExtractMesh(m);
|
||||||
int t2=clock();
|
int t2=clock();
|
||||||
printf("Output mesh vn:%i fn:%i\n",m.vn,m.fn);
|
printf("Output mesh vn:%i fn:%i\n",m.VN(),m.FN());
|
||||||
printf("Simplified in :%i msec (%i+%i)\n",t2-t0,t1-t0,t2-t1);
|
printf("Simplified in :%i msec (%i+%i)\n",t2-t0,t1-t0,t2-t1);
|
||||||
|
|
||||||
vcg::tri::io::PlyInfo pi;
|
vcg::tri::io::PlyInfo pi;
|
||||||
|
|
|
@ -101,16 +101,16 @@ bool UnitTest_Append(const char *filename1, const char *filename2)
|
||||||
exit(-1);
|
exit(-1);
|
||||||
}
|
}
|
||||||
int endOpen = clock();
|
int endOpen = clock();
|
||||||
std::cout << "mesh loaded in " << float(endOpen-startOpen)/CLOCKS_PER_SEC << " msecs. Verts: " << mr.vn << " Faces: " << mr.fn << "\n";
|
std::cout << "mesh loaded in " << float(endOpen-startOpen)/CLOCKS_PER_SEC << " msecs. Verts: " << mr.VN() << " Faces: " << mr.FN() << "\n";
|
||||||
|
|
||||||
int startCopy = clock();
|
int startCopy = clock();
|
||||||
vcg::tri::Append<MeshType,MeshType>::Mesh(ml,mr,false,true);
|
vcg::tri::Append<MeshType,MeshType>::Mesh(ml,mr,false,true);
|
||||||
int endCopy = clock();
|
int endCopy = clock();
|
||||||
std::cout << "mesh copied in " << float(endCopy-startCopy)/CLOCKS_PER_SEC << " msecs." << std::endl;
|
std::cout << "mesh copied in " << float(endCopy-startCopy)/CLOCKS_PER_SEC << " msecs." << std::endl;
|
||||||
|
|
||||||
assert(ml.vn==mr.vn);
|
assert(ml.VN()==mr.VN());
|
||||||
assert(ml.en==mr.en);
|
assert(ml.en==mr.en);
|
||||||
assert(ml.fn==mr.fn);
|
assert(ml.FN()==mr.FN());
|
||||||
|
|
||||||
int startSave = clock();
|
int startSave = clock();
|
||||||
vcg::tri::io::ExporterPLY<MeshType>::Save(ml,filename2);
|
vcg::tri::io::ExporterPLY<MeshType>::Save(ml,filename2);
|
||||||
|
|
|
@ -22,7 +22,8 @@
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
#include<vcg/complex/complex.h>
|
#include<vcg/complex/complex.h>
|
||||||
|
|
||||||
#include<wrap/io_trimesh/import_off.h>
|
#include<wrap/io_trimesh/export_off.h>
|
||||||
|
#include <vcg/complex/algorithms/create/platonic.h>
|
||||||
|
|
||||||
#include<vcg/complex/algorithms/update/curvature.h>
|
#include<vcg/complex/algorithms/update/curvature.h>
|
||||||
#include<vcg/complex/algorithms/update/normal.h>
|
#include<vcg/complex/algorithms/update/normal.h>
|
||||||
|
@ -44,26 +45,16 @@ class MyMesh : public tri::TriMesh< vector<MyVertex>, vector<MyFace> , vector
|
||||||
|
|
||||||
int main( int argc, char **argv )
|
int main( int argc, char **argv )
|
||||||
{
|
{
|
||||||
if(argc<2)
|
|
||||||
{
|
|
||||||
printf("Usage trimesh_base <meshfilename.obj>\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
MyMesh m;
|
MyMesh m;
|
||||||
|
tri::Torus(m,30,10);
|
||||||
if(tri::io::ImporterOFF<MyMesh>::Open(m,argv[1])!=0)
|
tri::io::ExporterOFF<MyMesh>::Save(m,"torus.off");
|
||||||
{
|
|
||||||
printf("Error reading file %s\n",argv[1]);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
tri::UpdateTopology<MyMesh>::FaceFace(m);
|
tri::UpdateTopology<MyMesh>::FaceFace(m);
|
||||||
tri::UpdateCurvature<MyMesh>::PerVertex(m);
|
tri::UpdateCurvature<MyMesh>::PerVertex(m);
|
||||||
tri::UpdateCurvature<MyMesh>::MeanAndGaussian(m);
|
// tri::UpdateCurvature<MyMesh>::MeanAndGaussian(m);
|
||||||
tri::UpdateCurvature<MyMesh>::PrincipalDirections(m);
|
// tri::UpdateCurvature<MyMesh>::PrincipalDirections(m);
|
||||||
tri::UpdateCurvature<MyMesh>::PrincipalDirectionsNormalCycle(m);
|
tri::UpdateCurvature<MyMesh>::PrincipalDirectionsNormalCycle(m);
|
||||||
tri::UpdateCurvature<MyMesh>::PrincipalDirectionsPCA(m,m.bbox.Diag()/100);
|
// tri::UpdateCurvature<MyMesh>::PrincipalDirectionsPCA(m,m.bbox.Diag()/100);
|
||||||
|
|
||||||
tri::UpdateNormal<MyMesh>::PerVertexNormalized(m);
|
tri::UpdateNormal<MyMesh>::PerVertexNormalized(m);
|
||||||
printf("Input mesh vn:%i fn:%i\n",m.VN(),m.FN());
|
printf("Input mesh vn:%i fn:%i\n",m.VN(),m.FN());
|
||||||
|
|
|
@ -64,7 +64,7 @@ int main( int argc, char **argv )
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Mesh has %i vn %i fn\n",m.vn,m.fn);
|
printf("Mesh has %i vn %i fn\n",m.VN(),m.FN());
|
||||||
tri::PoissonSolver<MyMesh> PS(m);
|
tri::PoissonSolver<MyMesh> PS(m);
|
||||||
|
|
||||||
if(!PS.IsFeaseable())
|
if(!PS.IsFeaseable())
|
||||||
|
|
|
@ -201,7 +201,7 @@ int main( int argc, char **argv )
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
tri::UpdateBounding<MyMesh>::Box(m);
|
tri::UpdateBounding<MyMesh>::Box(m);
|
||||||
printf("Input mesh vn:%i fn:%i\n",m.vn,m.fn);
|
printf("Input mesh vn:%i fn:%i\n",m.VN(),m.FN());
|
||||||
srand(time(0));
|
srand(time(0));
|
||||||
|
|
||||||
Plane3f slicingPlane;
|
Plane3f slicingPlane;
|
||||||
|
@ -210,7 +210,7 @@ int main( int argc, char **argv )
|
||||||
vcg::IntersectionPlaneMesh<MyMesh, MyMesh, float>(m, slicingPlane, em );
|
vcg::IntersectionPlaneMesh<MyMesh, MyMesh, float>(m, slicingPlane, em );
|
||||||
tri::Clean<MyMesh>::RemoveDuplicateVertex(em);
|
tri::Clean<MyMesh>::RemoveDuplicateVertex(em);
|
||||||
vcg::tri::CapEdgeMesh(em,slice);
|
vcg::tri::CapEdgeMesh(em,slice);
|
||||||
printf("Slice mesh has %i vert and %i faces\n", slice.vn, slice.fn );
|
printf("Slice mesh has %i vert and %i faces\n", slice.VN(), slice.FN() );
|
||||||
|
|
||||||
MyMesh A,B;
|
MyMesh A,B;
|
||||||
SplitMesh(m,A,B,slicingPlane);
|
SplitMesh(m,A,B,slicingPlane);
|
||||||
|
@ -218,7 +218,7 @@ int main( int argc, char **argv )
|
||||||
tri::UpdatePosition<MyMesh>::Translate(B,-slicingPlane.Direction()*m.bbox.Diag()/80.0);
|
tri::UpdatePosition<MyMesh>::Translate(B,-slicingPlane.Direction()*m.bbox.Diag()/80.0);
|
||||||
tri::Append<MyMesh,MyMesh>::Mesh(sliced,A);
|
tri::Append<MyMesh,MyMesh>::Mesh(sliced,A);
|
||||||
tri::Append<MyMesh,MyMesh>::Mesh(sliced,B);
|
tri::Append<MyMesh,MyMesh>::Mesh(sliced,B);
|
||||||
printf("Sliced mesh has %i vert and %i faces\n", sliced.vn, sliced.fn );
|
printf("Sliced mesh has %i vert and %i faces\n", sliced.VN(), sliced.FN() );
|
||||||
|
|
||||||
tri::io::ExporterPLY<MyMesh>::Save(slice,"slice.ply",false);
|
tri::io::ExporterPLY<MyMesh>::Save(slice,"slice.ply",false);
|
||||||
tri::io::ExporterPLY<MyMesh>::Save(sliced,"sliced.ply",false);
|
tri::io::ExporterPLY<MyMesh>::Save(sliced,"sliced.ply",false);
|
||||||
|
|
|
@ -97,12 +97,12 @@ int main(int argc,char **argv )
|
||||||
printf("Error reading file %s\n",argv[1]);
|
printf("Error reading file %s\n",argv[1]);
|
||||||
exit(0);
|
exit(0);
|
||||||
}
|
}
|
||||||
printf("Input mesh %3i vn:%9i fn:%9i\n",i, mr.vn, mr.fn);
|
printf("Input mesh %3i vn:%9i fn:%9i\n",i, mr.VN(), mr.FN());
|
||||||
if(ClipFlag)
|
if(ClipFlag)
|
||||||
{
|
{
|
||||||
tri::GenericVertexInterpolator<MyMesh> interp(mr);
|
tri::GenericVertexInterpolator<MyMesh> interp(mr);
|
||||||
tri::TriMeshClipper<MyMesh>::Box(ClipBB,interp,mr);
|
tri::TriMeshClipper<MyMesh>::Box(ClipBB,interp,mr);
|
||||||
printf(" clipped to vn:%9i fn:%9i\n", mr.vn, mr.fn);
|
printf(" clipped to vn:%9i fn:%9i\n", mr.VN(), mr.FN());
|
||||||
}
|
}
|
||||||
tri::UpdateBounding<MyMesh>::Box(mr);
|
tri::UpdateBounding<MyMesh>::Box(mr);
|
||||||
TotBB.Add(mr.bbox);
|
TotBB.Add(mr.bbox);
|
||||||
|
@ -111,7 +111,7 @@ int main(int argc,char **argv )
|
||||||
++i;
|
++i;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Output mesh vn:%i fn:%i\n",ml.vn,ml.fn);
|
printf("Output mesh vn:%i fn:%i\n",ml.VN(),ml.FN());
|
||||||
|
|
||||||
tri::io::ExporterPLY<MyMesh>::Save(ml,"joined.ply");
|
tri::io::ExporterPLY<MyMesh>::Save(ml,"joined.ply");
|
||||||
int dv=tri::Clean<MyMesh>::RemoveDuplicateVertex(ml);
|
int dv=tri::Clean<MyMesh>::RemoveDuplicateVertex(ml);
|
||||||
|
|
|
@ -20,10 +20,8 @@
|
||||||
* for more details. *
|
* for more details. *
|
||||||
* *
|
* *
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
#include<vcg/complex/complex.h>
|
|
||||||
|
|
||||||
#include<vcg/simplex/vertex/component_ocf.h>
|
#include<vcg/complex/complex.h>
|
||||||
#include<vcg/simplex/face/component_ocf.h>
|
|
||||||
|
|
||||||
#include<vcg/complex/algorithms/create/platonic.h>
|
#include<vcg/complex/algorithms/create/platonic.h>
|
||||||
#include<vcg/complex/algorithms/update/topology.h>
|
#include<vcg/complex/algorithms/update/topology.h>
|
||||||
|
@ -65,12 +63,11 @@ int main(int , char **)
|
||||||
tri::Tetrahedron(cm);
|
tri::Tetrahedron(cm);
|
||||||
tri::Tetrahedron(cmof);
|
tri::Tetrahedron(cmof);
|
||||||
|
|
||||||
printf("Generated mesh has %i vertices and %i triangular faces\n",cm.vn,cm.fn);
|
printf("Generated mesh has %i vertices and %i triangular faces\n",cm.VN(),cm.FN());
|
||||||
|
|
||||||
/// Calculates both vertex and face normals.
|
assert(tri::HasFFAdjacency(cmof) == false);
|
||||||
/// The normal of a vertex v is the weigthed average of the normals of the faces incident on v.
|
|
||||||
/// normals are not normalized
|
|
||||||
cmof.face.EnableFFAdjacency();
|
cmof.face.EnableFFAdjacency();
|
||||||
|
assert(tri::HasFFAdjacency(cmof) == true);
|
||||||
|
|
||||||
tri::UpdateTopology<CMesh >::FaceFace(cm);
|
tri::UpdateTopology<CMesh >::FaceFace(cm);
|
||||||
tri::UpdateTopology<CMeshOcf>::FaceFace(cmof);
|
tri::UpdateTopology<CMeshOcf>::FaceFace(cmof);
|
||||||
|
@ -78,19 +75,22 @@ int main(int , char **)
|
||||||
tri::UpdateFlags<CMesh >::FaceBorderFromFF(cm);
|
tri::UpdateFlags<CMesh >::FaceBorderFromFF(cm);
|
||||||
tri::UpdateFlags<CMeshOcf>::FaceBorderFromFF(cmof);
|
tri::UpdateFlags<CMeshOcf>::FaceBorderFromFF(cmof);
|
||||||
|
|
||||||
tri::UpdateNormal<CMesh >::PerVertexNormalized(cm);
|
tri::UpdateNormal<CMesh >::PerVertexPerFace(cm);
|
||||||
tri::UpdateNormal<CMeshOcf>::PerVertexNormalized(cmof);
|
cmof.face.EnableNormal(); // if you remove this the next line will throw an exception for a missing 'normal' component
|
||||||
|
tri::UpdateNormal<CMeshOcf>::PerVertexPerFace(cmof);
|
||||||
|
|
||||||
printf("Normal of face 0 is %f %f %f\n\n",cm.face[0].N()[0],cm.face[0].N()[1],cm.face[0].N()[2]);
|
printf("Normal of face 0 is %f %f %f\n\n",cm.face[0].N()[0],cm.face[0].N()[1],cm.face[0].N()[2]);
|
||||||
int t0=0,t1=0;
|
int t0=0,t1=0,t2=0;
|
||||||
while(t1-t0<200)
|
while(float(t1-t0)/CLOCKS_PER_SEC < 0.5)
|
||||||
{
|
{
|
||||||
t0=clock();
|
t0=clock();
|
||||||
tri::Refine(cm,tri::MidPointButterfly<CMesh>(cm),0);
|
tri::Refine(cm,tri::MidPointButterfly<CMesh>(cm),0);
|
||||||
t1=clock();
|
t1=clock();
|
||||||
tri::Refine(cmof,tri::MidPointButterfly<CMeshOcf>(cmof),0);
|
tri::Refine(cmof,tri::MidPointButterfly<CMeshOcf>(cmof),0);
|
||||||
|
t2=clock();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
printf("Last Iteration: Refined a tetra up to a mesh of %i faces in %5.2f %5.2f sec\n",cm.FN(),float(t1-t0)/CLOCKS_PER_SEC,float(t2-t1)/CLOCKS_PER_SEC);
|
||||||
cmof.vert.EnableRadius();
|
cmof.vert.EnableRadius();
|
||||||
cmof.vert.EnableQuality();
|
cmof.vert.EnableQuality();
|
||||||
|
|
||||||
|
@ -118,7 +118,6 @@ int main(int , char **)
|
||||||
{
|
{
|
||||||
float q =vi->Q();
|
float q =vi->Q();
|
||||||
float r =vi->R();
|
float r =vi->R();
|
||||||
// int ii = vcg::tri::Index(cmof, *vi);
|
|
||||||
assert(q==r);
|
assert(q==r);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -148,7 +148,7 @@ int main(int argc,char ** argv)
|
||||||
|
|
||||||
printf("Initializated in %i msec\n",t1-t0);
|
printf("Initializated in %i msec\n",t1-t0);
|
||||||
printf("Completed in %i msec\n",t2-t1);
|
printf("Completed in %i msec\n",t2-t1);
|
||||||
printf("Shoot %i rays and found %i intersections\n",m.vn*samplePerVert,totRay);
|
printf("Shoot %i rays and found %i intersections\n",m.VN()*samplePerVert,totRay);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -96,7 +96,7 @@ int main(int argc, char **argv)
|
||||||
tri::UpdateTopology<MyMesh>::FaceFace(m);
|
tri::UpdateTopology<MyMesh>::FaceFace(m);
|
||||||
tri::UpdateFlags<MyMesh>::FaceBorderFromFF(m);
|
tri::UpdateFlags<MyMesh>::FaceBorderFromFF(m);
|
||||||
tri::UpdateNormal<MyMesh>::PerVertexNormalized(m);
|
tri::UpdateNormal<MyMesh>::PerVertexNormalized(m);
|
||||||
printf("Input mesh vn:%i fn:%i\n",m.vn,m.fn);
|
printf("Input mesh vn:%i fn:%i\n",m.VN(),m.FN());
|
||||||
|
|
||||||
n_steps=atoi(argv[3]);
|
n_steps=atoi(argv[3]);
|
||||||
|
|
||||||
|
@ -124,7 +124,7 @@ int main(int argc, char **argv)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("Output mesh vn:%i fn:%i\n",m.vn,m.fn);
|
printf("Output mesh vn:%i fn:%i\n",m.VN(),m.FN());
|
||||||
|
|
||||||
vcg::tri::io::PlyInfo pi;
|
vcg::tri::io::PlyInfo pi;
|
||||||
pi.mask|=vcg::tri::io::Mask::IOM_BITPOLYGONAL;
|
pi.mask|=vcg::tri::io::Mask::IOM_BITPOLYGONAL;
|
||||||
|
|
|
@ -130,13 +130,13 @@ int main(int argc, char ** argv)
|
||||||
srcMesh.face.EnableWedgeTex();
|
srcMesh.face.EnableWedgeTex();
|
||||||
#endif
|
#endif
|
||||||
vcg::tri::io::ImporterPLY<SrcMesh>::Open(srcMesh, argv[1]);
|
vcg::tri::io::ImporterPLY<SrcMesh>::Open(srcMesh, argv[1]);
|
||||||
if ((srcMesh.vn <= 0) || (srcMesh.fn <= 0))
|
if ((srcMesh.VN() <= 0) || (srcMesh.FN() <= 0))
|
||||||
{
|
{
|
||||||
printf("invalid source mesh file.\n");
|
printf("invalid source mesh file.\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
const int srcVN = srcMesh.vn;
|
const int srcVN = srcMesh.VN();
|
||||||
const int srcFN = srcMesh.fn;
|
const int srcFN = srcMesh.FN();
|
||||||
printf("source mesh succesfully loaded.\n");
|
printf("source mesh succesfully loaded.\n");
|
||||||
|
|
||||||
#ifdef TEST_IN_PLACE_SPLIT
|
#ifdef TEST_IN_PLACE_SPLIT
|
||||||
|
@ -154,8 +154,8 @@ int main(int argc, char ** argv)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
printf("destination mesh succesfully saved.\n");
|
printf("destination mesh succesfully saved.\n");
|
||||||
const int dstVN = dstMesh.vn;
|
const int dstVN = dstMesh.VN();
|
||||||
const int dstFN = dstMesh.fn;
|
const int dstFN = dstMesh.FN();
|
||||||
|
|
||||||
printf("\n");
|
printf("\n");
|
||||||
printf("statistics:\n");
|
printf("statistics:\n");
|
||||||
|
|
Loading…
Reference in New Issue