查看: 2069|回复: 4

为什么没出来图形?

[复制链接]

该用户从未签到

发表于 2009-1-11 22:12:54 | 显示全部楼层 |阅读模式
代码很简单,如下:


#include <osgDB/ReadFile>
#include <osgViewer/Viewer>
#include <osg/Node>
#include <osg/MatrixTransform>
#include <osg/PositionAttitudeTransform>

void main()
{

        osgViewer::Viewer viewer;

        osg::ref_ptr<osg::Group> rootGroup = new osg::Group() ;

        osg::ref_ptr<osg::Node> cityNode = osgDB::readNodeFile("cow.osg") ;  

        osg::ref_ptr<osg:ositionAttitudeTransform> nodeXform =   new osg::PositionAttitudeTransform();

        nodeXform ->addChild(cityNode.get()) ;

        rootGroup ->addChild(nodeXform.get()) ;

        viewer.setSceneData(rootGroup.get());

        viewer.realize();

        while( !viewer.done() )
        {
           viewer.frame();
        }

}

该用户从未签到

发表于 2009-1-11 22:36:00 | 显示全部楼层
因为没有指定一个漫游器,例如TrackballManipulator,因此主摄像机的观察矩阵位于世界原点,而模型的加载位置也在世界原点,因此您看到的可能是一片黑,因为视线被模型内部挡住了。
使用漫游器来自动查找一个适当的观察位置,或者使用PAT节点设置模型的位置,都可以获得正确的显示。

该用户从未签到

发表于 2009-1-12 16:21:50 | 显示全部楼层
while( !viewer.done() )
        {
           viewer.frame();
        }

改成viewer.run();
应该就可以了,我也遇到过类似问题

该用户从未签到

发表于 2009-1-12 16:46:24 | 显示全部楼层
myfeng的方法也是可以解决问题的,不过要注意Viewer::run()会使用默认的场景漫游器、线程模型等来管理场景。

该用户从未签到

 楼主| 发表于 2009-1-13 19:59:41 | 显示全部楼层
谢谢各位!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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