一种基于网格与包围盒的碰撞检测方法技术

技术编号:28125766 阅读:23 留言:0更新日期:2021-04-19 11:39
本发明专利技术属于虚拟现实和工业机器人领域,公开了一种基于网格与包围盒的碰撞检测方法,包括读取三维模型中的三角形顶点坐标和三角形面片法向量信息;在预处理阶段,对三维模型进行网格划分,在每个网格内构造OBB包围盒,用“分离轴”法构造以OBB包围盒为根节点,分离出的OBB包围盒为子节点的层次OBB包围盒二叉树,并以该OBB包围盒根节点为基础构建外接球包围盒;最后进行相交检测,依次对每个网格的外接球包围盒、内部的层次OBB包围盒二叉树、三角形面片进行相交测试,判断是否发生碰撞。本发明专利技术通过网格与层次OBB包围盒二叉树结合的方法,提高了虚拟仿真中机器人与周围环境间的检测速度和精确性。速度和精确性。速度和精确性。

【技术实现步骤摘要】
一种基于网格与包围盒的碰撞检测方法


[0001]本专利技术属于虚拟现实和工业机器人领域,具体涉及一种基于网格与包围盒的碰撞检测方法。

技术介绍

[0002]碰撞检测影响虚拟世界中的沉浸感和交互性,是虚拟现实中核心研究问题之一。为了防止工业机器人在实际作业中发生碰撞,对工人和设备造成损害,因此需预先在虚拟环境中对机器人运动轨迹进行预先验证,以方便改正轨迹和排除有问题的轨迹点,从而方便改正和调整轨迹点或设备的布局等。传统的包围盒方法在工业机器人应用环境中碰撞检测效率不高,呈现出碰撞检测实时性和精确性巨大的矛盾。由于工业机器人在虚拟仿真时一直处于动态变化的,需要对工业机器人轨迹上大量点进行碰撞检测,因此对实时性要求较高,而传统的包围盒算法,在模型过大时,会造成碰撞检测时间复杂度过高,检测效率低下;同时因为精确性不高,可能出现机器人与工件之间穿透现象,造成真实感下降。机器人轨迹规划需要对多条轨迹线的大量的点位进行碰撞检测,高效的检测将节省大量时间,因此为了提高检测效率,需要提出一种适用于复杂模型的高效检测方法。

技术实现思路

[0003]本专利技术的目的,是要提供一种基于网格与包围盒的碰撞检测方法,通过采用网格划分、外接球包围盒及OBB包围盒混合的方法提升了碰撞检测的精确性。
[0004]本专利技术为实现上述目的,所采用的技术方案如下:
[0005]一种基于网格与包围盒的碰撞检测方法,包括以下步骤:
[0006]S1、读取三维模型中的三角形面片顶点坐标和法向量信息;
[0007]S2、模型处理阶段,对三维模型进行网格划分,根据读取的三角形面片顶点坐标和法向量信息,在每个网格内先构造OBB包围盒,再用“分离轴”法构造以该OBB包围盒为根节点,分离出的OBB包围盒为子节点的层次OBB包围盒二叉树,依次类推直到层次OBB包围盒二叉树不能再分为止,然后以在每个网格内先构造的OBB包围盒为基础构建外接球包围盒;
[0008]S3、碰撞检测阶段,遍历检测每个网格,通过进行网格相交测试,定位可能碰撞的网格区域,在该网格区域内,依次对每个网格的外接球包围盒、内部的层次OBB包围盒二叉树、三角形面片进行相交测试,判断是否发生碰撞。
[0009]作为限定,步骤S1中,读取三维模型的三角形面片顶点坐标和法向量信息时,依次读取三角形面片的法向量、三角形面片的顶点坐标,对读取的三角形面片进行索引标号,并在最后通过以红黑树为底层的关联式Map容器数据结构去除冗余点减少存储的消耗。
[0010]作为第二种限定,步骤S2中,具体包括以下步骤:
[0011]S21、对三维模型进行等尺寸网格划分,根据读取的三角形面片顶点坐标和法向量信息,在每个等尺寸的网格内先构造OBB包围盒,用“分离轴”法构造以该OBB包围盒为根节点,分离出的OBB包围盒为子节点的层次OBB包围盒二叉树,直到层次OBB包围盒二叉树不能
再分为止;
[0012]S22、以在每个等尺寸的网格内先构造的OBB包围盒为基础,以其中心坐标作为外接球中心坐标,并以该OBB包围盒中心到该OBB包围盒顶点的最远距离作为外接球的半径构建每个网格最外层的外接球包围盒。
[0013]作为第三种限定,步骤S21中,对三维模型进行等尺寸网格划分是采用二分回溯法,即下一次划分网格的边长是上一次网格边长的二分之一,若边长过大使网格未包含三角形面片,则改变网格边长为上次网格边长和此次网格边长的和的均值,继续划分网格。
[0014]作为第四种限定,步骤S21中,在每个等尺寸的网格内构造OBB包围盒时,设第i个三角形面片的三个顶点为(p
i
,q
i
,r
i
),则所有三角形面片顶点的均值μ和协方差矩阵C
jk
的计算公式为:
[0015][0016][0017]其中,p

i
=p
i

μ,q

i
=q
i

μ,r

i
=r
i

μ,n是三角形面片的数量;得到协方差矩阵C
jk
的三个特征向量后,将其单位化即为OBB包围盒的三个坐标轴方向,根据三角形面片在这三个坐标轴方向上的投影,计算OBB包围盒的三个边长,即构造出OBB包围盒;
[0018]然后用“分离轴”法构造以该OBB包围盒为根节点,分离出的OBB包围盒为子节点的层次OBB包围盒二叉树,其中分离轴选择该OBB包围盒根节点的最长轴,分离点选择分离轴的中点,分离面即为通过分离点垂直于分离轴的面,分离面将此OBB包围盒根节点剖分为两个OBB包围盒;若该方式不能剖分此OBB包围盒根节点,则选择次长轴实现剖分,若仍是不能剖分,则选择最短轴,分离出的两个OBB包围盒即为OBB包围盒根节点的两个OBB包围盒子节点,再用这两个OBB包围盒子节点继续用“分离轴”法继续分离,通过此递归过程,直到层次OBB包围盒二叉树子节点中的OBB包围盒中的三角形面片不能再分为止,即构造为层次OBB包围盒二叉树。
[0019]作为第五种限定,步骤S3中,具体包括以下步骤:
[0020]S31、遍历检测每个网格,通过进行网格相交测试,定位可能碰撞的网格区域;在网格相交测试中,计算两网格的中心点距离L与网格的边长rmin、网格的顶点到网格中心的距离rmax的关系,两网格的中心坐标为C1(x1,y1,z1),C2(x2,y2,z2);
[0021]a、若L>2rmax,则两网格必不相交,不必进行下一步的相交测试;
[0022]b、若L<2rmin,则两网格必定相交,通过步骤S32进行外接球包围盒的相交测试;
[0023]c、若2rmin≤L≤2rmax,则两网格可能相交也可能不相交,通过步骤S32进行外接球包围盒的相交测试;
[0024]其中,
[0025][0026]S32、外接球包围盒的相交测试:
[0027]设两个外接球包围盒的半径分别为R1、R2,若R1+R2>L1,则两外接球包围盒必不
相交,否则通过步骤S33进行层次OBB包围盒二叉树相交测试;
[0028]S33、层次OBB包围盒二叉树相交测试,判断OBB包围盒是否相交;
[0029]计算两个OBB包围盒A、B的三个坐标轴方向以及两个OBB包围盒的三个坐标轴方向两两叉乘得到的十五条分离轴上投影的情况,如果在其中一条分离轴上的投影满足下式,则两OBB包围盒分离,只有当两个OBB包围盒在所有分离轴上的投影均不满足下式,则判定两OBB包围盒相交,通过步骤S34进行两三角形面片间的相交测试;
[0030][0031][0032]其中,T为从OBB包围盒A中心指向OBB包围盒B中心的向量,L为待检测的分离轴,r
A
为待检测的OBB包围盒A在待检测的分离轴上的投影区间半径,r
B...

【技术保护点】

【技术特征摘要】
1.一种基于网格与包围盒的碰撞检测方法,其特征在于,包括以下步骤:S1、读取三维模型中的三角形面片顶点坐标和法向量信息;S2、模型处理阶段,对三维模型进行网格划分,根据读取的三角形面片顶点坐标和法向量信息,在每个网格内先构造OBB包围盒,再用“分离轴”法构造以该OBB包围盒为根节点,分离出的OBB包围盒为子节点的层次OBB包围盒二叉树,依次类推直到层次OBB包围盒二叉树不能再分为止,然后以在每个网格内先构造的OBB包围盒为基础构建外接球包围盒;S3、碰撞检测阶段,遍历检测每个网格,通过进行网格相交测试,定位可能碰撞的网格区域,在该网格区域内,依次对每个网格的外接球包围盒、内部的层次OBB包围盒二叉树、三角形面片进行相交测试,判断是否发生碰撞。2.根据权利要求1所述的一种基于网格与包围盒的碰撞检测方法,其特征在于,步骤S1中,读取三维模型的三角形面片顶点坐标和法向量信息时,依次读取三角形面片的法向量、三角形面片的顶点坐标,对读取的三角形面片进行索引标号,并在最后通过以红黑树为底层的关联式Map容器数据结构去除冗余点减少存储的消耗。3.根据权利要求1所述的一种基于网格与包围盒的碰撞检测方法,其特征在于,步骤S2中,具体包括以下步骤:S21、对三维模型进行等尺寸网格划分,根据读取的三角形面片顶点坐标和法向量信息,在每个等尺寸的网格内先构造OBB包围盒,用“分离轴”法构造以该OBB包围盒为根节点,分离出的OBB包围盒为子节点的层次OBB包围盒二叉树,直到层次OBB包围盒二叉树不能再分为止;S22、以在每个等尺寸的网格内先构造的OBB包围盒为基础,以其中心坐标作为外接球中心坐标,并以该OBB包围盒中心到该OBB包围盒顶点的最远距离作为外接球的半径构建每个网格最外层的外接球包围盒。4.根据权利要求3所述的一种基于网格与包围盒的碰撞检测方法,其特征在于,步骤S21中,对三维模型进行等尺寸网格划分是采用二分回溯法,即下一次划分网格的边长是上一次网格边长的二分之一,若边长过大使网格未包含三角形面片,则改变网格边长为上次网格边长和此次网格边长的和的均值,继续划分网格。5.根据权利要求3所述的一种基于网格与包围盒的碰撞检测方法,其特征在于,步骤S21中,在每个等尺寸的网格内构造OBB包围盒时,设第i个三角形面片的三个顶点为(p
i
,q
i
,r
i
,),则所有三角形面片顶点的均值μ和协方差矩阵C
jk
的计算公式为:的计算公式为:其中,p

i
=p
i

μ,q

i
=q
i

μ,r

i
=r
i

μ,n是三角形面片的数量;得到协方差矩阵C
jk
的三个特征向量后,将其单位化即为OBB包围盒的三个坐标轴方向,根据三角形面片在这三个坐标轴方向上的投影,计算OBB包围盒的三个边长,即构造出OBB包围盒;然后用“分离轴”法构造以该OBB包围盒为根节点,分离出的OBB包围盒为子节点的层次
OBB包围盒二叉树,其中分离轴选择该OBB包围盒根节点的最长轴,分离点选择分离轴的中点,分离面即为通过分离点垂直于分离轴的面,分离面将此OBB包围盒根节点剖分为两个OBB包围盒;若该方式不能剖分此OBB包围盒根节点,则选择次长轴实现剖分,若仍是不能剖分,则选择最短轴,分离出的两个OBB包围盒即为OBB包围盒根节点的两个OBB包围盒子节点,再用这两个OBB包围盒子节点继续用“分离轴”法继续分离,通过此递归过程,直到层次OBB包围盒二叉树子节点中的OBB包围盒中的三角形面片不能再分为止,即构造为层次OBB包围盒二叉树。6.根据权利1所述的一种基于网格与包围盒的碰撞检测方法,其特征在于,步骤S3中,具体包括以下步骤...

【专利技术属性】
技术研发人员:范业鹏张凌峰迟玉森赵滨陈娜
申请(专利权)人:滕州华数智能制造研究院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利