查看: 1903|回复: 3

osg::Volume体渲染模型写出文件时的Bug

[复制链接]

该用户从未签到

发表于 2011-4-22 10:22:52 | 显示全部楼层 |阅读模式
当把多个OSGVolume体渲染对象加到一个Group中,然后以ive文件写出后,再从ive文件读入这个Group节点的时候返回值为空。(当只有一个体渲染对象的时候不会有问题)
产生该问题的原因是OSG读取体模型渲染技术的部分有问题。
原代码如下:
  1. void VolumeTile::writeVolumeTechnique(DataOutputStream* out, osgVolume::VolumeTechnique* technique)
  2. {
  3.     if (dynamic_cast<osgVolume::RayTracedTechnique*>(technique))
  4.     {
  5.         out->writeBool(true);
  6.         out->writeInt(IVEVOLUMERAYTRACEDTECHNIQUE);
  7.     }
  8.     if (dynamic_cast<osgVolume::FixedFunctionTechnique*>(technique))
  9.     {
  10.         out->writeBool(true);
  11.         out->writeInt(IVEVOLUMEFIXEDPIPELINETECHNIQUE);
  12.     }
  13.     else
  14.     {
  15.         out->writeBool(false);
  16.     }
  17. }
复制代码
粗体部分的代码有问题。应该是
else if (dynamic_cast<osgVolume::FixedFunctionTechnique*>(technique))
体渲染我们一般采用的都是osgVolume::RayTracedTechnique技术。所以,按原来的代码来走的话会写出三个数值。而读取的时候只读两个数值。
当你只有一个体模型的时候,反正这是模型的最后两个数据,多了一个也没有关系,程序也不读。但是要是有多个模型的话,从第二个模型开始所有的数据都会乱掉的。

该用户从未签到

发表于 2011-4-25 08:55:02 | 显示全部楼层
欢迎您向osg-users提出您的问题以及修正方案,Robert会据此来判断和更改相应的代码,并将您加入到贡献者名单

该用户从未签到

发表于 2011-8-11 11:14:11 | 显示全部楼层
体渲染的效果图在哪里可以看到。另外,体渲染与体积光有什么联系否?

该用户从未签到

发表于 2011-8-12 08:35:41 | 显示全部楼层
没什么联系
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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