一种基于AABB与OBB自适应的虚拟装配中实时碰撞检测方法转让专利

申请号 : CN201610936567.9

文献号 : CN106503347B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 朱晓林杨轩黄敏纯

申请人 : 福州大学

摘要 :

本发明涉及一种基于AABB与OBB自适应的复合包围盒算法。首先,设定方向轴夹角阈值eps;其次,由顶点坐标和索引数据计算包围盒的中心位置m;计算协方差矩阵C;求协方差矩阵C的特征向量并单位化,作为零件的三个方向轴;分别计算零件三个方向轴与标准坐标轴XYZ的夹角θ1、θ2、θ3;最后,将θ1、θ2、θ3分别与给定阈值eps进行比较,若都小于等于给定阈值eps,则采用AABB包围盒,计算AABB包围盒的长、宽、高,根据中心m构建AABB包围盒;若其中有一个夹角大于给定阈值eps,则根据中心位置m、绕标准坐标轴的旋转角度、、构建OBB包围盒。本发明能够根据三维零件模型的实际特征,自适应地选择采用AABB方法或OBB方法构造零件包围盒,灵活性好,具有一定的智能化水平。

权利要求 :

1.一种基于AABB与OBB自适应的虚拟装配中实时碰撞检测方法,其特征在于:包括如下步骤,S1:设定方向轴夹角阈值eps;

S2:由顶点坐标和索引数据计算包围盒的中心位置m;

S3:计算协方差矩阵C;

S4:求协方差矩阵C的特征向量并单位化,作为零件的三个方向轴;

S5:分别计算零件三个方向轴与标准坐标轴XYZ的夹角θ1、θ2、θ3;

S6:将θ1、θ2、θ3分别与给定阈值eps进行比较,若都小于等于给定阈值eps,则采用AABB包围盒,计算AABB包围盒的长、宽、高,根据中心m构建AABB包围盒;若其中有一个夹角大于给定阈值eps,则采用OBB包围盒,将顶点坐标分别往零件三个方向轴上投影,计算OBB包围盒的长、宽、高,由夹角θ1、θ2、θ3计算绕X轴的旋转角度θ、绕Y轴的旋转角度 绕Z轴的旋转角度ψ,最后,根据中心位置m、绕标准坐标轴的旋转角度θ、 ψ构建OBB包围盒;所述包围盒用于虚拟装配中实时碰撞检测;

所述步骤S2的中心位置m计算公式如下,

其中,pi、qi和ri分别为包围盒包围的被装配的零件模型的n个三角形中第i个三角形的顶点矢量;

所述步骤S3的协方差矩阵C计算公式如下,

其中,j、k代表顶点的分量; 均为三维向量。

说明书 :

一种基于AABB与OBB自适应的虚拟装配中实时碰撞检测方法

技术领域

[0001] 本发明属于三维虚拟环境中的实时碰撞检测领域,具体涉及一种基于AABB与OBB自适应的虚拟装配中实时碰撞检测方法。

背景技术

