查看: 1776|回复: 12

浏览地形是出现的一半在地下,一半在地上的情况如何避免?

[复制链接]

该用户从未签到

发表于 2011-6-17 00:37:57 | 显示全部楼层 |阅读模式
未命名.jpg
类似于这种情况,视点比较低的时候,会出现这种很影响浏览效果的情况出现,请问应该如何避免?

该用户从未签到

 楼主| 发表于 2011-6-17 01:54:37 | 显示全部楼层
会不会是近裁剪面的问题?我已经setProjectionMatrixAsPerspective(45.0, dblWidth / dblHeight, -1e6, 1e6)了,问题依旧,请教各位应该如何解决?

该用户从未签到

发表于 2011-6-17 08:34:07 | 显示全部楼层
setProjectionMatrixAsPerspective(45.0, dblWidth / dblHeight, -1e6, 1e6)
这根本是不可能的,OpenGL不支持透视投影的近平面小于等于0,也不可能达到超出float有效位数的远近平面差值,您的设置本身就有问题

此外如果没有设置DO_NOT_COMPUTE_NEAR_FAR,您的设置也根本是无效的;您可以考虑设置setNearFarRatio()来改变远近平面的比率(但是同样不可能超出float的精度范围),或者使用DepthPartition等算法

该用户从未签到

 楼主| 发表于 2011-6-17 15:12:47 | 显示全部楼层
谢谢~,晚上回去我试试~

该用户从未签到

 楼主| 发表于 2011-6-18 02:16:08 | 显示全部楼层
camera->setComputeNearFarMode(osg::CullSettings:O_NOT_COMPUTE_NEAR_FAR)后解决了这个问题,可是又带来了新问题,相交测试不能正常工作了……还不知道这个参数到底起到了什么样的作用~

该用户从未签到

发表于 2011-6-19 12:12:19 | 显示全部楼层
这都是基础不牢惹得货,别让它入地不就行了吗?
自己做碰撞检测不就行了,针对这种情况,抬高视角即可。

该用户从未签到

 楼主| 发表于 2011-6-19 12:49:04 | 显示全部楼层
回复 6# sky11811

早做判断了,这明显不是相机在地下的问题。

该用户从未签到

发表于 2011-6-19 15:43:58 | 显示全部楼层
回复  sky11811

早做判断了,这明显不是相机在地下的问题。
朽木 发表于 2011-6-19 12:49



   把相机再抬高点就好了,或者适当减小近裁剪面的值,但是不能小于0.

该用户从未签到

发表于 2011-6-19 15:50:02 | 显示全部楼层
我不知道检测算法是不是你自己做的,如果是自己做的问题好解决。
我用OpenGL做地形的时候也遇到过这个问题,就是适当减小近裁剪面的值,并适当抬高视角,也就是眼镜不能离地形太近。

该用户从未签到

 楼主| 发表于 2011-6-19 22:28:07 | 显示全部楼层
回复 9# sky11811

设置相机的最小高度是可以有效的解决这个问题,可是用户不同意啊

把近剪裁面设置的很小,也没解决问题~

起作用的就是用array说的setComputeNearFarMode(osg::Camera:O_NOT_COMPUTE_NEAR_FAR)这个方法,不过设置了以后经常相交测试会交不到东西,osg里很多深层次的东西还没接触到啊~,唉~

该用户从未签到

 楼主| 发表于 2011-6-20 00:36:43 | 显示全部楼层
解决,如array所说的,还是需要setNearFarRatio,我设置的是0.001f,以为够小了,结构osg默认值是0.0005f……继续设置小些,就没有出现那种情况了,谢谢array和sky11811~

该用户从未签到

发表于 2011-6-20 23:52:54 | 显示全部楼层
不知道兄台你的地形是怎么生成的啊,请教下~~

该用户从未签到

 楼主| 发表于 2011-6-22 09:38:04 | 显示全部楼层
回复 12# zlulu2006

用vpb生成的~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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