查看: 811|回复: 3

.osg文件和.earth如何在同一个osgViewer内显示

[复制链接]

该用户从未签到

发表于 2014-3-12 10:40:20 | 显示全部楼层 |阅读模式
以osg程序设计教程里的例子为例
void main()
{
    osgViewer::Viewer viewer;
        osg::ref_ptr <osg::Group> root = new osg::Group() ;

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

        osg::ref_ptr<osg::MatrixTransform> trans = new osg::MatrixTransform ;
        trans ->setMatrix(osg::Matrix::translate(0, 0, 2)) ;
        trans ->addChild(osgcool.get()) ;

        //osg::ref_ptr<osg::MatrixTransform> scale = new osg::MatrixTransform ;
        //scale ->setMatrix(osg::Matrix::scale(0.5, 0.5, 0.5)*osg::Matrix::translate(0, 0, -2)) ;
        //scale ->addChild(osgcool.get()) ;

        //osg::ref_ptr<osg::MatrixTransform> rot = new osg::MatrixTransform ;
        //rot ->setMatrix(osg::Matrix::rotate(osg:egreesToRadians(45.0), 1, 0, 0)*osg::Matrix::scale(0.5, 0.5, 0.5)*osg::Matrix::translate(4, 0, -2)) ;
        //rot ->addChild(osgcool.get()) ;

        root ->addChild(osgcool.get()) ;
        root ->addChild(trans.get()) ;
        //root ->addChild(scale.get()) ;
        //root ->addChild(rot.get()) ;

        viewer.setSceneData(root.get());
    viewer.realize();
    viewer.run();
}

为什么上面的这些操作,我加入.osg文件时都是可以实现的,但是如果加入一个。earth,readNodeFile("*.earth")时
只能看到地球,而看不到其他东西?
而且其中的移动,缩放等对于地球也没起作用?


另外我想在窗口里面只显示地球的某一部分,应该怎么实现?
7.png

该用户从未签到

 楼主| 发表于 2014-3-12 10:40:45 | 显示全部楼层
如上面的这个图的效果

该用户从未签到

发表于 2014-3-14 04:28:46 | 显示全部楼层
您觉得osgcool这样的模型文件大小和地球是成比例的么。。。

该用户从未签到

 楼主| 发表于 2014-3-20 13:35:29 | 显示全部楼层
array 发表于 2014-3-14 04:28
您觉得osgcool这样的模型文件大小和地球是成比例的么。。。

3Q.后来换了几个其他接近的,就能看见了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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