OSG简化几何体显示

来源:互联网 发布:剑三成男捏脸数据截图 编辑:程序博客网 时间:2024/04/28 16:50
#include <osgViewer/ViewerEventHandlers>#include <osg/Node>#include <osg/Geode>#include <osg/Group>#include <osg/PositionAttitudeTransform>#include <osgDB/ReadFile>#include <osgDB/WriteFile>#include <osgGA/StateSetManipulator>#include <osgUtil/Optimizer>#include <osgUtil/Simplifier>int main(){    osg::ref_ptr<osgViewer::Viewer> viewer = new osgViewer::Viewer() ;    viewer->addEventHandler(new osgGA::StateSetManipulator(viewer->getCamera()->getOrCreateStateSet())) ;    osg::ref_ptr<osg::Group> root = new osg::Group() ;    float sampleRatio = 0.3f ;    // 设置点的最大误差    float maxError = 4.0f ;    //创建简化对象    osgUtil::Simplifier simplifier(sampleRatio , maxError) ;    //    osg::ref_ptr<osg::Node> node1 = osgDB::readNodeFile("cow.osg") ;    // 深拷贝    osg::ref_ptr<osg::Node> node2 = (osg::Node *)(node1->clone(osg::CopyOp::DEEP_COPY_ALL)) ;    // 创建一个位置变换节点    osg::ref_ptr<osg::PositionAttitudeTransform> pat = new osg::PositionAttitudeTransform() ;    pat->setPosition(osg::Vec3(10.0f , 0.0f , 0.0f)) ;    pat->addChild(node2.get()) ;    //简化处理    pat->accept(simplifier) ;    root->addChild(node1.get()) ;    root->addChild(pat.get()) ;    //优化场景数据    osgUtil::Optimizer optimizer ;    optimizer.optimize(root.get()) ;    viewer->setSceneData(root.get()) ;    viewer->realize() ;    viewer->run() ;    return 0 ;}
0 0
原创粉丝点击