首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络游戏 >

场景管理 最基础有关问题

2012-03-19 
场景管理 最基础问题想了解场景管理,但是看书一直很疑惑,书又是英文的最近可能要问一些比较白的问题,望大

场景管理 最基础问题
想了解场景管理,但是看书一直很疑惑,书又是英文的
最近可能要问一些比较白的问题,望大大们耐心解答

我拿BSP举例,在划分场景的时候是以object(我理解为一个mesh,比如一个teapot)来判断的
即哪些object在这个场景中
疑问:怎么判断这个object在这个空间内,难道是一个点一个点遍历?不会吧
疑问:如果这个object很大,比如一个很复杂的建筑模型,几乎占了整个空间,那岂不是没办法划分了,难道看上去连接在一起的模型,是由无数个object组合在一起构成的?
疑问:视锥裁剪是D3D9的固定管线自带的吗?不需要自己写?看龙书在讲渲染管线时提过

要是分不够可以加,3Q


[解决办法]
在场景管理的时候,一般多使用四叉树。然后使用这个四叉树和截头体culling一起使用。
我这里也只能大概说一下。
一般一个很大的地形都以节点的形式保存在四叉树里,即四叉树的节点代表了地形mesh的顶点信息,比如保存顶点索引。每个节点下面有4个子节点,每个子节点也是保存的划分后的地形的顶点mesh信息。也就是说这个四叉树的每一个节点都把该节点对应的部分又分4个部分。就像“田”子那样。

对于这里说的裁剪,和3D管线中的裁剪不一样。3D管线中说的裁剪是在相机空间中,使用投影矩阵裁剪画面中表现的物体。这里说的裁剪是指在已经通过投影变换后显示在画面上的物体中再一次进行选择,哪些要显示哪些不显示。因为画面中显示的东西可能很多,特别是很大的地形,很远的东西可以不显示或者使用LOD来减少远处地形的顶点数。

所以这里就要自己使用裁剪的技术来判断。具体的方法就是判断四叉树的节点中保存的顶点是不是在我们设置的截头体内,利用平面的点法式方程的可以判断。如果该节点的4个顶点都不在这个截头体内,那么这个节点的所有子节点都不用在进行判断,也不用在画面上显示了。这样可以提高程序的性能。

热点排行