项目杂识-包围盒

本文转载自百度百科包围盒

包围盒

概念

  包围盒是一种求解离散点集最优包围空间的算法,基本思想是用体积稍大且特性简单的几何体(称为包围盒)来近似地代替复杂的几何对象。
  常见的包围盒算法有AABB包围盒、包围球、方向包围盒OBB以及固定方向凸包FDH。碰撞检测问题在虚拟现实、计算机辅助设计与制造、游戏及机器人等领域有着广泛的应用,甚至成为关键技术。而包围盒算法是进行碰撞干涉初步检测的重要方法之一。

属性

  碰撞检测技术中所用的包围盒有两个属性:简单性和紧密性。简单性是指包围盒间进行相交测试时需要的计算量,这不但要求几何形状简单容易计算,而且要求相交测试算法简单快速;紧密性要求包围盒尽可能的贴近被包围的对象,这一属性直接关系到需要进行相交测试的包围盒的数目,紧密性越好,参与相交测试的包围盒数目就越少。

分类

  最常见的包围盒算法有AABB包围盒(Axis-aligned bounding box),包围球(Sphere), 方向包围盒OBB(Oriented bounding box)以及固定方向凸包FDH(Fixed directions hulls或k-DOP)。
  **AABB是应用最早的包围盒。它被定义为包含该对象,且边平行于坐标轴的最小六面体。**故描述一个AABB,仅需六个标量。AABB构造比较简单,存储空间小,但紧密性差,尤其对不规则几何形体,冗余空间很大,当对象旋转时,无法对其进行相应的旋转。处理对象是刚性并且是凸的,不适合包含软体变形的复杂的虚拟环境情况。
  AABB盒,一个3D的AABB就是一个简单的六面体,每一边都平行于一个坐标平面,矩形边界框不一定都是立方体,它的长、宽、高可以彼此不同。
在这里插入图片描述
  对象的包围球被定义为包含该对象的最小的球体。确定包围球,首先需分别计算组成对象的基本几何元素集合中所有元素的顶点的x,y,z坐标的均值以确定包围球的球心,再由球心与三个最大值坐标所确定的点间的距离确定半径r。包围球的碰撞检测主要是比较两球间半径和与球心距离的大小。
  OBB是较为常用的包围盒类型。它是包含该对象且相对于坐标轴方向任意的最小的长方体。OBB最大特点是它的方向的任意性,这使得它可以根据被包围对象的形状特点尽可能紧密的包围对象,但同时也使得它的相交测试变得复杂。OBB包围盒比AABB包围盒和包围球更加紧密地逼近物体,能比较显著地减少包围体的个数,从而避免了大量包围体之间的相交检测。但OBB之间的相交检测比AABB或包围球体之间的相交检测更费时。
  FDH(k-DOP)是一种特殊的凸包,继承了AABB简单性的特点,但其要具备良好的空间紧密度,必须使用足够多的固定方向。被定义为包含该对象且它的所有面的法向量都取自一个固定的方向(k个向量)集合的凸包。FDH比其他包围体更紧密地包围原物体,创建的层次树也就有更少的节点,求交检测时就会减少更多的冗余计算,但相互间的求交运算较为复杂。

优缺点

  AABB也是比较简单的一类包围盒。但对于沿斜对角方向放置的瘦长形对象,其紧密性较差。由于AABB相交测试的简单性及较好的紧密性,因此得到了广泛的应用,还可以用于软体对象的碰撞检测。
  包围球是比较简单的包围盒,而且当对象发生旋转运动时,包围球不需做任何更新,当几何对象进行频繁的旋转运动时,使用包围球可能会得到很好的结果;当对象变形时,需要重新计算其包围球。但它的紧密性是比较差的,因此较少使用。
  OBB的简单性要比上面两种包围盒差,但它的紧密性是比较好的,可以大大减少参与相交测试的包围盒的数目,因此总体性能要优于AABB和包围球。当几何对象发生旋转运动后,只要对OBB进行同样的旋转即可。因此,对于刚体间的碰撞检测,OBB不失为一种较好的选择,但迄今为止,还没有一种有效的方法能够较好地解决对象变形后OBB树的更新问题,而重新计算每个结点的OBB的代价又太大,所以OBB不适用于包含软体对象的复杂环境中。
  FDH相对于上面三种包围盒其紧密性是最好的,同时其相交测试算法比OBB要简单的多。可以用于软体对象的碰撞检测。

应用

  在计算机图形学与计算几何领域,一组物体的包围盒就是将物体组合完全包容起来的一个封闭空间。将复杂物体封装在简单的包围盒中,用简单的包围盒形状来近似代替复杂几何体的形状,就可以提高几何运算的效率。并且通常简单的物体比较容易检查相互之间的重叠。
  在光线跟踪中,包围盒用于光线相交检验,在许多渲染算法中,它又用于视体的检验。如果光线或者视体与包围体没有交叉,那么就不会与包围盒内的物体相交。通过这样的相交检验,就可以生成需要显示的物体列表。这里的显示表示需要渲染或者栅格化。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值