一种动态碰撞检测方法技术

技术编号:17099292 阅读:28 留言:0更新日期:2018-01-21 11:08
本发明专利技术提供了一种动态碰撞检测方法。本发明专利技术将凸多面体剖分为系列四面体后,将两个复杂的凸体间的碰撞检测问题转换为多个四面体间的并行碰撞检测。本发明专利技术提供的基于凸体剖分的并行碰撞检测算法较好提高碰撞检测速度,并行程序的执行时间随着处理节点的增加而呈线性下降趋势。

A dynamic collision detection method

The invention provides a dynamic collision detection method. After dividing the convex polyhedron into series tetrahedron, the collision detection problem between two complex convex bodies is converted to parallel collision detection among multiple tetrahedra. The parallel collision detection algorithm based on convex subdivision can improve the speed of collision detection, and the execution time of parallel programs decreases linearly with the increase of processing nodes.

【技术实现步骤摘要】
一种动态碰撞检测方法
本专利技术涉及一种碰撞检测方法。
技术介绍
碰撞问题多年来一直受到较多的关注,碰撞检测方法在计算几何、计算机动画、仿真机器人和虚拟现实等领域中都有较好的应用前景。近些年来,国内外学者在碰撞检测领域中做出了相当多有意义的工作并提出了一些高效的检测方法。这些方法从时间域的角度,可分为静态碰撞检测算法、离散碰撞检测方法和连续碰撞检测方法三类;从空间域的角度,可以分为基于实体空间的碰撞检测方法和基于图像空间的碰撞检测方法。对于基于实体空间的方法,根据所使用实体表示模型的不同可以分两类:第一类是基于BSP(BinarySpacePartitioning)树、k-d树和八叉树(Octree)等的空间剖分法(SpaceDecomposition)[NA90][MPT90];第二类是基于层次包围体树的方法。层次包围体树法根据包围盒类型的不同又可以分为包围球层次树、轴向包围盒层次树、方向包围盒层次树、k-dop(DiscreteOrientationPolytope)层次树、凸壳层次树以及混合层次树等等。传统的多物体间的碰撞检测算法一般时间复杂度为O(n2),不能满足实时性的要求,而且大多是集中式串行处理方法,不利于碰撞检测快速实现。八叉树和其它几何模型在解决碰撞检测的框架之间的几何干涉问题时,不会大幅度提高算法效率。采用层次包围盒技术来加速多面体场景的碰撞检测,但包围盒方法作为一个整体的方法,检测精度低,效率提高并不明显。另外提出了一种空间分割技术的方法,影响该算法效率的一个重要因素是分区的多少,而分区的数目又较难把握。
技术实现思路
本专利技术的目的是一种性能良好的并行动态碰撞检测方法,能适用于凸体碰撞检测,并在保证高精度前提下,有效地满足碰撞检测的实时要求。为了达到上述目的,本专利技术的技术方案是提供了一种动态碰撞检测方法,判断多面体A与多面体B是否发生碰撞,其特征在于,包括以下步骤:将多面体A分解为N个简单多面体A1,A2,……,AN,将多面体B分解为M个简单多面体B1,B2,……,BM,再利用Cluster结构或SMP结构的并行机同时判断简单多面体Ai,i=1,2,……,N,与简单多面体Bk,k=1,2,……,M,是否发生碰撞,若有,则多面体A与多面体B有碰撞发生,否则没有,其中,将多面体A分解为N个简单多面体A1,A2,……,AN与将多面体B分解为M个简单多面体B1,B2,……,BM的方法相同,包括以下步骤:步骤1、获取待处理的多面体的顶点坐标值以及构成多面体的各个平面的顶点序列;步骤2、根据平面方程生成函数得到构成多面体的所有平面的平面方程,各个平面的法向量指向多面体外部;步骤3、从顶点序列中选择凸顶点,组成凸顶点序列;步骤4、从凸顶点序列中选取一个未经过处理的凸顶点,将其邻接顶点投影到平面上,利用Delaunay三角剖分算法,得到当前凸顶点的凸空间;步骤5、将当前凸顶点和它的凸空间从多面体中剖分为独立的四面体;步骤6、是否遍阅凸顶点序列中的每个凸顶点,若是,则完成剖分,否则返回步骤4。优选地,定义表达多面体及简单多面体的数据结构M,数据结构M中定义如下字段:指向第一个平面节点的一个平面节点指针;指向下一个平面节点的一个平面节点指针;平面节点,每个平面节点有X、Y、Z、D四个数据域,代表构成多面体的一个平面,每个平面的法向量{X,Y,Z}指向多面体的外部;一个凸顶点节点指针,指向第一个凸顶点节点;指向构成平面的边节点的一个边节点指针;指向构成平面的下一条边的边节点指针;边节点,每个边节点有Ph、Pt、Fl、Fr四个数据域Ph、Pt、Fl、Fr,Ph、Pt分别代表组成边的头、尾顶点,Fl、Fr分别代表边的左边平面和右边平面;顶点节点,每个顶点节点有X、Y、Z三个数据域,代表当前顶点的坐标值;指向下一个顶点的指针;指向下一个顶点的邻边节点的指针;指向边节点的指针;指向边节点对应边的头顶点的下一条邻边节点的指针。在计算几何学中,剖分是一类基本问题。其中平面多边形的剖分问题已经得到很深入的研究,已有较多将多边形剖分为三角形的算法。但由于空间立体图形的复杂性,目前国内外文献上还很少见到凸体的剖分算法。而在本专利技术当中,就是要在完成任意多凸体的剖分算法基础上,将之应用于虚拟环境中的碰撞检测中,引入并行技术来提高碰撞检测的实时性。本专利技术提供的基于凸体剖分的并行碰撞检测算法较好提高碰撞检测速度,并行程序的执行时间随着处理节点的增加而呈线性下降趋势。附图说明图1(a)至图1(c)为凸顶点的空间Delaunay三角剖分过程示意图;图2为本专利技术中所使用的基本数据结构图。具体实施方式下面结合具体实施例,进一步阐述本专利技术。应理解,这些实施例仅用于说明本专利技术而不用于限制本专利技术的范围。此外应理解,在阅读了本专利技术讲授的内容之后,本领域技术人员可以对本专利技术作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。本专利技术提供的一种动态碰撞检测方法基于以下定义:定义1、对于多面体的任意一个顶点P,所有以P为顶点的面称为P的邻面,所有以P为端点的棱称为P的邻边,所有邻边的另一个端点称为P的邻接顶点;如图1(a)所示,Pc的邻接点为P1、P2、P3、P4。定义2、设P是多面体上的某一顶点,Pi,Pj……Pk是P的邻接顶点,若任意三个邻接顶点所构成的三角形平面不属于多面体,且P与任三个邻接点构成的四面体内的点(除四个顶点外)均不属于原多面体,则称P为凹顶点,记为Pn,反之称之为凸顶点,记为Pc。所有的顶点都是凸顶点的多面体是凸多面体。定义3、对于任意一个凸顶点Pc的邻接顶点序列Pi,Pj……Pk所围成的闭环L,将L投影到二维平面,得到一个对应顶点为Pi’,Pj’,……,Pk’的平面多边形L’,将此平面多边形L’进行Delaunay三角剖分。再根据对应的顶点将空间环L进行剖分(如图1(a)及图1(b)所示多面体,Pc为一凸体的凸顶点,P1、P2、P3、P4为Pc的邻接点,P1、P2、P3、P4构成环L,其在平面的投影为L’,L’进行三角剖分后,再根据对应顶点将空间环L三角剖分,得到两个三角形,P1P2P3、P1P3P4),称之为Pc的空间Delaunay三角剖分。定义4、对于多面体的任意一个凸顶点Pc,可得到Pc对应的空间Delaunay三角剖分,根据剖分的三角形,得到一系列的空间三角形平面,这些三角形平面与Pc的邻接面构成的立体空间称为凸顶点Pc的凸空间(如图1(c)所示,Pc的凸空间由PcP1P3P4和PcP1P2P3两个四面体组成),记为V(Pc);定理:对于任意的凸多面体V,经过若干次的凸空间剖分,最终可分解为一系列的四面体集合.证:对于凸多面体V的来说,它的任意顶点都是凸顶点,可任选一个顶点Pc作它的空间Delaunay划分,得到Pc的凸空间V(Pc),由定义1知V(Pc)中的点都属于将该凸多面体,则原凸多面体可分解为几个四面体和一个新的多面体V’。由于V’中的任意三个顶点构成的三角形平面F与V中存在一一对应的平面F,即F∈V且F∈V’,因此V’中的所有顶点的任意三个邻接点构成的三角形平面都属于V’,所以V’中所有顶点都是凸顶点(V’也是凸多面体),则V’也可以再次剖分为几个四面体和一个新的多面体V”,依此类本文档来自技高网...
一种动态碰撞检测方法

