Exemplo n.º 1
0
void PolyMesh::Optimize (PolyMesh::IsEqualVertexCB cb)
{
	OptimizeVertices(cb);

	// remove double linked vertices
	vector<Poly*> npl;
	for (unsigned int a=0;a<poly.size();a++) {
		Poly *pl=poly[a];

		bool finished;
		do {
			finished=true;
			for (unsigned int i=0,j=pl->verts.size()-1;i<pl->verts.size();j=i++) 
				if (pl->verts[i] == pl->verts[j]) {
					pl->verts.erase (pl->verts.begin()+i);
					finished=false;
					break;
				}
		} while (!finished);

		if (pl->verts.size()>=3)
			npl.push_back(pl);
		else
			delete pl;
	}
	poly=npl;
}
Exemplo n.º 2
0
void MdlObject::Optimize ()
{
	OptimizeVertices();

	// remove double linked vertices
	vector<Poly*> npl;
	for (int a=0;a<poly.size();a++) {
		Poly *pl=poly[a];

		bool finished;
		do {
			finished=true;
			for (int i=0,j=(int)pl->verts.size()-1;i<pl->verts.size();j=i++) 
				if (pl->verts[i] == pl->verts[j]) {
					pl->verts.erase (pl->verts.begin()+i);
					finished=false;
					break;
				}
		} while (!finished);

		if (pl->verts.size()>=3)
			npl.push_back(pl);
		else
			delete pl;
	}
	poly=npl;

	InvalidateRenderData();
}