一、包围盒定义
包围体是一个简单的几何空间,里面包含着复杂形状的物体。为物体添加包围体的主要的目的是快速进行碰撞检测,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象,包围体类型包括球体(Sphere)、轴对齐包围盒(AABB)、有向包围盒(OBB)、固定方向凸包FDH(Fixed directions hulls或k-DOP)等。
二、包围盒类型
AABB包围盒(Axis-aligned bounding box):AABB是应用最早的包围盒。它被定义为包含该对象,且边平行于坐标轴的最小六面体 。故描述一个AABB,仅需六个标量。AABB构造比较简单,存储空间小,但紧密性差,尤其 对不规则几何形体,冗余空间很大,当对象旋转时,无法对其进行相应的旋转。处理对象 是刚性并且是凸的,不适合包含软体变形的复杂的虚拟环境情况。 AABB也是比较简单的一类包围盒。但对于沿斜对角方向放置的瘦长形对象,其紧密性较差。由于AABB相交测试的简单性及较好的紧密性,因此得到了广泛的应用,还可以用于软体对象的碰撞检测。
包围球(Sphere):包围球被定义为包含该对象的最小的球体。确定包围球,首先需分别计算组成对象的基本几何元素集合中所有元素的顶点的x,y,z坐标的均值以确定包围球的球心,再由球心与三个最大值坐标所确定的点间的距离确定半径r。包围球的碰撞检测主要是比较两球间半径和与球心距离的大小。
OBB方向包围盒(Oriented bounding box):OBB是较为常用的包围盒类型。它是包含该对象且相对于坐标轴方向任意的最小的长方体。OBB最大特点是它的方向的任意性,这使得它可以根据被包围对象的形状特点尽可能紧密的包围对象,但同时也使得它的相交测试变得复杂。OBB包围盒比AABB包围盒和包围球更加紧密地逼近物体,能比较显著地减少包围体的个数,从而避免了大量包围体之间的相交检测。但OBB之间的相交检测比AABB或包围球体之间的相交检测更费时。
FDH固定方向凸包(Fixed directions hulls或k-DOP):FDH(k-DOP)是一种特殊的凸包,继承了AABB简单性的特点,但其要具备良好的空间紧密度,必须使用足够多的固定方向。被定义为包含该对象且它的所有面的法向量都取自一个固定的方向(k个向量)集合的凸包。FDH比其他包围体更紧密地包围原物体,创建的层次树也就有更少的节点,求交检测时就会减少更多的冗余计算,但相互间的求交运算较为复杂。
三、包围盒图示
四、包围盒对比
特点 | AABB(Axis-Aligned Bounding Box) | OBB(Oriented Bounding Box) |
---|---|---|
对齐方式 | 与世界坐标系的 x、y、z 轴对齐 | 可与物体局部坐标系对齐,任意旋转 |
计算复杂度 | 计算简单,直接取最小值和最大值 | 计算复杂,需要主方向的计算和旋转 |
包围体积 | 相对较大,尤其是物体旋转时 | 紧密包围物体,体积较小 |
碰撞检测效率 | 高效,计算两个 AABB 相交只需比较轴向范围 | 较慢,需要计算旋转后的包围盒是否相交 |
适用场景 | 粗略碰撞检测,空间划分,简单物体的包围盒 | 精确碰撞检测,几何体近似,物理模拟 |
注:信息来源网络,如有侵权,联系作者删除,此敬!