*** empty log message ***
This commit is contained in:
parent
24978a13ae
commit
f6b8487607
|
|
@ -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;
|
||||||
MyTriEdgeCollapse(EdgeType p, int i): TECQ(p, i) {}
|
inline 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) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue