查看: 2190|回复: 6

求助关于飞行游戏中视野控制的思路或者指点

[复制链接]

该用户从未签到

发表于 2011-2-27 09:32:39 | 显示全部楼层 |阅读模式
我并不是干这行的 ,只是为了学习图形引擎 因此自己做了一个飞行小游戏的demo。游戏采用舱外视野(第三人称视野)先不说游戏做的如何,目前遇到一个很纠结的问题。那就是关于视野的大小问题,期望得到大家的指点。
问题:
我发现,当我使用camera的lookat来获取视野时(透视投影),有一些东西处理的和常见的飞行游戏不一样,那就是可是范围太小了。具体表现为:fov值好像只能在90°以下,要不画面变形严重,然后无论我设置多远的摄像机远近截面,都不能驱动很好的效果。当我在空中看其他的飞机时,地面的可视范围变的非常小,屏幕上方三分之二的面积都截取掉了(可以理解为边界为天地线)。后来我想到将整个场景(飞机的活动范围)进行缩放,这样貌似可以了,但是当我拉近摄像机观察飞机时效果就不好了。
我想请问大家有遇到这个问题么,是怎么处理的,告诉我下思路就好,谢谢。
或者说根据目标点和摄像机两点之间的具体动态改变场景缩放比例么,谢谢!

该用户从未签到

发表于 2011-2-28 08:35:35 | 显示全部楼层
这是您的投影矩阵没有设置好的缘故

该用户从未签到

 楼主| 发表于 2011-2-28 15:54:09 | 显示全部楼层
这是您的投影矩阵没有设置好的缘故
array 发表于 2011-2-28 08:35



   您好,感谢您的及时回复。我目前所能理解的投影设置貌似就是两个函数:一个glupre**和glulookat。第一个是设置投影矩阵的,第二个是设置摄像机方位的。
您能具体指点一下如何设置能够取得较好的效果么,我的意思是指:可视范围尽可能的大一点,但是当我用鼠标滚轮拉近视野近距离观察的时候也可以很好的表现。谢谢!

目前我将近截面设置为1,近处可以很好表现,如果为了将就远截面我设置的更大一些,近处当然就看不到了。
我目前是1,6000 可感觉还是很别扭,麻烦了!

该用户从未签到

发表于 2011-3-1 08:25:14 | 显示全部楼层
事实上这并不是一个很简单的话题,您可以把远近平面设置为1:10000,但是更高的话,就要考虑float类型的精度问题了——这种时候解决超大场景中细部观测的方法主要包括:根据实际情况每帧自动计算远近平面,DepthPartition,甚至使用FBO模拟double类型的depth buffer——OSG默认实现了第一种方法,第二种和第三种分别在例子osgdepthpartition和osgfpdepth

该用户从未签到

发表于 2011-3-1 10:30:07 | 显示全部楼层
了解下~

该用户从未签到

 楼主| 发表于 2011-3-1 13:38:07 | 显示全部楼层
额 可能你想的台复杂了
我的意思是现实的游戏,看远处的飞机会变成一个几乎不可分辨的小点,但是确实能够看的见
而我的程序辄是,看远处的飞机直接被截取掉了 根本不显示
我想问下就是通过加大远截面可以么?还有就是osg里面对远近截面之间的距离有要求么?
比如我改成1,100 000 有意义么? 谢谢!

该用户从未签到

发表于 2011-3-2 08:33:56 | 显示全部楼层
不要认为这是一个简单的问题:单纯的加大远平面当然可以,但是OpenGL中的depth buffer是单精度的,因此远近平面的比例超出有效范围(6-7位有效数字)就没有什么意义了,这与OSG无关。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

联系我们

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