查看: 3216|回复: 4

使用天空盒子后无法显示地形

[复制链接]

该用户从未签到

发表于 2008-8-26 10:40:38 | 显示全部楼层 |阅读模式
我想在自己做的场景中加一个天空盒子,就试了下使用OSG自带的那个skydome.osg,结果发现加了之后我的场景就不见了,只剩下那个天空盖子。写个了简单的程序测试一下,发现的确有这个问题,望各位大虾帮帮忙啊~~(lz.osg和skydome.osg都在OSG安装目录的data目录下有)
  1. #include "stdafx.h"

  2. #include <osgDB/ReadFile>
  3. #include <osg/ref_ptr>
  4. #include <osgUtil/Optimizer>
  5. #include <osgViewer/Viewer>
  6. #include <osgGA/DriveManipulator>


  7. int _tmain(int argc, _TCHAR* argv[])
  8. {
  9.         osg::ref_ptr<osg::Group> rootnode = new osg::Group;

  10.         // load the terrain  
  11.         osg::ref_ptr<osg::Node> loadedModel = osgDB::readNodeFile("lz.osg");

  12.         // optimize the scene graph, remove rendundent nodes and state etc.
  13.         osgUtil::Optimizer optimizer;
  14.         optimizer.optimize(loadedModel.get());
  15.         rootnode->addChild( loadedModel.get() );
  16.         // load the sky dome
  17.         osg::ref_ptr<osg::Node> sky = osgDB::readNodeFile("skydome.osg");

  18.         if (sky.get())
  19.                 rootnode->addChild(sky.get());

  20.         osgViewer::Viewer viewer;
  21.         // add a viewport to the viewer and attach the scene graph.
  22.         viewer.setSceneData(rootnode.get());
  23. //        viewer.setCameraManipulator(new osgGA::DriveManipulator);
  24.         viewer.run();

  25.         return 0;
  26. }
复制代码
以上代码在OSG2.4+VC2005+SP1补丁+Platform SDK 2003下编译通过并可运行。

[ 本帖最后由 Sailent 于 2008-8-26 10:42 编辑 ]

该用户从未签到

发表于 2008-8-26 10:51:04 | 显示全部楼层
个人觉得有两个可能性:
1、天空盒的位置和地面的位置设置得不好,导致重合,或者前者把后者挡住了;
2、因为没有设置漫游器,所以没办法浏览到地面;

该用户从未签到

发表于 2008-8-26 10:55:36 | 显示全部楼层
天空盒的位置应该根据模型的位置来计算,可以通过包围盒来确定天空盒的位置~~~~

该用户从未签到

 楼主| 发表于 2008-8-26 12:13:48 | 显示全部楼层
viewer.run()会自动设置为TrackballManipulator漫游器,仔细找了一下,发现lz.osg(地形)被缩成了很小的一块,怎样才能把它变成正常大小并把天空(skydome.osg)盖在上面呢?

该用户从未签到

发表于 2008-8-26 13:43:28 | 显示全部楼层
原帖由 Sailent 于 2008-8-26 12:13 发表
viewer.run()会自动设置为TrackballManipulator漫游器,仔细找了一下,发现lz.osg(地形)被缩成了很小的一块,怎样才能把它变成正常大小并把天空(skydome.osg)盖在上面呢?


因为lz.osg和skydome.osg的实际尺寸之间有较大差距,可以给地面加一个PositionAttitudeTransform节点,放缩一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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