查看: 2352|回复: 4

问题:书中简化几何体的例子

[复制链接]

该用户从未签到

发表于 2010-4-15 16:45:03 | 显示全部楼层 |阅读模式
书中简化几何体的例子,编译成功,但是没东西显示
#include<osgViewer/Viewer>
#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();
osgViewer::Viewer 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");
//深拷贝牛的模型到node2节点
osg::ref_ptr<osg::Node> node2=(osg::Node*)(node1->clone(osg::CopyOp:EEP_COPY_ALL));
osg::ref_ptr<osg:ositionAttitudeTransform> 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());
return viewer.run();
}

当我把 pat->accept(simplifier);注释之后,可以显示。
是不是简化几何体还要设置什么东西的?

该用户从未签到

发表于 2010-4-15 17:10:04 | 显示全部楼层
我不知道这是哪一本书的例子,不过这样做看起来问题不大:至少应该有一个牛的模型是显示的(即未被简化的node1);不知道您的OSG版本是多少

该用户从未签到

发表于 2010-4-15 22:08:38 | 显示全部楼层
//切换网格模型,方便比较模型
viewer.addEventHandler(new osgGA::StateSetManipulator(viewer.getCamera()->getOrCreateStateSet()));


这么大字,,按下w看下就清楚了~~~

该用户从未签到

 楼主| 发表于 2010-4-16 14:54:23 | 显示全部楼层
顶,问题应该是我电脑运行这个程序所需时间较长,我还没有等到程序运行出来就关了,今天点运行后,跑去上个厕所,回来就看到运行出来了。 我性子太急了。谢谢各位,麻烦了!

该用户从未签到

发表于 2010-4-17 19:07:55 | 显示全部楼层
您需要登录后才可以回帖 登录 | 注册

本版积分规则

OSG中国官方论坛-有您OSG在中国才更好

网站简介:osgChina是国内首个三维相关技术开源社区,旨在为国内更多的技术开发人员提供最前沿的技术资讯,为更多的三维从业者提供一个学习、交流的技术平台。

联系我们

  • 工作时间:09:00--18:00
  • 反馈邮箱:1315785073@qq.com
快速回复 返回顶部 返回列表