[0002] 碰撞检测是计算机图形仿真中的关键问题之一,在游戏、虚拟仿真等领域是一个非常重要的组成部分。在具体应用过程中,实现碰撞检测的一种有效方法是采用包围盒的层次结构来近似描述物体模型。包围盒具有简单性和精密性两个重要的属性,而且这两个属性具有排斥性,在具体实现的时候,按照具体情况的要求不同,对其做相应的折中处理。其中,轴向包围盒(AABB)、包围球等构造简单,而方向包围盒(OBB)紧密性好,经常会被结合使用。
[0003] 现有的基于OBB的复合包围盒算法中,一般对某一固定对象采用AABB包围盒,而对另一固定对象采用OBB包围盒;或者固定在层次包围盒树顶层使用AABB包围盒或包围球,而在其他层使用OBB包围盒以实现碰撞检测功能。
[0004] 西北农林科技大学的秦铨等,针对叶片形态提出了一种基于AABB-OBB混合包围盒的碰撞检测方法。首先通过AABB盒相交测试剔除部分未相交对象;然后根据叶片形态特点,对可能相交对象构造OBB盒二叉树。
[0005] 青岛大学范晓磊的硕士论文“混合包围盒碰撞检测算法研究”中提出一种基于OBB与AABB的混合包围盒碰撞检测算法,对于虚拟环境中的刚体对象采用OBB建立包围盒,而对于会发生变形的对象则AABB用建立包围盒。
[0006] 大连海事大学的宁涛等提出一种利用混合包围盒优化的碰撞检测方法。该方法根据碰撞相交刚体不同组件的复杂度进行层次设置,在层次包围盒树顶层使用包围球,在其他层使用OBB包围盒以实现碰撞检测功能。
[0007] 中华人民共和国发明专利(申请号:201210318465.2)公开了“一种基于有向包围盒和轴向包围盒的脚楦匹配方法”。该发明是通过脚和鞋子匹配或者脚和表示鞋子内部空间的鞋楦匹配,首先求出三维模型脚和鞋楦的OBB,根据OBB的轴向将脚和鞋楦与世界坐标系的三个轴分别对齐;再计算出脚和鞋楦模型的轴向包围盒AABB,将脚模型AABB底面四边形的中心平移到鞋楦模型AABB底面四边形的中心,匹配之后,如果鞋子偏大或者偏小,可对鞋子进行适当地缩放。
[0008] 中华人民共和国发明专利(申请号:201110322775.7)公开了一种面向虚拟装配的基于AABB-OBB混合包围盒的碰撞检测方法。在预处理阶段对变形物体的模型进行剖分,逐层建立OBB层次二叉树,建立整体模型的AABB包围盒。实时阶段,在二叉树的顶点维护AABB包围盒,对模型整体进行粗略的碰撞检测;在其余节点维护OBB包围盒,利用OBB进行精确的碰撞检测;最后进行面片级的碰撞检测。该方法包括:载入三维模型;对模型进行剖分,建立层次二叉树;粗略碰撞检测阶段用AABB进行碰撞检测;精细碰撞阶段采用OBB碰撞检测;最后采用面片级的碰撞检测。
[0009] 上述技术存在如下缺点:
[0010] 现有的基于OBB的复合包围盒算法中,一般对某一固定对象采用AABB包围盒,而对另一固定对象采用OBB包围盒;或者固定在层次包围盒树顶层使用AABB包围盒或包围球,而在其他层使用OBB包围盒,无法根据对象特征自适应地选用包围盒,其优化效果有限。
[0011] 论文“基于AABB-OBB盒的玉米叶片碰撞检测”提出的基于AABB-OBB混合包围盒的碰撞检测方法,主要适用于玉米叶片等数字植物虚拟仿真场景,不适用于刚体。
[0012] 硕士论文“混合包围盒碰撞检测算法研究”中提出的一种基于OBB与AABB的混合包围盒碰撞检测算法,主要适用于一个是刚体,另一个是变形对象的虚拟环境,如:在虚拟手术中,手术刀为刚体,人体组织为变形对象。
[0013] 论文“用混合包围盒优化碰撞检测方法”提出的一种利用混合包围盒优化的碰撞检测方法,只是对层次包围盒树的顶层使用包围球,而在其他层仍使用OBB包围盒,计算量减少有限。
[0014] 发明专利(申请号:201210318465.2)所提“一种基于有向包围盒和轴向包围盒的脚楦匹配方法”,同样只适用于脚和鞋楦匹配的特殊场合。
[0015] 发明专利(申请号:201110322775.7)所提“一种面向虚拟装配的基于AABB-OBB混合包围盒的碰撞检测方法”,同样只是对层次包围盒树的顶点使用AABB包围盒,而在其他节点仍使用OBB包围盒,优化效果有限。
[0016] 本发明针对大部分机械零件是轴对称结构,采用AABB包围盒即可满足碰撞检测精度要求;而小部分机械零件是不规则的,需采用OBB包围盒才能满足碰撞检测精度要求。因此提出一种基于AABB与OBB自适应的虚拟装配中实时碰撞检测方法,能够根据三维零件模型的实际情况,自适应地选择采用AABB方法或OBB方法构造零件包围盒;充分结合AABB包围盒计算简单、OBB包围盒精度高的优点,以进一步提高虚拟装配过程中实时碰撞检测的性能。同时,该方法也可应用于层次包围盒树中递归地构建各层次包围盒。

