查看: 1757|回复: 3

关于浮点float类型的精度

[复制链接]

该用户从未签到

发表于 2011-9-3 13:15:22 | 显示全部楼层 |阅读模式
场景稍微有点大,坐标整数部分几千了,单位是米,用float时候精度不够。显示的时候到没有碰到大碍,但是用LineSegmentIntersector的时候,一半的几率不能得到相交的值。我把场景的数据改用double类型的Array初始化vertex的坐标,但是进入程序后很多地方抛异常,感觉osg对double类型的支持不是很好。现在只能调整场景的范围,做一些转换处理,但是这样的话很破坏直观的程序结构;不知道大家平时处理大坐标值有什么经验方法。

该用户从未签到

发表于 2011-9-5 08:55:47 | 显示全部楼层
用float时候精度不够。显示的时候到没有碰到大碍
事实上您会在显示的时候遇到更大的问题,OpenGL的depth buffer大多数情况下只能达到24bit的精度,32bit需要较好的显卡支持。顶点坐标不能使用Vec3dArray也是OGL的原因而非OSG的。请使用MatrixTransform的叠加来分担精度

该用户从未签到

 楼主| 发表于 2011-9-5 12:00:35 | 显示全部楼层
非常感谢array。

我先也想过用MatrixTransform来分担精度,但是当时我误以为所有的分担的精度的矩阵会事先计算为一个最终的矩阵进行计算(irrlicht似乎就是这样做的),这样的话精度问题仍然存在。但刚刚试过之后还真的能解决问题。看来OSG实现和irrlicht有所不同。得好好研究一下了。

该用户从未签到

发表于 2011-9-6 08:36:38 | 显示全部楼层
如果irrlicht真的是这么做的并且无法变通的话,那么它已经为自己在大规模场景应用方面判了死刑。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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