Changeset 11473 for OpenSceneGraph/trunk/src/osgUtil/Simplifier.cpp
- Timestamp:
- 05/28/10 17:51:00 (3 years ago)
- Files:
-
- 1 modified
-
OpenSceneGraph/trunk/src/osgUtil/Simplifier.cpp (modified) (36 diffs)
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/src/osgUtil/Simplifier.cpp
r10764 r11473 94 94 if (p1==0 || p2==0) 95 95 { 96 osg::notify(osg::NOTICE)<<"Error computeInterpolatedPoint("<<edge<<",r) p1 and/or p2==0"<<std::endl;96 OSG_NOTICE<<"Error computeInterpolatedPoint("<<edge<<",r) p1 and/or p2==0"<<std::endl; 97 97 return 0; 98 98 } … … 155 155 if (!edge->_p1 || !edge->_p2) 156 156 { 157 osg::notify(osg::NOTICE)<<"Error updateErrorMetricForEdge("<<edge<<") p1 and/or p2==0"<<std::endl;157 OSG_NOTICE<<"Error updateErrorMetricForEdge("<<edge<<") p1 and/or p2==0"<<std::endl; 158 158 return; 159 159 } … … 227 227 if (edge->getErrorMetric()==FLT_MAX) 228 228 { 229 osg::notify(osg::INFO)<<"collapseMinimumErrorEdge() return false due to edge->getErrorMetric()==FLT_MAX"<<std::endl;229 OSG_INFO<<"collapseMinimumErrorEdge() return false due to edge->getErrorMetric()==FLT_MAX"<<std::endl; 230 230 return false; 231 231 } … … 234 234 return (collapseEdge(edge,pNew.get())); 235 235 } 236 osg::notify(osg::INFO)<<"collapseMinimumErrorEdge() return false due to _edgeSet.empty()"<<std::endl;236 OSG_INFO<<"collapseMinimumErrorEdge() return false due to _edgeSet.empty()"<<std::endl; 237 237 return false; 238 238 } … … 247 247 if (edge->getErrorMetric()==FLT_MAX) 248 248 { 249 osg::notify(osg::INFO)<<"divideLongestEdge() return false due to edge->getErrorMetric()==FLT_MAX"<<std::endl;249 OSG_INFO<<"divideLongestEdge() return false due to edge->getErrorMetric()==FLT_MAX"<<std::endl; 250 250 return false; 251 251 } … … 254 254 return (divideEdge(edge,pNew.get())); 255 255 } 256 osg::notify(osg::INFO)<<"divideLongestEdge() return false due to _edgeSet.empty()"<<std::endl;256 OSG_INFO<<"divideLongestEdge() return false due to _edgeSet.empty()"<<std::endl; 257 257 return false; 258 258 } … … 369 369 { 370 370 _triangles.insert(triangle); 371 // if (_triangles.size()>2) osg::notify(osg::NOTICE)<<"Warning too many triangles ("<<_triangles.size()<<") sharing edge "<<std::endl;371 // if (_triangles.size()>2) OSG_NOTICE<<"Warning too many triangles ("<<_triangles.size()<<") sharing edge "<<std::endl; 372 372 } 373 373 … … 385 385 void updateMaxNormalDeviationOnEdgeCollapse() 386 386 { 387 // osg::notify(osg::NOTICE)<<"updateMaxNormalDeviationOnEdgeCollapse()"<<std::endl;387 //OSG_NOTICE<<"updateMaxNormalDeviationOnEdgeCollapse()"<<std::endl; 388 388 _maximumDeviation = 0.0f; 389 389 for(TriangleSet::iterator itr1=_p1->_triangles.begin(); … … 520 520 Triangle* addTriangle(unsigned int p1, unsigned int p2, unsigned int p3) 521 521 { 522 // osg::notify(osg::NOTICE)<<"addTriangle("<<p1<<","<<p2<<","<<p3<<")"<<std::endl;522 //OSG_NOTICE<<"addTriangle("<<p1<<","<<p2<<","<<p3<<")"<<std::endl; 523 523 524 524 // detect if triangle is degenerate. … … 554 554 Triangle* addTriangle(Point* p1, Point* p2, Point* p3) 555 555 { 556 // osg::notify(osg::NOTICE)<<" addTriangle("<<p1<<","<<p2<<","<<p3<<")"<<std::endl;556 // OSG_NOTICE<<" addTriangle("<<p1<<","<<p2<<","<<p3<<")"<<std::endl; 557 557 558 558 // detect if triangle is degenerate. 559 559 if (p1==p2 || p2==p3 || p1==p3) 560 560 { 561 // osg::notify(osg::NOTICE)<<" **** addTriangle failed - p1==p2 || p2==p3 || p1==p3"<<std::endl;561 // OSG_NOTICE<<" **** addTriangle failed - p1==p2 || p2==p3 || p1==p3"<<std::endl; 562 562 return 0; 563 563 } … … 631 631 if (!(triangle->_p1)) 632 632 { 633 osg::notify(osg::NOTICE)<<"testTriangle("<<triangle<<") _p1==NULL"<<std::endl;633 OSG_NOTICE<<"testTriangle("<<triangle<<") _p1==NULL"<<std::endl; 634 634 ++result; 635 635 } 636 636 else if (triangle->_p1->_triangles.count(triangle)==0) 637 637 { 638 osg::notify(osg::NOTICE)<<"testTriangle("<<triangle<<") _p1->_triangles does not contain triangle"<<std::endl;638 OSG_NOTICE<<"testTriangle("<<triangle<<") _p1->_triangles does not contain triangle"<<std::endl; 639 639 ++result; 640 640 } … … 642 642 if (!(triangle->_p2)) 643 643 { 644 osg::notify(osg::NOTICE)<<"testTriangle("<<triangle<<") _p2==NULL"<<std::endl;644 OSG_NOTICE<<"testTriangle("<<triangle<<") _p2==NULL"<<std::endl; 645 645 ++result; 646 646 } 647 647 else if (triangle->_p2->_triangles.count(triangle)==0) 648 648 { 649 osg::notify(osg::NOTICE)<<"testTriangle("<<triangle<<") _p2->_triangles does not contain triangle"<<std::endl;649 OSG_NOTICE<<"testTriangle("<<triangle<<") _p2->_triangles does not contain triangle"<<std::endl; 650 650 ++result; 651 651 } … … 653 653 if (!(triangle->_p3)) 654 654 { 655 osg::notify(osg::NOTICE)<<"testTriangle("<<triangle<<") _p3==NULL"<<std::endl;655 OSG_NOTICE<<"testTriangle("<<triangle<<") _p3==NULL"<<std::endl; 656 656 ++result; 657 657 } 658 658 else if (triangle->_p3->_triangles.count(triangle)==0) 659 659 { 660 osg::notify(osg::NOTICE)<<"testTriangle("<<triangle<<") _p3->_triangles does not contain triangle"<<std::endl;660 OSG_NOTICE<<"testTriangle("<<triangle<<") _p3->_triangles does not contain triangle"<<std::endl; 661 661 ++result; 662 662 } … … 665 665 { 666 666 ++result; 667 osg::notify(osg::NOTICE)<<"testTriangle("<<triangle<<") _e1 test failed"<<std::endl;667 OSG_NOTICE<<"testTriangle("<<triangle<<") _e1 test failed"<<std::endl; 668 668 } 669 669 … … 671 671 { 672 672 ++result; 673 osg::notify(osg::NOTICE)<<"testTriangle("<<triangle<<") _e2 test failed"<<std::endl;673 OSG_NOTICE<<"testTriangle("<<triangle<<") _e2 test failed"<<std::endl; 674 674 } 675 675 676 676 if (testEdge(triangle->_e3.get())) 677 677 { 678 osg::notify(osg::NOTICE)<<"testTriangle("<<triangle<<") _e3 test failed"<<std::endl;678 OSG_NOTICE<<"testTriangle("<<triangle<<") _e3 test failed"<<std::endl; 679 679 ++result; 680 680 } … … 697 697 Edge* addEdge(Triangle* triangle, Point* p1, Point* p2) 698 698 { 699 // osg::notify(osg::NOTICE)<<" addEdge("<<p1<<","<<p2<<")"<<std::endl;699 // OSG_NOTICE<<" addEdge("<<p1<<","<<p2<<")"<<std::endl; 700 700 osg::ref_ptr<Edge> edge = new Edge; 701 701 if (dereference_check_less(p1, p2)) … … 715 715 if (itr==_edgeSet.end()) 716 716 { 717 // osg::notify(osg::NOTICE)<<" addEdge("<<edge.get()<<") edge->_p1="<<edge->_p1.get()<<" _p2="<<edge->_p2.get()<<std::endl;717 // OSG_NOTICE<<" addEdge("<<edge.get()<<") edge->_p1="<<edge->_p1.get()<<" _p2="<<edge->_p2.get()<<std::endl; 718 718 _edgeSet.insert(edge); 719 719 } 720 720 else 721 721 { 722 // osg::notify(osg::NOTICE)<<" reuseEdge("<<edge.get()<<") edge->_p1="<<edge->_p1.get()<<" _p2="<<edge->_p2.get()<<std::endl;722 // OSG_NOTICE<<" reuseEdge("<<edge.get()<<") edge->_p1="<<edge->_p1.get()<<" _p2="<<edge->_p2.get()<<std::endl; 723 723 edge = *itr; 724 724 } … … 796 796 if (edge->getMaxNormalDeviationOnEdgeCollapse()>1.0) 797 797 { 798 osg::notify(osg::NOTICE)<<"collapseEdge("<<edge<<") refused due to edge->getMaxNormalDeviationOnEdgeCollapse() = "<<edge->getMaxNormalDeviationOnEdgeCollapse()<<std::endl;798 OSG_NOTICE<<"collapseEdge("<<edge<<") refused due to edge->getMaxNormalDeviationOnEdgeCollapse() = "<<edge->getMaxNormalDeviationOnEdgeCollapse()<<std::endl; 799 799 return false; 800 800 } 801 801 else 802 802 { 803 // osg::notify(osg::NOTICE)<<"collapseEdge("<<edge<<") edge->getMaxNormalDeviationOnEdgeCollapse() = "<<edge->getMaxNormalDeviationOnEdgeCollapse()<<std::endl;803 //OSG_NOTICE<<"collapseEdge("<<edge<<") edge->getMaxNormalDeviationOnEdgeCollapse() = "<<edge->getMaxNormalDeviationOnEdgeCollapse()<<std::endl; 804 804 } 805 805 #endif … … 882 882 } 883 883 884 // osg::notify(osg::NOTICE)<<" pNew="<<pNew<<"\tedge_p1"<<edge_p1.get()<<"\tedge_p2"<<edge_p2.get()<<std::endl;884 //OSG_NOTICE<<" pNew="<<pNew<<"\tedge_p1"<<edge_p1.get()<<"\tedge_p2"<<edge_p2.get()<<std::endl; 885 885 886 886 // we copy the edge's _triangles and interate the copy of the triangle set to avoid invalidating iterators. … … 968 968 edges2UpdateErrorMetric.insert(newEdges.begin(), newEdges.end()); 969 969 970 // osg::notify(osg::NOTICE)<<"Edges to recalibarate "<<edges2UpdateErrorMetric.size()<<std::endl;970 // OSG_NOTICE<<"Edges to recalibarate "<<edges2UpdateErrorMetric.size()<<std::endl; 971 971 972 972 for(LocalEdgeList::iterator itr=edges2UpdateErrorMetric.begin(); … … 974 974 ++itr) 975 975 { 976 // osg::notify(osg::NOTICE)<<"updateErrorMetricForEdge("<<itr->get()<<")"<<std::endl;976 //OSG_NOTICE<<"updateErrorMetricForEdge("<<itr->get()<<")"<<std::endl; 977 977 updateErrorMetricForEdge(const_cast<Edge*>(itr->get())); 978 978 } … … 984 984 bool divideEdge(Edge* edge, Point* pNew) 985 985 { 986 // osg::notify(osg::NOTICE)<<"divideEdge("<<edge<<") before _edgeSet.size()="<<_edgeSet.size()<<" _triangleSet.size()="<<_triangleSet.size()<<std::endl;986 // OSG_NOTICE<<"divideEdge("<<edge<<") before _edgeSet.size()="<<_edgeSet.size()<<" _triangleSet.size()="<<_triangleSet.size()<<std::endl; 987 987 988 988 // first collect the triangles associaged with edges that need deleting … … 990 990 TriangleSet triangles = edge->_triangles; 991 991 992 // osg::notify(osg::NOTICE)<<" numTriangles on edges "<<triangles.size()<<std::endl;992 // OSG_NOTICE<<" numTriangles on edges "<<triangles.size()<<std::endl; 993 993 994 994 // unsigned int numTriangles1 = _triangleSet.size(); … … 1029 1029 { 1030 1030 case(0): // error, shouldn't get here. 1031 osg::notify(osg::NOTICE)<<"Error EdgeCollapse::divideEdge(Edge*,Point*) passed invalid edge."<<std::endl;1031 OSG_NOTICE<<"Error EdgeCollapse::divideEdge(Edge*,Point*) passed invalid edge."<<std::endl; 1032 1032 return false; 1033 1033 case(1): // p1, p2 1034 // osg::notify(osg::NOTICE)<<" // p1, p2 "<<std::endl;1035 // osg::notify(osg::NOTICE)<<" newTri1 = addTriangle(tri->_p1.get(), pNew, tri->_p3.get());"<<std::endl;1034 // OSG_NOTICE<<" // p1, p2 "<<std::endl; 1035 // OSG_NOTICE<<" newTri1 = addTriangle(tri->_p1.get(), pNew, tri->_p3.get());"<<std::endl; 1036 1036 newTri1 = addTriangle(tri->_p1.get(), pNew, tri->_p3.get()); 1037 // osg::notify(osg::NOTICE)<<" newTri2 = addTriangle(pNew, tri->_p2.get(), tri->_p3.get());"<<std::endl;1037 // OSG_NOTICE<<" newTri2 = addTriangle(pNew, tri->_p2.get(), tri->_p3.get());"<<std::endl; 1038 1038 newTri2 = addTriangle(pNew, tri->_p2.get(), tri->_p3.get()); 1039 1039 break; 1040 1040 case(2): // p2, p3 1041 // osg::notify(osg::NOTICE)<<" // p2, p3"<<std::endl;1042 // osg::notify(osg::NOTICE)<<" newTri1 = addTriangle(tri->_p1.get(), tri->_p2.get(), pNew);"<<std::endl;1041 // OSG_NOTICE<<" // p2, p3"<<std::endl; 1042 // OSG_NOTICE<<" newTri1 = addTriangle(tri->_p1.get(), tri->_p2.get(), pNew);"<<std::endl; 1043 1043 newTri1 = addTriangle(tri->_p1.get(), tri->_p2.get(), pNew); 1044 // osg::notify(osg::NOTICE)<<" newTri2 = addTriangle(tri->_p1.get(), pNew, tri->_p3.get());"<<std::endl;1044 //OSG_NOTICE<<" newTri2 = addTriangle(tri->_p1.get(), pNew, tri->_p3.get());"<<std::endl; 1045 1045 newTri2 = addTriangle(tri->_p1.get(), pNew, tri->_p3.get()); 1046 1046 break; 1047 1047 case(3): // p3, p1 1048 // osg::notify(osg::NOTICE)<<" // p3, p1"<<std::endl;1049 // osg::notify(osg::NOTICE)<<" newTri1 = addTriangle(tri->_p1.get(), tri->_p2.get(), pNew);"<<std::endl;1048 // OSG_NOTICE<<" // p3, p1"<<std::endl; 1049 // OSG_NOTICE<<" newTri1 = addTriangle(tri->_p1.get(), tri->_p2.get(), pNew);"<<std::endl; 1050 1050 newTri1 = addTriangle(tri->_p1.get(), tri->_p2.get(), pNew); 1051 // osg::notify(osg::NOTICE)<<" newTri2 = addTriangle(pNew, tri->_p2.get(), tri->_p3.get());"<<std::endl;1051 // OSG_NOTICE<<" newTri2 = addTriangle(pNew, tri->_p2.get(), tri->_p3.get());"<<std::endl; 1052 1052 newTri2 = addTriangle(pNew, tri->_p2.get(), tri->_p3.get()); 1053 1053 break; … … 1084 1084 ++itr) 1085 1085 { 1086 // osg::notify(osg::NOTICE)<<"updateErrorMetricForEdge("<<itr->get()<<")"<<std::endl;1086 //OSG_NOTICE<<"updateErrorMetricForEdge("<<itr->get()<<")"<<std::endl; 1087 1087 if (itr->valid()) updateErrorMetricForEdge(const_cast<Edge*>(itr->get())); 1088 1088 } … … 1092 1092 // unsigned int numTriangles3 = _triangleSet.size(); 1093 1093 1094 // osg::notify(osg::NOTICE)<<" numTriangles1="<<numTriangles1<<" numTriangles2="<<numTriangles2<<" numTriangles3="<<numTriangles3<<std::endl;1095 // osg::notify(osg::NOTICE)<<" numEdges1="<<numEdges1<<" numEdges2="<<numEdges2<<" numEdges3="<<numEdges3<<std::endl;1096 // osg::notify(osg::NOTICE)<<" numBoundaryEdges1="<<numBoundaryEdges1<<" numBoundaryEdges2="<<numBoundaryEdges2<<" numBoundaryEdges3="<<numBoundaryEdges3<<std::endl;1097 // osg::notify(osg::NOTICE)<<"divideEdge("<<edge<<") after _edgeSet.size()="<<_edgeSet.size()<<" _triangleSet.size()="<<_triangleSet.size()<<std::endl;1094 // OSG_NOTICE<<" numTriangles1="<<numTriangles1<<" numTriangles2="<<numTriangles2<<" numTriangles3="<<numTriangles3<<std::endl; 1095 // OSG_NOTICE<<" numEdges1="<<numEdges1<<" numEdges2="<<numEdges2<<" numEdges3="<<numEdges3<<std::endl; 1096 // OSG_NOTICE<<" numBoundaryEdges1="<<numBoundaryEdges1<<" numBoundaryEdges2="<<numBoundaryEdges2<<" numBoundaryEdges3="<<numBoundaryEdges3<<std::endl; 1097 // OSG_NOTICE<<"divideEdge("<<edge<<") after _edgeSet.size()="<<_edgeSet.size()<<" _triangleSet.size()="<<_triangleSet.size()<<std::endl; 1098 1098 1099 1099 return true; … … 1110 1110 if (!(triangle->_e1 == edge || triangle->_e2 == edge || triangle->_e3 == edge)) 1111 1111 { 1112 osg::notify(osg::NOTICE)<<"testEdge("<<edge<<"). triangle != point back to this edge"<<std::endl;1113 osg::notify(osg::NOTICE)<<" triangle->_e1=="<<triangle->_e1.get()<<std::endl;1114 osg::notify(osg::NOTICE)<<" triangle->_e2=="<<triangle->_e2.get()<<std::endl;1115 osg::notify(osg::NOTICE)<<" triangle->_e3=="<<triangle->_e3.get()<<std::endl;1112 OSG_NOTICE<<"testEdge("<<edge<<"). triangle != point back to this edge"<<std::endl; 1113 OSG_NOTICE<<" triangle->_e1=="<<triangle->_e1.get()<<std::endl; 1114 OSG_NOTICE<<" triangle->_e2=="<<triangle->_e2.get()<<std::endl; 1115 OSG_NOTICE<<" triangle->_e3=="<<triangle->_e3.get()<<std::endl; 1116 1116 ++numErrors; 1117 1117 } … … 1120 1120 if (edge->_triangles.empty()) 1121 1121 { 1122 osg::notify(osg::NOTICE)<<"testEdge("<<edge<<")._triangles is empty"<<std::endl;1122 OSG_NOTICE<<"testEdge("<<edge<<")._triangles is empty"<<std::endl; 1123 1123 ++numErrors; 1124 1124 } … … 1162 1162 if (itr==_pointSet.end()) 1163 1163 { 1164 // osg::notify(osg::NOTICE)<<" addPoint("<<point.get()<<")"<<std::endl;1164 //OSG_NOTICE<<" addPoint("<<point.get()<<")"<<std::endl; 1165 1165 _pointSet.insert(point); 1166 1166 } … … 1168 1168 { 1169 1169 point = const_cast<Point*>(itr->get()); 1170 // osg::notify(osg::NOTICE)<<" reusePoint("<<point.get()<<")"<<std::endl;1170 //OSG_NOTICE<<" reusePoint("<<point.get()<<")"<<std::endl; 1171 1171 } 1172 1172 … … 1203 1203 if (!(triangle->_p1 == point || triangle->_p2 == point || triangle->_p3 == point)) 1204 1204 { 1205 osg::notify(osg::NOTICE)<<"testPoint("<<point<<") error, triangle "<<triangle<<" does not point back to this point"<<std::endl;1206 osg::notify(osg::NOTICE)<<" triangle->_p1 "<<triangle->_p1.get()<<std::endl;1207 osg::notify(osg::NOTICE)<<" triangle->_p2 "<<triangle->_p2.get()<<std::endl;1208 osg::notify(osg::NOTICE)<<" triangle->_p3 "<<triangle->_p3.get()<<std::endl;1205 OSG_NOTICE<<"testPoint("<<point<<") error, triangle "<<triangle<<" does not point back to this point"<<std::endl; 1206 OSG_NOTICE<<" triangle->_p1 "<<triangle->_p1.get()<<std::endl; 1207 OSG_NOTICE<<" triangle->_p2 "<<triangle->_p2.get()<<std::endl; 1208 OSG_NOTICE<<" triangle->_p3 "<<triangle->_p3.get()<<std::endl; 1209 1209 ++numErrors; 1210 1210 } … … 1423 1423 { 1424 1424 // removing coord indices 1425 osg::notify(osg::INFO)<<"EdgeCollapse::setGeometry(..): Removing attribute indices"<<std::endl;1425 OSG_INFO<<"EdgeCollapse::setGeometry(..): Removing attribute indices"<<std::endl; 1426 1426 _geometry->copyToAndOptimize(*_geometry); 1427 1427 } … … 1431 1431 { 1432 1432 // removing coord indices 1433 osg::notify(osg::INFO)<<"EdgeCollapse::setGeometry(..): Duplicate shared arrays"<<std::endl;1433 OSG_INFO<<"EdgeCollapse::setGeometry(..): Duplicate shared arrays"<<std::endl; 1434 1434 _geometry->duplicateSharedArrays(); 1435 1435 } … … 1750 1750 void Simplifier::simplify(osg::Geometry& geometry, const IndexList& protectedPoints) 1751 1751 { 1752 osg::notify(osg::INFO)<<"++++++++++++++simplifier************"<<std::endl;1752 OSG_INFO<<"++++++++++++++simplifier************"<<std::endl; 1753 1753 1754 1754 EdgeCollapse ec; … … 1765 1765 ec.collapseMinimumErrorEdge()) 1766 1766 { 1767 // osg::notify(osg::INFO)<<" Collapsed edge ec._triangleSet.size()="<<ec._triangleSet.size()<<" error="<<(*ec._edgeSet.begin())->getErrorMetric()<<" vs "<<getMaximumError()<<std::endl;1768 } 1769 1770 osg::notify(osg::INFO)<<"******* AFTER EDGE COLLAPSE *********"<<ec._triangleSet.size()<<std::endl;1767 //OSG_INFO<<" Collapsed edge ec._triangleSet.size()="<<ec._triangleSet.size()<<" error="<<(*ec._edgeSet.begin())->getErrorMetric()<<" vs "<<getMaximumError()<<std::endl; 1768 } 1769 1770 OSG_INFO<<"******* AFTER EDGE COLLAPSE *********"<<ec._triangleSet.size()<<std::endl; 1771 1771 } 1772 1772 else … … 1779 1779 ec.divideLongestEdge()) 1780 1780 { 1781 // osg::notify(osg::INFO)<<" Edge divided ec._triangleSet.size()="<<ec._triangleSet.size()<<" error="<<(*ec._edgeSet.rbegin())->getErrorMetric()<<" vs "<<getMaximumError()<<std::endl;1782 } 1783 osg::notify(osg::INFO)<<"******* AFTER EDGE DIVIDE *********"<<ec._triangleSet.size()<<std::endl;1784 } 1785 1786 osg::notify(osg::INFO)<<"Number of triangle errors after edge collapse= "<<ec.testAllTriangles()<<std::endl;1787 osg::notify(osg::INFO)<<"Number of edge errors before edge collapse= "<<ec.testAllEdges()<<std::endl;1788 osg::notify(osg::INFO)<<"Number of point errors after edge collapse= "<<ec.testAllPoints()<<std::endl;1789 osg::notify(osg::INFO)<<"Number of triangles= "<<ec._triangleSet.size()<<std::endl;1790 osg::notify(osg::INFO)<<"Number of points= "<<ec._pointSet.size()<<std::endl;1791 osg::notify(osg::INFO)<<"Number of edges= "<<ec._edgeSet.size()<<std::endl;1792 osg::notify(osg::INFO)<<"Number of boundary edges= "<<ec.computeNumBoundaryEdges()<<std::endl;1781 //OSG_INFO<<" Edge divided ec._triangleSet.size()="<<ec._triangleSet.size()<<" error="<<(*ec._edgeSet.rbegin())->getErrorMetric()<<" vs "<<getMaximumError()<<std::endl; 1782 } 1783 OSG_INFO<<"******* AFTER EDGE DIVIDE *********"<<ec._triangleSet.size()<<std::endl; 1784 } 1785 1786 OSG_INFO<<"Number of triangle errors after edge collapse= "<<ec.testAllTriangles()<<std::endl; 1787 OSG_INFO<<"Number of edge errors before edge collapse= "<<ec.testAllEdges()<<std::endl; 1788 OSG_INFO<<"Number of point errors after edge collapse= "<<ec.testAllPoints()<<std::endl; 1789 OSG_INFO<<"Number of triangles= "<<ec._triangleSet.size()<<std::endl; 1790 OSG_INFO<<"Number of points= "<<ec._pointSet.size()<<std::endl; 1791 OSG_INFO<<"Number of edges= "<<ec._edgeSet.size()<<std::endl; 1792 OSG_INFO<<"Number of boundary edges= "<<ec.computeNumBoundaryEdges()<<std::endl; 1793 1793 1794 1794 if (!ec._edgeSet.empty()) 1795 1795 { 1796 osg::notify(osg::INFO)<<std::endl<<"Simplifier, in = "<<numOriginalPrimitives<<"\tout = "<<ec._triangleSet.size()<<"\terror="<<(*ec._edgeSet.begin())->getErrorMetric()<<"\tvs "<<getMaximumError()<<std::endl<<std::endl;1797 osg::notify(osg::INFO)<< " !ec._edgeSet.empty() = "<<!ec._edgeSet.empty()<<std::endl;1798 osg::notify(osg::INFO)<< " continueSimplification(,,) = "<<continueSimplification((*ec._edgeSet.begin())->getErrorMetric() , numOriginalPrimitives, ec._triangleSet.size())<<std::endl;1796 OSG_INFO<<std::endl<<"Simplifier, in = "<<numOriginalPrimitives<<"\tout = "<<ec._triangleSet.size()<<"\terror="<<(*ec._edgeSet.begin())->getErrorMetric()<<"\tvs "<<getMaximumError()<<std::endl<<std::endl; 1797 OSG_INFO<< " !ec._edgeSet.empty() = "<<!ec._edgeSet.empty()<<std::endl; 1798 OSG_INFO<< " continueSimplification(,,) = "<<continueSimplification((*ec._edgeSet.begin())->getErrorMetric() , numOriginalPrimitives, ec._triangleSet.size())<<std::endl; 1799 1799 } 1800 1800