发明内容

[0017] 本发明的目的在于提供一种基于AABB与OBB自适应的虚拟装配中实时碰撞检测方法,该方法能够根据三维零件模型的实际情况,自适应地选择采用AABB方法或OBB方法构造零件包围盒;充分结合AABB包围盒计算简单、OBB包围盒精度高的优点,以进一步提高虚拟装配过程中实时碰撞检测的性能;该方法也可应用于层次包围盒树中递归地构建各层次包围盒。
[0018] 为实现上述目的,本发明的技术方案是:一种基于AABB与OBB自适应的虚拟装配中实时碰撞检测方法,包括如下步骤,
[0019] S1:设定方向轴夹角阈值eps;
[0020] S2:由顶点坐标和索引数据计算包围盒的中心位置m;
[0021] S3:计算协方差矩阵C;
[0022] S4:求协方差矩阵C的特征向量并单位化,作为零件的三个方向轴;
[0023] S5:分别计算零件三个方向轴与标准坐标轴XYZ的夹角θ1、θ2、θ3;
[0024] S6:将θ1、θ2、θ3分别与给定阈值eps进行比较,若都小于等于给定阈值eps,则采用AABB包围盒,计算AABB包围盒的长、宽、高,根据中心m构建AABB包围盒;若其中有一个夹角大于给定阈值eps,则采用OBB包围盒,将顶点坐标分别往零件三个方向轴上投影,计算OBB包围盒的长、宽、高,由夹角θ1、θ2、θ3计算绕X轴的旋转角度θ、绕Y轴的旋转角度 绕Z轴的旋转角度ψ,最后,根据中心位置m、绕标准坐标轴的旋转角度θ、 ψ构建OBB包围盒。
[0025] 在本发明一实施例中,所述步骤S2的中心位置m计算公式如下,
[0026]
[0027] 其中,pi、qi和ri分别为包围盒包围的n个三角形中第i个三角形的顶点矢量。
[0028] 在本发明一实施例中,所述步骤S3的协方差矩阵C计算公式如下,
[0029]
[0030] 其中,j、k代表顶点的分量; 均为三维向量。
[0031] 相较于现有技术,本发明具有以下有益效果:
[0032] 1、本发明能够根据三维零件模型的实际特征,自适应地选择采用AABB方法或OBB方法构造零件包围盒,灵活性好,具有一定的智能化水平;
[0033] 2、本发明可应用于层次包围盒树中递归地构建各层次包围盒,除了顶层能得到优化,其他层次也能得到优化,性能优化较全面。

附图说明

[0034] 图1为本发明基于AABB与OBB自适应的复合包围盒算法流程图。

具体实施方式

