Show
Ignore:
Timestamp:
10/26/10 16:59:12 (3 years ago)
Author:
robert
Message:

Added command line options:

--tristripper
--no-tristripper
--smoother
--no-smoother

--remove-duplicate-vertices / --rdv
--optimize-vertex-cache / --ovc
--optimize-vertex-order / --ovo

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • OpenSceneGraph/trunk/examples/osganalysis/osganalysis.cpp

    r11853 r11854  
    2929#include <osgUtil/IncrementalCompileOperation> 
    3030#include <osgUtil/Simplifier> 
     31#include <osgUtil/MeshOptimizers> 
    3132 
    3233class StripStateVisitor : public osg::NodeVisitor 
     
    8889 
    8990        while (arguments.read("-s", simplificatioRatio)) {} 
     91        while (arguments.read("--tristripper")) { useTriStripVisitor=true; } 
     92        while (arguments.read("--no-tristripper")) { useTriStripVisitor=false; } 
     93        while (arguments.read("--smoother")) {  useSmoothingVisitor=true; } 
     94        while (arguments.read("--no-smoother")) {  useSmoothingVisitor=false; } 
     95 
     96        while (arguments.read("--remove-duplicate-vertices") || arguments.read("--rdv")) removeDuplicateVertices = true; 
     97        while (arguments.read("--optimize-vertex-cache") || arguments.read("--ovc")) optimizeVertexCache = true; 
     98        while (arguments.read("--optimize-vertex-order") || arguments.read("--ovo")) optimizeVertexOrder = true; 
    9099 
    91100        while (arguments.read("--build-mipmaps")) { modifyTextureSettings = true; buildImageMipmaps = true; } 
     
    111120            float maxError = 4.0f; 
    112121            osgUtil::Simplifier simplifier(simplificatioRatio, maxError); 
    113             //simplifier.setDoTriStrip(false); 
    114             //simplifier.setSmoothing(false); 
     122            simplifier.setDoTriStrip(useTriStripVisitor); 
     123            simplifier.setSmoothing(useSmoothingVisitor); 
    115124            node->accept(simplifier); 
     125        } 
     126 
     127        if (removeDuplicateVertices) 
     128        { 
     129            OSG_NOTICE<<"Running osgUtil::IndexMeshVisitor"<<std::endl; 
     130            osgUtil::IndexMeshVisitor imv; 
     131            node->accept(imv); 
     132            imv.makeMesh(); 
     133        } 
     134 
     135        if (optimizeVertexCache) 
     136        { 
     137            OSG_NOTICE<<"Running osgUtil::VertexCacheVisitor"<<std::endl; 
     138            osgUtil::VertexCacheVisitor vcv; 
     139            node->accept(vcv); 
     140            vcv.optimizeVertices(); 
     141        } 
     142 
     143        if (optimizeVertexOrder) 
     144        { 
     145            OSG_NOTICE<<"Running osgUtil::VertexAccessOrderVisitor"<<std::endl; 
     146            osgUtil::VertexAccessOrderVisitor vaov; 
     147            node->accept(vaov); 
     148            vaov.optimizeOrder(); 
    116149        } 
    117150 
     
    123156        } 
    124157 
    125  
    126158        return node; 
    127159    } 
     
    134166        useVBO = false; 
    135167        useDisplayLists = false; 
     168 
    136169        simplificatioRatio = 1.0; 
     170        useTriStripVisitor = false; 
     171        useSmoothingVisitor = false; 
     172 
     173        removeDuplicateVertices = false; 
     174        optimizeVertexCache = false; 
     175        optimizeVertexOrder = false; 
    137176 
    138177        modifyTextureSettings = false; 
     
    145184    bool useVBO; 
    146185    bool useDisplayLists; 
     186 
    147187    float simplificatioRatio; 
     188    bool useTriStripVisitor; 
     189    bool useSmoothingVisitor; 
     190 
     191    bool removeDuplicateVertices; 
     192    bool optimizeVertexCache; 
     193    bool optimizeVertexOrder; 
    148194 
    149195    bool modifyTextureSettings;