*** empty log message ***

This commit is contained in:
Federico Ponchio 2004-12-02 19:12:44 +00:00
parent 24978a13ae
commit f6b8487607
1 changed files with 17 additions and 16 deletions

View File

@ -45,16 +45,13 @@ class MyFace : public vcg::FaceAV<MyVertex, MyEdge, MyFace> {};
class MyMesh: class MyMesh:
public vcg::tri::TriMesh< std::vector<MyVertex>, std::vector<MyFace > > {}; public vcg::tri::TriMesh< std::vector<MyVertex>, std::vector<MyFace > > {};
class MyTriEdgeCollapse: class MyTriEdgeCollapse: public vcg::tri::TriEdgeCollapseQuadric< MyMesh, MyTriEdgeCollapse > {
public vcg::tri::TriEdgeCollapseQuadric< MyMesh, MyTriEdgeCollapse > { public:
public: typedef vcg::tri::TriEdgeCollapseQuadric< MyMesh, MyTriEdgeCollapse > TECQ;
typedef vcg::tri::TriEdgeCollapseQuadric<MyMesh, MyTriEdgeCollapse > TECQ; typedef TECQ::EdgeType EdgeType;
typedef TECQ::EdgeType EdgeType; inline MyTriEdgeCollapse( EdgeType p, int i) :TECQ(p,i){}
MyTriEdgeCollapse(EdgeType p, int i): TECQ(p, i) {}
~MyTriEdgeCollapse() {}
}; };
float Cluster(MyMesh &mesh, unsigned int target_faces); float Cluster(MyMesh &mesh, unsigned int target_faces);
float Quadric(MyMesh &mesh, unsigned int target_faces); float Quadric(MyMesh &mesh, unsigned int target_faces);
@ -64,7 +61,6 @@ float nxs::Decimate(Decimation mode,
vector<unsigned int> &newface, vector<unsigned int> &newface,
vector<BigLink> &newbord) { vector<BigLink> &newbord) {
for(unsigned int i = 0; i < newface.size(); i+= 3) { for(unsigned int i = 0; i < newface.size(); i+= 3) {
assert(newface[i] != newface[i+1]); assert(newface[i] != newface[i+1]);
assert(newface[i] != newface[i+2]); assert(newface[i] != newface[i+2]);
@ -100,10 +96,12 @@ float nxs::Decimate(Decimation mode,
// vcg::tri::io::ExporterPLY<MyMesh>::Save(mesh, "ribum.ply"); // vcg::tri::io::ExporterPLY<MyMesh>::Save(mesh, "ribum.ply");
float error; float error;
if(mode == CLUSTER) switch(mode) {
error = Cluster(mesh, target_faces); case CLUSTER: error = Cluster(mesh, target_faces); break;
else case QUADRIC: error = Quadric(mesh, target_faces); break;
error = Quadric(mesh, target_faces); default: cerr << "Unknown simplification mode: " << mode << endl;
exit(0);
}
newvert.clear(); newvert.clear();
newface.clear(); newface.clear();
@ -144,6 +142,8 @@ float nxs::Decimate(Decimation mode,
float Quadric(MyMesh &mesh, unsigned int target_faces) { float Quadric(MyMesh &mesh, unsigned int target_faces) {
vcg::tri::UpdateTopology<MyMesh>::VertexFace(mesh); vcg::tri::UpdateTopology<MyMesh>::VertexFace(mesh);
vcg::tri::UpdateBounding<MyMesh>::Box(mesh);
vcg::LocalOptimization<MyMesh> DeciSession(mesh); vcg::LocalOptimization<MyMesh> DeciSession(mesh);
MyTriEdgeCollapse::SetDefaultParams(); MyTriEdgeCollapse::SetDefaultParams();
@ -165,6 +165,7 @@ float Quadric(MyMesh &mesh, unsigned int target_faces) {
} }
error /= count; error /= count;
return error; return error;
return 0;
} }
float Cluster(MyMesh &mesh, unsigned int target_faces) { float Cluster(MyMesh &mesh, unsigned int target_faces) {
@ -212,7 +213,7 @@ float Cluster(MyMesh &mesh, unsigned int target_faces) {
} }
for(unsigned int i = nborder; i < part.size(); i++) { for(unsigned int i = nborder; i < part.size(); i++) {
if(count[i] > 0) if(count[i] > 0)
part[i] = centroid[i]/count[i]; part[i] = centroid[i]/count[i];
} }
} }