查看: 1657|回复: 5

天空球对从属相机渲染的影响,造成只渲染出最后一个加入的从属相机?

[复制链接]

该用户从未签到

发表于 2013-7-30 16:15:51 | 显示全部楼层 |阅读模式
本帖最后由 Mooneast 于 2013-7-30 16:17 编辑

整个场景的节点结构是这样的。

主场景下面挂接一个地形节点(Group)和一个天空节点(Group),天空球节点下面是一个Camera类型的节点,设置主要参数如下:
  1. pCamera->setClearMask(GL_DEPTH_BUFFER_BIT|GL_COLOR_BUFFER_BIT);
  2. pCamera->setClearDepth(-99999.9);
  3. pCamera->setClearColor(1.0,1.0,1.0,1.0);
  4. pCamera->setRenderOrder(osg::Camera::PRE_RENDER);
  5. pCamera->setReferenceFrame(osg::Transform::ABSOLUTE_RF);
  6. pCamera->addChild(sphere);//sphere是天空球模型
复制代码
此外,以确保pCamera的投影矩阵正确,其深度渲染属性也是设置的osg:epth::Greater,但是这样造成的后果是当在主场景里加入多个slave时,会造成只有最后一个加入的slave渲染出来,另外几个slave被天空球所遮挡,而去掉天空球之后就会显示正常,感觉应该跟节点的组织结构有关系,但又看不出什么端倪,希望大神能指点迷津!

节点结构

节点结构

该用户从未签到

发表于 2013-7-31 10:36:54 | 显示全部楼层
不明白,天空节点下为什么加个camera

该用户从未签到

 楼主| 发表于 2013-8-2 09:58:37 | 显示全部楼层
fenma3422 发表于 2013-7-31 10:36
不明白,天空节点下为什么加个camera

将天空球设置为一个camera节点,这样可以设置其渲染顺序为预渲染,保证其一定会被前面的场景所遮挡,说白了就是使用camera类型节点实现预渲染。

该用户从未签到

发表于 2013-8-4 18:31:46 | 显示全部楼层
您的天空球是RTT到纹理上?还是只是让它先渲染然后再渲染主场景的内容?如果是后者,那么我不明白您这里的逻辑

该用户从未签到

 楼主| 发表于 2013-8-5 11:23:02 | 显示全部楼层
array 发表于 2013-8-4 18:31
您的天空球是RTT到纹理上?还是只是让它先渲染然后再渲染主场景的内容?如果是后者,那么我不明白您这里的逻 ...

之所以采用后者,是为了避免采用一个半径极大的球作为天空时,造成对远近裁剪面的影响。

该用户从未签到

发表于 2013-8-12 09:28:47 | 显示全部楼层
我不建议在这里继续使用Slave相机,那东西对于场景的组织完全没有好处。不过对于您所说的问题仅凭现有的信息我也无法判断什么。既然您设置Depth::GREATER那么我认为天空球的渲染应该是在主场景之后的,但是您的描述并不是这样
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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