【技术保护点】
一种动态碰撞检测方法,判断多面体A与多面体B是否发生碰撞,其特征在于,包括以下步骤:将多面体A分解为N个简单多面体A1,A2,……,AN,将多面体B分解为M个简单多面体B1,B2,……,BM,再利用Cluster结构或SMP结构的并行机同时判断简单多面体Ai,i=1,2,……,N,与简单多面体Bk,k=1,2,……,M,是否发生碰撞,若有,则多面体A与多面体B有碰撞发生,否则没有,其中,将多面体A分解为N个简单多面体A1,A2,……,AN与将多面体B分解为M个简单多面体B1,B2,……,BM的方法相同,包括以下步骤:步骤1、获取待处理的多面体的顶点坐标值以及构成多面体的各个平面的顶点序列;步骤2、根据平面方程生成函数得到构成多面体的所有平面的平面方程,各个平面的法向量指向多面体外部;步骤3、从顶点序列中选择凸顶点,组成凸顶点序列;步骤4、从凸顶点序列中选取一个未经过处理的凸顶点,将其邻接顶点投影到平面上,利用Delaunay三角剖分算法,得到当前凸顶点的凸空间;步骤5、将当前凸顶点和它的凸空间从多面体中剖分为独立的四面体;步骤6、是否遍阅凸顶点序列中的每个凸顶点,若是,则完成剖分,否则返回步骤4。...