[0035] 下面结合附图,对本发明的技术方案进行具体说明。
[0036] 如图1所示,本发明的一种基于AABB与OBB自适应的虚拟装配中实时碰撞检测方法,包括如下步骤,
[0037] S1:设定方向轴夹角阈值eps;
[0038] S2:由顶点坐标和索引数据计算包围盒的中心位置m;
[0039] S3:计算协方差矩阵C;
[0040] S4:求协方差矩阵C的特征向量并单位化,作为零件的三个方向轴;
[0041] S5:分别计算零件三个方向轴与标准坐标轴XYZ的夹角θ1、θ2、θ3;
[0042] S6:将θ1、θ2、θ3分别与给定阈值eps进行比较,若都小于等于给定阈值eps,则采用AABB包围盒,计算AABB包围盒的长、宽、高,根据中心m构建AABB包围盒;若其中有一个夹角大于给定阈值eps,则采用OBB包围盒,将顶点坐标分别往零件三个方向轴上投影,计算OBB包围盒的长、宽、高,由夹角θ1、θ2、θ3计算绕X轴的旋转角度θ、绕Y轴的旋转角度 绕Z轴的旋转角度ψ,最后,根据中心位置m、绕标准坐标轴的旋转角度θ、 ψ构建OBB包围盒。
[0043] 在本发明一实施例中,所述步骤S2的中心位置m计算公式如下,
[0044]
[0045] 其中,pi、qi和ri分别为包围盒包围的n个三角形中第i个三角形的顶点矢量。
[0046] 在本发明一实施例中,所述步骤S3的协方差矩阵C计算公式如下,
[0047]
[0048] 其中,j、k代表顶点的分量; 均为三维向量。
[0049] 以下为本发明的具体实施原理。
[0050] 本发明包括一种基于AABB与OBB自适应的虚拟装配中实时碰撞检测方法,能够根据三维零件模型的实际情况,自适应地选择采用AABB方法或OBB方法构造零件包围盒;充分结合AABB包围盒计算简单、OBB包围盒精度高的优点,以进一步提高虚拟装配过程中实时碰撞检测的性能。该方法也可应用于层次包围盒树中递归地构建各层次包围盒。
[0051] 1、AABB包围盒
[0052] 轴对齐包围盒(AABB)是应用最为广泛的包围盒之一。在3D空间中,AABB是一个6面盒状长方体,且其面方向性划分按如下方式进行:面法线皆平行于给定的坐标轴。AABB的最大特点是能够实现快速的相交测试,即仅执行相应坐标值之间的比较。
[0053] AABB最常用的一种表达方式是采用各坐标轴上的最小值和最大值,如下所示:
[0054]
[0055] 2、OBB的定义及计算
[0056] 一个给定物体的OBB为包含该对象且相对于坐标轴方向任意的最小的正六面体,一般利用一次矩(均值)和二次矩(协方差矩阵)统计量来计算其位置和方向。设第i个三角形的顶点矢量为pi、qi和ri,包围盒包围的三角形个数为n,则均值(中心位置)m和协方差矩阵C计算如下:
[0057]
[0058]
[0059] 其中,j、k代表顶点的(x,y,z)分量; 均为三维向量。
[0060] 利用数值的方法解出协方差矩阵的特征向量并单位化,由于C是一个实对称矩阵,所以矩阵C的特征向量相互垂直,可以作为包围盒的三个方向轴,把将要包围的几何体的顶点向各个方向轴上投影,找出各方向轴的投影区间,各投影区间的长度即为OBB包围盒相应的尺寸。
[0061] 3、基于AABB与OBB自适应复合包围盒算法
[0062] 如图1所示,基于AABB与OBB自适应复合包围盒算法的具体实现步骤如下:
[0063] 1)设定方向轴夹角域值eps;
[0064] 2)由顶点坐标和索引数据计算包围盒的中心位置m;
[0065] 3)计算协方差矩阵C;
[0066] 4)求协方差矩阵C的特征向量并单位化,作为零件的三个方向轴;
[0067] 5)分别计算零件三个方向轴与标准坐标轴的夹角θ1、θ2、θ3;
[0068] 6)将θ1、θ2、θ3分别与给定域值eps进行比较,若都小于给定域值eps,则采用AABB包围盒,计算AABB包围盒的长、宽、高,根据中心m构建AABB包围盒;若有一个夹角大于给定域值eps,则采用OBB包围盒,将顶点坐标分别往零件三个方向轴上投影,计算OBB包围盒的长、宽、高,由坐标轴夹角θ1、θ2、θ3计算绕标准坐标轴X轴的旋转角度θ、绕Y轴的旋转角度 绕Z轴的旋转角度ψ,最后,根据中心m、绕标准轴的旋转角度θ、 ψ构建OBB包围盒。
[0069] 以上是本发明的较佳实施例,凡依本发明技术方案所作的改变,所产生的功能作用未超出本发明技术方案的范围时,均属于本发明的保护范围。