我的github

BSP是Binary Space Partitioning(二叉空间分割)的缩写,是另一种类型的空间分割技术,在游戏工业上应用了,Doom是第一个使用BSP树的商业游戏。

参考:https://baike.baidu.com/item/bsp/4572765?fr=aladdin

这种方法很有用因为它能在早期排除大量的多边形,所以在最后我们仅仅是对少数面进行碰撞检测。

>>【游戏课】技术片段之——BSP树在游戏中的应用/3D游戏中的场景管理—(八叉树和BSP树)/在《毁灭战士》中应用二叉空间分割(BSP)是何等天才之举? | bsp在游戏中的应用/阅读《游戏引擎架构》的思考1:BSP分割在游戏引擎中的应用:link link2

BSP(二叉空间分割)树是另一种类型的空间分割技术,其已经在游戏产业上应用了很多年(Doom是第一一个使用BSP树的贸易游戏).尽管在今天BSP树已经没像过往那么受欢迎了,但现在仍在广泛地采用这项技术.

当你看一下BSP在碰撞检测方面那极度干净漂亮和高速的效率,立即能让你眼前一亮.不但BSP树在多边形剪切方面表现出色,而且还能让我们有效地自由 运用world-object式的碰撞检测. BSP树的遍历是使用BSP的一个基本技术.碰撞检测本质上减少了树的遍历或搜索.这种方法很有用由于它能在早期排除大量的多边形,所以在最后我们仅仅是对少数面进行碰撞检测.正如我前面所说的,用找出两个物体间的分隔面的方法适合于判定两个物体是否相交.假如分隔面存在. 就没有发生碰撞.因此我们递回地遍历world树并判定分割面是否和包围球或包围盒相交.我们还可以通过检测每一个物体的多边形来进步精确度.进行这种检测最简单的一个方法是测试看看物体的所有部分是否都在分割面的一侧.这种运算真的很简单,我们用迪卡尔平面等式ax+by+cz+d=0往判定点位于平面的哪一 侧.假如满足等式,点在平面上;假ax+by+cz+d 0那么点在平面的正面;假如 ax+by+cz+d 0点在平面的背面.

在碰撞没发生的时候有一个重要的事情需要留意,就是一个物体(或它的包围盒)必须在分割面的正面或背面.假如在平面的正面和背面都有顶点,说明物体与这个平面相交了. (以上载选自百度百科)

Bsp分割算法简述

Preview BSP分割算法也是有不少文章可以鉴戒的,就我目前能把握的资料来看,泛泛而谈者大有人在,实际往作的时候却总是抓瞎.知道是什么永远不如知道怎么做,BSP分割是BSP分析的基础,固然它很简单,但是,假如连简单的都不会做,又怎么能胜任复杂的工作呢?

趁这段时间有空,遂埋头钻研BSP,一周之后,分割和自动Portal天生均已解决,遂做此文,希看能对初学者有所帮助,亦希看能抛砖引玉,众位高手能不吝赐教.

本文先就BSP中相对简单的分割部分做一个简单的先容,自动Portal天生的资料正在整理,希看能尽快放出.

BSP的基本原理

试想我们生活的空间,肯定是由为数众多的天花板、墙壁和地板组成,对于每一个”板”,都将空间分为”板前”和’板后”两个部分.己知人的位置,就可根据人在”板前”还是在”板后”,知道人所能看到的物体的遮挡顺序(e. g.假如人在板前, 则板前的物体遮挡所有板后的物体).

参考:《Binary Space Partitioning Trees and Polygon Removal in Real Time 3D Rendering》(3D场景的BSP分割算法)-Samuel Ranta-Eskola:http://www.doczj.com/doc/f314793445.html

第一章:简介

二叉空间分割(BSP)树在1969年由Shumacher首次提出,当时并未想到能成为开发娱乐产品的算法,但从90年代初BSP树就已经被用于游戏行业来改善性能,并使利用地图中更多细节成为可能。第一个使用该技术的游戏是Doom,由游戏行业中的两位传奇人物JohnCarmack和John Romero创立。从那时起几乎所有的FPS游戏都使用了该技术。

posted on 2023-04-27 16:08  XiaoNiuFeiTian  阅读(580)  评论(0编辑  收藏  举报