【技术特征摘要】
1.一种动态碰撞检测方法,判断多面体A与多面体B是否发生碰撞,其特征在于,包括以下步骤:将多面体A分解为N个简单多面体A1,A2,……,AN,将多面体B分解为M个简单多面体B1,B2,……,BM,再利用Cluster结构或SMP结构的并行机同时判断简单多面体Ai,i=1,2,……,N,与简单多面体Bk,k=1,2,……,M,是否发生碰撞,若有,则多面体A与多面体B有碰撞发生,否则没有,其中,将多面体A分解为N个简单多面体A1,A2,……,AN与将多面体B分解为M个简单多面体B1,B2,……,BM的方法相同,包括以下步骤:步骤1、获取待处理的多面体的顶点坐标值以及构成多面体的各个平面的顶点序列;步骤2、根据平面方程生成函数得到构成多面体的所有平面的平面方程,各个平面的法向量指向多面体外部;步骤3、从顶点序列中选择凸顶点,组成凸顶点序列;步骤4、从凸顶点序列中选取一个未经过处理的凸顶点,将其邻接顶点投影到平面上,利用Delaunay三角剖分算法,得到当前凸顶点的凸空间;步骤5、将当前凸顶点...

【专利技术属性】
技术研发人员:熊玉梅
申请(专利权)人:上海电机学院
类型:发明
国别省市:上海,31

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

1