diff --git a/src/osgUtil/Simplifier.cpp b/src/osgUtil/Simplifier.cpp index caaf3eaaa..5375ad532 100644 --- a/src/osgUtil/Simplifier.cpp +++ b/src/osgUtil/Simplifier.cpp @@ -174,11 +174,16 @@ public: { Edge* edge = const_cast(_edgeSet.begin()->get()); - if (edge->getErrorMetric()==FLT_MAX) return false; + if (edge->getErrorMetric()==FLT_MAX) + { + osg::notify(osg::WARN)<<"collapseMinimumErrorEdge() return false due to edge->getErrorMetric()==FLT_MAX"< pNew = edge->_proposedPoint.valid()? edge->_proposedPoint : computeInterpolatedPoint(edge,0.5f); return (collapseEdge(edge,pNew.get())); } + osg::notify(osg::WARN)<<"collapseMinimumErrorEdge() return false due to _edgeSet.empty()"<_triangles.size()<2) return false; - if (edge->_triangles.size()>2) return false; + //if (edge->_triangles.size()<2) return false; + //if (edge->_triangles.size()>2) return false; if (edge->getMaxNormalDeviationOnEdgeCollapse()>1.0) { @@ -827,9 +832,12 @@ public: Triangle* newTri = addTriangle(p1,p2,p3); - newEdges.insert(newTri->_e1); - newEdges.insert(newTri->_e2); - newEdges.insert(newTri->_e3); + if (newTri) + { + newEdges.insert(newTri->_e1); + newEdges.insert(newTri->_e2); + newEdges.insert(newTri->_e3); + } } @@ -845,10 +853,12 @@ public: Triangle* newTri = addTriangle(p1,p2,p3); - newEdges.insert(newTri->_e1); - newEdges.insert(newTri->_e2); - newEdges.insert(newTri->_e3); - + if (newTri) + { + newEdges.insert(newTri->_e1); + newEdges.insert(newTri->_e2); + newEdges.insert(newTri->_e3); + } } @@ -1457,7 +1467,7 @@ Simplifier::Simplifier(float sampleRatio, float maximumError): void Simplifier::simplify(osg::Geometry& geometry) { - osg::notify(osg::INFO)<<"++++++++++++++simplifier************"<getErrorMetric() , numOriginalPrimitives, ec._triangleSet.size()) && ec.collapseMinimumErrorEdge()) { - osg::notify(osg::INFO)<<"Collapsed edge ec._triangleSet.size()="<