Changeset 11204
- Timestamp:
- 03/11/10 19:15:20 (3 years ago)
- Location:
- OpenSceneGraph/trunk
- Files:
-
- 2 added
- 3 modified
-
include/osgUtil/MeshOptimizers (added)
-
include/osgUtil/Optimizer (modified) (1 diff)
-
src/osgUtil/CMakeLists.txt (modified) (2 diffs)
-
src/osgUtil/MeshOptimizers.cpp (added)
-
src/osgUtil/Optimizer.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
OpenSceneGraph/trunk/include/osgUtil/Optimizer
r9886 r11204 86 86 STATIC_OBJECT_DETECTION = (1 << 16), 87 87 FLATTEN_STATIC_TRANSFORMS_DUPLICATING_SHARED_SUBGRAPHS = (1 << 17), 88 INDEX_MESH = (1 << 18), 89 VERTEX_POSTTRANSFORM = (1 << 19), 90 VERTEX_PRETRANSFORM = (1 << 20), 88 91 DEFAULT_OPTIMIZATIONS = FLATTEN_STATIC_TRANSFORMS | 89 92 REMOVE_REDUNDANT_NODES | -
OpenSceneGraph/trunk/src/osgUtil/CMakeLists.txt
r10894 r11204 25 25 ${HEADER_PATH}/IncrementalCompileOperation 26 26 ${HEADER_PATH}/LineSegmentIntersector 27 ${HEADER_PATH}/MeshOptimizers 27 28 ${HEADER_PATH}/OperationArrayFunctor 28 29 ${HEADER_PATH}/Optimizer … … 68 69 IncrementalCompileOperation.cpp 69 70 LineSegmentIntersector.cpp 71 MeshOptimizers.cpp 70 72 Optimizer.cpp 71 73 PlaneIntersector.cpp -
OpenSceneGraph/trunk/src/osgUtil/Optimizer.cpp
r11131 r11204 40 40 #include <osgUtil/Tessellator> 41 41 #include <osgUtil/Statistics> 42 #include <osgUtil/MeshOptimizers> 42 43 43 44 #include <typeinfo> … … 55 56 } 56 57 57 static osg::ApplicationUsageProxy Optimizer_e0(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_OPTIMIZER \"<type> [<type>]\"","OFF | DEFAULT | FLATTEN_STATIC_TRANSFORMS | FLATTEN_STATIC_TRANSFORMS_DUPLICATING_SHARED_SUBGRAPHS | REMOVE_REDUNDANT_NODES | COMBINE_ADJACENT_LODS | SHARE_DUPLICATE_STATE | MERGE_GEOMETRY | MERGE_GEODES | SPATIALIZE_GROUPS | COPY_SHARED_NODES | TRISTRIP_GEOMETRY | OPTIMIZE_TEXTURE_SETTINGS | REMOVE_LOADED_PROXY_NODES | TESSELLATE_GEOMETRY | CHECK_GEOMETRY | FLATTEN_BILLBOARDS | TEXTURE_ATLAS_BUILDER | STATIC_OBJECT_DETECTION ");58 static osg::ApplicationUsageProxy Optimizer_e0(osg::ApplicationUsage::ENVIRONMENTAL_VARIABLE,"OSG_OPTIMIZER \"<type> [<type>]\"","OFF | DEFAULT | FLATTEN_STATIC_TRANSFORMS | FLATTEN_STATIC_TRANSFORMS_DUPLICATING_SHARED_SUBGRAPHS | REMOVE_REDUNDANT_NODES | COMBINE_ADJACENT_LODS | SHARE_DUPLICATE_STATE | MERGE_GEOMETRY | MERGE_GEODES | SPATIALIZE_GROUPS | COPY_SHARED_NODES | TRISTRIP_GEOMETRY | OPTIMIZE_TEXTURE_SETTINGS | REMOVE_LOADED_PROXY_NODES | TESSELLATE_GEOMETRY | CHECK_GEOMETRY | FLATTEN_BILLBOARDS | TEXTURE_ATLAS_BUILDER | STATIC_OBJECT_DETECTION | INDEX_MESH | VERTEX_POSTTRANSFORM | VERTEX_PRETRANSFORM"); 58 59 59 60 void Optimizer::optimize(osg::Node* node) … … 126 127 else if(str.find("STATIC_OBJECT_DETECTION")!=std::string::npos) options |= STATIC_OBJECT_DETECTION; 127 128 129 if(str.find("~INDEX_MESH")!=std::string::npos) options ^= INDEX_MESH; 130 else if(str.find("INDEX_MESH")!=std::string::npos) options |= INDEX_MESH; 131 132 if(str.find("~VERTEX_POSTTRANSFORM")!=std::string::npos) options ^= VERTEX_POSTTRANSFORM; 133 else if(str.find("VERTEX_POSTTRANSFORM")!=std::string::npos) options |= VERTEX_POSTTRANSFORM; 134 135 if(str.find("~VERTEX_PRETRANSFORM")!=std::string::npos) options ^= VERTEX_PRETRANSFORM; 136 else if(str.find("VERTEX_PRETRANSFORM")!=std::string::npos) options |= VERTEX_PRETRANSFORM; 137 128 138 } 129 139 else … … 346 356 node->accept(sv); 347 357 sv.divide(); 358 } 359 360 if (options & INDEX_MESH) 361 { 362 OSG_NOTIFY(osg::INFO)<<"Optimizer::optimize() doing INDEX_MESH"<<std::endl; 363 IndexMeshVisitor imv(this); 364 node->accept(imv); 365 imv.makeMesh(); 366 } 367 368 if (options & VERTEX_POSTTRANSFORM) 369 { 370 OSG_NOTIFY(osg::INFO)<<"Optimizer::optimize() doing VERTEX_POSTTRANSFORM"<<std::endl; 371 VertexCacheVisitor vcv; 372 node->accept(vcv); 373 vcv.optimizeVertices(); 374 } 375 376 if (options & VERTEX_PRETRANSFORM) 377 { 378 OSG_NOTIFY(osg::INFO)<<"Optimizer::optimize() doing VERTEX_PRETRANSFORM"<<std::endl; 379 VertexAccessOrderVisitor vaov; 380 node->accept(vaov); 381 vaov.optimizeOrder(); 348 382 } 349 383
