d游戏中的bsp二叉空间分割技术

d游戏中的bsp二叉空间分割技术

ID:30360577

大小:85.84 KB

页数:11页

时间:2018-12-29

d游戏中的bsp二叉空间分割技术_第1页
d游戏中的bsp二叉空间分割技术_第2页
d游戏中的bsp二叉空间分割技术_第3页
d游戏中的bsp二叉空间分割技术_第4页
d游戏中的bsp二叉空间分割技术_第5页
资源描述:

《d游戏中的bsp二叉空间分割技术》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、3D游戏中的BSP二叉空间分割技术BSP(二叉空间分割)树是另一种类型的空间分割技术,其已经在游戏产业上应用了很多年(Doom是第一个使用BSP树的贸易游戏).尽管在今天BSP树已经没像过往那么受欢迎了,但现在仍在广泛地采用这项技术.当你看一下BSP在碰撞检测方面那极度干净漂亮和高速的效率,立即能让你眼前一亮.不但BSP树在多边形剪切方面表现出色,而且还能让我们有效地自由运用world-object式的碰撞检测.BSP树的遍历是使用BSP的一个基本技术.碰撞检测本质上减少了树的遍历或搜索.这种方

2、法很有用由于它能在早期排除大量的多边形,所以在最后我们仅仅是对少数面进行碰撞检测.正如我前面所说的,用找出两个物体间的分隔面的方法适合于判定两个物体是否相交.假如分隔面存在就没有发生碰撞.因此我们递回地遍历world树并判定分割面是否和包围球或包围盒相交.我们还可以通过检测每一个物体的多边形来进步精确度.进行这种检测最简单的一个方法是测试看看物体的所有部分是否都在分割面的一侧.这种运算真的很简单,我们用迪卡尔平面等式ax+by+cz+d=0往判定点位于平面的哪一侧.假如满足等式,点在平面上;假如

3、ax+by+cz+d0那么点在平面的正面;假如ax+by+cz+d0点在平面的背面.在碰撞没发生的时候有一个重要的事情需要留意,就是一个物体(或它的包围盒)必须在分割面的正面或背面.假如在平面的正面和背面都有顶点,说明物体与这个平面相交了.(以上载选自百度百科)Bsp分割算法简述PreviewBSP分割算法也是有不少文章可以鉴戒的,就我目前能把握的资料来看,泛泛而谈者大有人在,实际往作的时候却总是抓瞎.知道是什么永远不如知道怎么做,BSP分割是BSP分析的基础,固然它很简单,但是,假如连简单的都

4、不会做,又怎么能胜任复杂的工作呢?趁这段时间有空,遂埋头钻研BSP,一周之后,分割和自动Portal天生均已解决,遂做此文,希看能对初学者有所帮助,亦希看能抛砖引玉,众位高手能不吝赐教.本文先就BSP中相对简单的分割部分做一个简单的先容,自动Portal天生的资料正在整理,希看能尽快放出.BSP的基本原理试想我们生活的空间,肯定是由为数众多的天花板、墙壁和地板组成,对于每一个"板",都将空间分为"板前"和"板后"两个部分.已知人的位置,就可根据人在"板前"还是在"板后",知道人所能看到的物体的遮

5、挡顺序(e.g.假如人在板前,则板前的物体遮挡所有板后的物体).BSP者,原理很简单:它试图将所有的板(在BSP中叫做平面)组织成一棵树,每个平面均将它所在的空间分割为前后两个部分,这两个部分又分别被另外的平面分割成更小的空间hh直到最后,按照前面所说的算法,确定每一个房间(在BSP中叫做叶子)相对于眼睛的遮挡顺序.这是一个非常标准的二分法,仅按照"前"和"后"两个逻辑上的概念来切分空间家长为给孩子争取进园名额排队等候一夜(图),这使得它在以"房间"为单位组成的室内场景里是不二之选.为什么?请接

6、着看:在判定遮挡顺序的时候,BSP空间的算法极为简单:只需要从树根开始,简单判定人的位置与所有平面的前后关系:前则正子树(在平面"前"方的空间)在前,负子树(在平面"后"方的空间)在后;后则正子树在后,负子树在前.以此递回到叶子(叶子总是一个房间),就可以确定人处于哪一个房间之中、其他房间的遮挡关系如何.这个实在很简单:由于所有的平面均将其所处的空间分为前后两个部分,所以,每一个房间,均是由若干平面的"前""后"来决定的,通过人与这些平眼前后关系的判定,自然而然就可以直接定位到所需的房间之中了.

7、这就是BSP算法的特别之处.如图:空间ABC由A、B、C三个独立的房间组成,首先,分割平面1将空间分成了平面正向的A房间和平面负向的BC空间,BC空间被2紧接着分割为平面2正向的C房间和负向的B房间.留意这里平面的方向一般由墙壁面向的方向而定.假如有一个人处于C房间内,那么如何判定所有房间的遮挡顺序呢?从树根开始,由于人处于平面1的"后"面,所以,BC空间应该先于A房间(后:先负后正),然后,由于人处于分割平面2的"前"面,所以,C房间应该先于B房间(前:先正后负).这样,整个房间离人由近到远的

8、顺序就可以确定了:C-B-A.仅需要通过两次平面的前后判定(总共六次乘法、两次加法、两次大小判定),就可以确定空间的先后顺序,算法的威力可见一斑!BSP分割的目标是将空间划分为一个个叶凸体,也就是一个凸面体.一个个凸面体才有排序的可能,很难想象一个非凸面体在空间中如何排序.如图左:从箭头方向看过往,到底凹多面体A是在B的前面?还是B在凹多面体A的前面?而假如是右边的,两个凸多面体,情况就不一样了,A和B方向的前后,根据视点的位置永远是唯一的.这就是BSP的上风,只需要知道视点的位置,空间所有凸体

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。