CN107845138A - 任意多面体剖分方法和装置 - Google Patents
任意多面体剖分方法和装置 Download PDFInfo
- Publication number
- CN107845138A CN107845138A CN201711166495.5A CN201711166495A CN107845138A CN 107845138 A CN107845138 A CN 107845138A CN 201711166495 A CN201711166495 A CN 201711166495A CN 107845138 A CN107845138 A CN 107845138A
- Authority
- CN
- China
- Prior art keywords
- polyhedron
- subdivision
- summit
- face
- tetrahedron
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T7/00—Image analysis
- G06T7/60—Analysis of geometric attributes
- G06T7/62—Analysis of geometric attributes of area, perimeter, diameter or volume
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T17/00—Three dimensional [3D] modelling, e.g. data description of 3D objects
- G06T17/10—Constructive solid geometry [CSG] using solid primitives, e.g. cylinders, cubes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T2210/00—Indexing scheme for image generation or computer graphics
- G06T2210/21—Collision detection, intersection
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Geometry (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computer Graphics (AREA)
- Software Systems (AREA)
- Image Generation (AREA)
Abstract
一种任意多面体剖分方法,包括:A1,判断所述多面体的类型,若是简单多面体,记为V(F,O),则执行步骤A2,若为凸多面体,则转向步骤A3,若为非凸多面体,则转向步骤A4;A2,将简单多面体V(F,O)剖分为系列四面体,然后转向步骤A5;A3,将凸多面体剖分,然后转向步骤A5;A4,将非凸多面体剖分,然后转向步骤A5;A5,判断所述多面体是否已剖分为系列四面体,如没有,转向步骤A1。
Description
技术领域
本发明属于计算机图形技术领域,特别涉及可以碰撞检测的任意多面体剖分方法和装置。
背景技术
碰撞问题作为计算几何、计算机动画、仿真机器人和虚拟现实等领域中的一个经典问题,多年来一直受到较多的关注。特别是虚拟环境的复杂性和实时性对碰撞检测提出了更高的要求。
由于空间任意物体可以由任意多面体模型来表示,相关领域的研究者们对多面体的交集等问题产生了兴趣,之后又意识到解决碰撞问题自身比求交集问题更有意义。近年来,研究人员在碰撞检测领域中做了相当多有意义的工作。提出一些较为成熟的算法。从总体上将这些算法分为两大类:几何分解法和分层包围盒法。
几何分解法是将整个虚拟空间划分为相等体积的小的单元格,只对占居了同一单元格或相邻单元格的几何对象进行相交计算。比较典型的例子有:八叉树、k-d树、BSP树等。这类算法的特点为:算法复杂、精度高。
分层包围盒的核心思想是用体积略大而几何特性简单的包围盒来近似地描述复杂的几何对象,从而通过判断包围盒是否重叠来粗略估计两检测对象是否碰撞,此外可以通过构造树状分层结构一步步逼近几何模型,提高检测精度。分层包围盒由于其算法简单、效率相对高,也是一种广泛应用的碰撞检测算法,但其检测精度较低。
现有的动态碰撞检测方法自身还存在一些问题,传统的多物体间的碰撞检测算法一般时间复杂度为O(n2),不能满足实时性的要求,而且大多是集中式串行处理方法,不利于碰撞检测快速实现。基于空间分割技术的几何分解方法,影响该算法效率的一个重要因素是分区的多少,而分区的数目又较难把握。八叉树和其它几何模型在解决碰撞检测的框架之间的几何干涉问题时,不会大幅度提高算法效率。采用分层包围盒技术可以用来加速多面体场景的碰撞检测,但前面已经提到,包围盒方法作为一个整体的方法,由于检测精度低,效率提高并不明显。
另一方面,在计算几何学中,剖分是一类基本问题。其中平面多边形的剖分问题已经得到很深入的研究,已有较多将多边形剖分为三角形的算法,研究者们对剖分简单多边形为凸多边形也有较多讨论。凸多面体剖分也有介绍,但也许是由于空间立体图形的复杂性,目前国内外文献上还很少见到有关空间任意多面体的剖分方法(仅有一些凸体剖分讨论和研究),无法满足空间任意物体建模。
例如,申请号为CN201610234983.4专利文件,公开了“一种任意形状凸多面体骨料的颗粒簇离散元模型构建方法,包括以下步骤:对任意形状的凸多面体骨料的边界模型进行拓扑信息检索,建立模型的拓扑信息库所述拓扑信息库包括顶点信息库、边信息库和面信息库;并分别对面信息库、边信息库和顶点信息库进行检索,遍历模型的所有三角形面、所有边和所有的顶点,依次在其上放置球体,直至无法在其上成功放置球体为止”。
又例如,申请号为CN201210469449.3的专利文件,公开了“一种多层多面球剖分式高压装置,其包括多面球剖分块、壳体和紧固件,多面球剖分块分为多层,相邻两层剖分块的剖分线相互错开;最内层多面球剖分块组合构成的腔体为球形或多面体;多面球剖分块多层组合后由半球形壳体对接并固定;半球形壳体通过紧固件连接在一起。多层多面球剖分式高压装置各层受力均匀,不但能显著增加腔体容积,而且还能显著提高腔体的压力”。
本申请涉及的文献包括:
[1]杨杰,基于基于凹凸顶点判定的简单多边形的三角剖分[J],小型微型计算机系统,2 000,21(9):974-975
[2]马小虎,潘志庚,石教英,基于凹凸顶点判定的简单多边形Delaunay三角剖分[J],计算机辅助设计与图形学报,1999,11(1):1-3.
发明内容
本发明提供了一种任意多面体剖分方法和装置,在完成任意多面体的剖分算法基础上,将之应用于虚拟环境中的碰撞检测中,引入并行技术,来提高碰撞检测的实时性。
一种任意多面体剖分方法,其特征在于,包括以下步骤:
A1,判断所述多面体的类型,若是简单多面体,记为V(F,O),则执行步骤A2,若为凸多面体,则转向步骤A3,若为非凸多面体,则转向步骤A4;
A2,将简单多面体V(F,O)剖分为系列四面体,然后转向步骤A5;
A3,将凸多面体剖分,然后转向步骤A5;
A4,将非凸多面体剖分,然后转向步骤A5;
A5,判断所述多面体是否已剖分为系列四面体,如没有,转向步骤A1。
步骤A2中,简单多面体V(F,O)剖分为系列四面体的方法包括:
B1,将组成V(F,O)的原多面体的面F按Delaunay三角划分,剖分成多个三角形;
B2,将所述三角形分别与顶点O构成一系列四面体;
B3,将步骤B2中的四面体分别剖分出去。
步骤A3中,凸多面体的剖分方法包括:
C1,任取所述多面体的一个面F,一个顶点O,O不是面F的顶点;
C2,将步骤C1中的顶点O与面F的各个顶点相连接,得简单多面体V(F,O);
C3,将V(F,O)剖分出去,得一新多面体V′;
C4,将V(F,O)剖分为系列四面体。
步骤A4中,非凸多面体的剖分方法包括:
D1,任取所述多面体的一个面F;
D2,找出所有符合以下条件的顶点:
顶点位于面F的反侧,而该面位于该顶点的反向;
D3,求出每个顶点到面的垂直距离;
D4,判断是否还有其它未处理的面,如有,转向步骤D2;如没有,转向步骤D5;
D5,在求得的所垂直距离中,找出距离最短的一组,即面F与顶点O;
D6,将顶点O与面F的各个顶点相连接,得简单多面体V(F,O);
D7,将V(F,O)剖分出去,得一新多面体V′;
D8,将V(F,O)剖分为系列四面体。
一种任意多面体剖分装置,所述剖分装置包括存储器;以及
耦合到所述存储器的处理器,该处理器被配置为执行存储在所述存储器中的指令,所述处理器执行以下操作:
A1,判断所述多面体的类型,若是简单多面体,记为V(F,O),则执行步骤A2,若为凸多面体,则转向步骤A3,若为非凸多面体,则转向步骤A4;
A2,将简单多面体V(F,O)剖分为系列四面体,然后转向步骤A5;
A3,将凸多面体剖分,然后转向步骤A5;
A4,将非凸多面体剖分,然后转向步骤A5;
A5,判断所述多面体是否已剖分为系列四面体,如没有,转向步骤A1。
步骤A2中,简单多面体V(F,O)剖分为系列四面体的方法包括:
B1,将组成V(F,O)的原多面体的面F按Delaunay三角划分,剖分成多个三角形;
B2,将所述三角形分别与顶点O构成一系列四面体;
B3,将步骤B2中的四面体分别剖分出去。
步骤A3中,凸多面体的剖分方法包括:
C1,任取所述多面体的一个面F,一个顶点O,O不是面F的顶点;
C2,将步骤C1中的顶点O与面F的各个顶点相连接,得简单多面体V(F,O);
C3,将V(F,O)剖分出去,得一新多面体V′;
C4,将V(F,O)剖分为系列四面体。
步骤A4中,非凸多面体的剖分方法包括:
D1,任取所述多面体的一个面F;
D2,找出所有符合以下条件的顶点:
顶点位于面F的反侧,而该面位于该顶点的反向;
D3,求出每个顶点到面的垂直距离;
D4,判断是否还有其它未处理的面,如有,转向步骤D2;如没有,转向步骤D5;
D5,在求得的所垂直距离中,找出距离最短的一组,即面F与顶点O;
D6,将顶点O与面F的各个顶点相连接,得简单多面体V(F,O);
D7,将V(F,O)剖分出去,得一新多面体V′;
D8,将V(F,O)剖分为系列四面体。
一种碰撞检测装置,所述检测装置包括存储器;以及
耦合到所述存储器的处理器,该处理器被配置为执行存储在所述存储器中的指令,所述处理器执行以下操作:
将被检测物体表示为任意多面体;若要判断多面体A、B是否发生碰撞,则可将多面体A分解为N个简单多面体A1、A2……An,多面体B分解为M个简单多面体B1、B2……Bm,然后再利用Cluster结构或SMP结构的并行机同时判断多面体Ai(i=1…n)与Bk(k=1…m)是否发生碰撞,若有,则A与B有碰撞发生,否则没有。
本发明在仔细研究多面体特征后,对于任意多面体,先判断多面体类型,如果是简单多面体,可以直接根据空间Delaunay三角划分,将简单多面体剖分系列四面体,如果是凸多面体,则将原多面体先剖分成一个新的凸多面体和一个简单多面体,简单多面体剖分为系列四面体,新的凸体继续重复剖分,直到原多面体全部剖分为四面体;如果原多面体是非凸体,则根据给出的非凸体剖分方法,重复剖分,直到多面体全部剖分为四面体。
根据多面体剖分方法,复杂的任意空间物体或图形,都可以转换成简单的四面体,这就大大降低模型复杂度,减小问题规模,提高效率。对于任意复杂的物体,转换成系列简单四面体处理,显然对于每一个四面体来说,其问题规模已降为一个常数(即四面体平面数为常数4),时间效率都可以在一个常数时间得到,还可以同时引入并行处理来同时处理多个四面体,则总的效率能得到极大的改善,并且将复杂多面体剖分为多个四面体只需处理一次,在以后的多次使用时不再需要重复剖分,因此可预先处理,不需要占用真正运行时间,极大提高效率。本发明的任意多面体剖分方法,在不增加新顶点的情况下,将多面体剖分为系列最简单的多面体—四面体。适用于空间任意物体的建模,可将复杂的空间任意物体转换成简单的系列四面体模型,降低问题规模,提高效率,在计算几何、图形学,虚拟现实等领域都有很好应用价值。
将本发明的任意多面体剖分方法应用于碰撞检测,得到一种性能良好的碰撞检测算法。无论是实体环境还是虚拟环境,不但能适用于任意物体动态碰撞检测,并在保证高精度前提下,有效地满足碰撞检测的实时要求。
附图说明
通过参考附图阅读下文的详细描述,本发明示例性实施方式的上述以及其他目的、特征和优点将变得易于理解。在附图中,以示例性而非限制性的方式示出了本发明的若干实施方式,其中:
图1本发明涉及的任意多边形BCDEF示意图。
图2本发明涉及的任意多面体图。
图3本发明涉及的简单多面体示意图。
图4本发明涉及的任意多面体示意图。
具体实施方式
本发明为了叙述的方便与清楚,首先引入了一些基本定义和概念。
定义1:对于多面体任意一个顶点A,所有以A为顶点的面称为A的邻面,所有以A为端点的棱称为A的邻边,所有邻边的另一个端点称为A的邻接顶点。如图2所示,A的邻接顶点为B,C,D,E,F。
定义2:若多面体位于它的每一面所表示的平面的同侧,则称该多面体为凸多面体。
定义3:一个平面多边形的各个顶点分别与平面多边形外的一个顶点连接起来得到的多面体称为简单多面体。
注:简单多面体不一定是凸多面体。如图1、图2所示,多面体由多边形BCDEF与顶点A构成,这是一个简单多面体且不是凸多面体。
定义4:多面体的面所表示的平面的法向量从多面体封闭空间里面指向多面体外部,该方向称为该面的正向,另一方向称为该面的反向;如图2所示,面BCDEF的法向量α的方向为该面的正向。
定义5:以多面体顶点为起点的任意单位向量,若该向量指向多面体的外部,则称该向量的方向为该顶点的正向;反之,若该向量指向多面体的内部,则称该向量的方向为该顶点的反向。如图2所示,向量β,δ方向均为顶点A的正向(指向多面体外部)。
定义6:对于多面体的任意一个顶点,若多面体的某个面至少有部分点位于该顶点的反向,则称该面位于该顶点的反向。如图2所示,面BCDEF位于顶点A的反向。
凸多面体中的任意两点的连线在其内部,凸多面体中任意两个邻接侧面所形成的二面角(多面体内部)是凸的,二面角小于π,同时与顶点v关联的棱之间形成的平面角的和小于2π。
以下是本发明涉及的关于剖分方法的理论基础(仅是数学理论基础),
1.简单多面体的剖分
定理1:将一个平面多边形F的各个顶点与一个顶点O连接构成的简单多面体V(F,O),则V(F,O)可剖分为系列四面体的集合。
证明:由于V(F,O)是由一个平面多边形F和一个顶点O构成,对此平面多边形F进行Delaunay三角剖分,可得系列三角形。每个三角形顶点与顶点O连接均构成一个四面体,我们必须先证明:每一个四面体V四中的点都属于V(F,O);由于点O与平面多边形F的任一点连线所得线段上每一点都属于V(F,O),而剖分得到的三角形上每一点都属于面F,则点O与三角形的每一点连线所得线段上每一点也都属于V(F,O),因此V四中任意一点都有属于V(F,O)。
所以V(F,O)可剖分为系列四面体。(当F为三角形时,结论显然)
如图3:简单多面体V(F,O)由顶点O与平面多边形ABCDE构成,ABCDE由Delaunay三角剖分,可得ABD,BCD,AED三个三角形,则V(F,O)可剖分为三个四面体OABD,OBCD,OAED。
2.凸多面体的剖分
若多面体不是简单多面体且为凸多面体时,则任意取它的一个面F,并另取一个顶点O(顶点O不能是面F的顶点)。将面F的各个顶点与顶点O分别连接起来,即增加系列三角平面围成一个简单多面体V(F,O),
定理2:由上述方法所得简单多面体V(F,O)中任一点都属于原多面体V。
证明:不妨设点P∈V(F,O),但
因为点所以V(F,O)中必含空间域Ω不属于V,又因为V内没有孔洞(即V是单连通的),所以空间域Ω至少由原多面体一个面F′与新增的V(F,O)的三角平面围成,这样原多面体必位于面F′的两侧,即原多面体不是凸多面体,这与已知矛盾。定理得证。
所以可将原多面体剖分为一个简单多面体V(F,O)和一个新的多面体V′,而V(F,O)可进一步剖分为几个四面体。若V′仍为凸多面体,则继续按上述方法寻找另一个V(F,O)剖分出去,若V′不是凸多面体,按如下方法处理:
3.非凸多面体的剖分
定理3:任取一面F,在面的反向侧能找出满足这样条件的顶点:该面位于该顶点的反方向。
证明:由定义知,面的反向是面的法向量的反方向,即指向多面体内部的方向,因此面的反向一定有多面体的顶点,由定义知顶点的反方向是由该顶点指向多面体内部的方向,面位于顶点的反向指面至少有部分点位于该顶点的反向,由此假设定理不成立,即该面的所有点位于它反方向的每个顶点的正向,则必然无法构成一个封闭图形。所以定理成立。如图4所示,面ABCDEF的反向有顶点O,而面ABCDEF也位于顶点O的反方向。
定理4:对于多面体的每一个面,在它的反向找出满足定理3的所有顶点,即该面位于该顶点的反向,并求出每个顶点到该面的垂直距离,最后我们取垂直距离最短的一组:面F和顶点O,将顶点O与面F的各个顶点连接起来,构成一个简单多面体V(F,O),V(F,O)中任一点均属于原多面体。
证明:不妨假设点P∈V(F,O),但
因为点所以V(F,O)中必有空间域如空间域Ω只由原多面体的一个面F′与新增的三角面围成,则顶点O∈Ω,取面F上位于顶点O反向的任一点P,连接OP,OP与面F′交于点Q,点P位于顶点O反向,则点Q也位于顶点O的反向,但由于点Q必位于顶点O正向,得出矛盾;因此如假设成立,则空间域Ω至少由原多面体的两个面与新增的三角面围成。
如顶点O还是空间域Ω的顶点,即围成空间域Ω的原多面体两个面至少一个是顶点O的邻面F′,设过O点平行于面F的平面为E,则F′与围成空间域Ω另一个原多面体的面交点一定位于面E与面F之间,面F位于交点反向,且交点到面F的距离一定比点O到面F的距离短,与已知矛盾。
因此顶点且围成空间域Ω的原多面体的两个面不能有交点落在V(F,O)内,否则面F位于交点反向,这个点到面F的距离一定比点O到面F的距离短,所以这两个面都必须从新增的三角面穿过V(F,O),顶点O位于靠近它的那个面的反向,而顶点O到这个面的距离比它到面F的距离短,这与已知矛盾。所以定理得证。
因此对任意多面体,我们都可以找到一个合适的面F与一个顶点O构成的简单多面体V(F,O),V(F,O)中任意一点都属于原多面体,将V(F,O)剖分出去后,得一个新的多面体V′,对V′重复剖分,直至剖分完毕,而每一个V(F,O)都可以再剖分为系列四面体。
定理5:任意多面体V经过若干次剖分,最终可分解为一系列四面体。
证明:对于任意多面体,我们都能找到一个合适的多面体的面F与一个顶点O(顶点O不是面F的顶点),将面F的各个顶点分别与O相连接,可得一简单多面体V(F,O),而且V(F,O)中任意一点均属于原多面体V(定理2与定理4),则原多面体可剖分为V(F,O)和一个新的任意多面体V′,同理V′也能剖分一个V(F,O)和一个新的任意多面体V″,我们再次剖分V″,依此不断重复剖分,直致多面体剖分为系列简单多面体V(F,O)。而每一V(F,O)又可再次剖分为系列四面体(定理1)。所以任意任意多面体V经过若干次剖分,最终可剖分为系列四面体。
本发明涉及的任意多面体剖分方法中的判断算法有:
1.多面体是否为简单多面体的判定算法:当多面体为四面体,或者多面体只有一个面的顶点数大于3,若此面的顶点数为N个,且多面体顶点数为N+1个,则为简单多面体。
2.多面体是否为凸多面体的判定算法,包括步骤:
步骤1:取多面体的一个面F,平面表达式为Ax+By+Cz+D=0;
步骤2:调用多面体所有的顶点是否分布在一个面F的同一侧的判定算法:same(F);
步骤3:如same(F)的值为false,则结束,多面体为非凸多面体;如same(F)
为true则判断是否还有面没处理,如有,转向步骤1,否则结束,多面体
为凸多面体。
其中,还包括有:
(1)平面方程生成算法:Polygon(A,B,C)
步骤1:由不在同一直线上的点A、B、C坐标值及它们的排列顺序得到向量AB、BC的值;
步骤2:平面F的法向量NF就是向量AB、BC的叉积,由此得到法向量NF即{A,B,C};
步骤3:将任一点的坐标值代入表达式Ax+By+Cz+D=0中就得到常数项D的值,则求得平面方程:Ax+By+Cz+D=0。
注意:前面提到过,平面法向量{A,B,C}的方向必须从封闭空间里面指向多面体外面,由于向量的向量积满足右手准则,所以平面的顶点序列必须满足一定的规则:从多面体外部观察它时,其顶点序列应满足逆时针方向排列。
(2)多面体所有的顶点是否分布在一个面F的同一侧的判定算法Same(F),包括步骤:
步骤1:取多面体的一个顶点,坐标值为(x,y,z),将它的坐标值代入平面表达式Ax+By+Cz+D′=0,将解得的D′值与D比较,如D′<D,则顶点在面F法向量方向,即该顶点在面F的正向,如D′=D,顶点位于面F上;如D′>D,则顶点在面D法向量的反向,即该顶点在面F的反向;
步骤2:如已有顶点位于面F的反向侧,则结束,返回false;否则转向步骤3;
步骤3:如多面体还有其它顶点没判断,则转向步骤1,否则返回true。
总之,本发明的任意多面体的剖分方法包括步骤:
步骤1:判断多面体的类型,若是简单多面体,转向步骤2;否则,若为凸多面体,转向步骤3,若为非凸多面体,转向步骤4;
步骤2:调用简单多面体V(F,O)剖分为系列四面体的算法:DivideV(F,O),转向步骤5;
步骤3:调用凸多面体的剖分算法:DivideConvex(V);转向步骤5;
步骤4:调用非凸多面体的剖分算法:DivideNonconvex(V),转向步骤5;
步骤5:判断多面体是否已剖分为系列四面体,如没有,转向步骤1,否则结束。
其中,
(1)简单多面体V(F,O)剖分为系列四面体的算法:DivideV(F,O),包括:
步骤1:将组成V(F,O)的原多面体的面F按Delaunay三角划分,剖分成几个三角形;
步骤2:这些三角形分别与顶点O构成一系列四面体;
步骤3:将这些四面体分别剖分出去。
(2)凸多面体的剖分算法:DivideConvex(V),包括:
步骤1:任取多面体的一个面F,一个顶点O(O不是面F的顶点);
步骤2:将顶点O与面F的各个顶点相连接,得简单多面体V(F,O);
步骤3:将V(F,O)剖分出去,得一新多面体V′;
步骤4:调用DivideV(F,O),将V(F,O)剖分为系列四面体。
(3)非凸多面体的剖分算法:DivideNonconvex(V),包括:
步骤1:任取多面体的一个面F;
步骤2:找出所有符合以下条件的顶点:顶点位于面F的反侧,而该面位于该顶点的反向;
步骤3:求出每个顶点到面的垂直距离;
步骤4:判断是否还有其它未处理的面,如有,转向步骤2;如没有,转向步骤5;
步骤5:在求得的所垂直距离中,找出距离最短的一组:即面F与顶点O;
步骤6:将顶点O与面F的各个顶点相连接,得简单多面体V(F,O);
步骤7:将V(F,O)剖分出去,得一新多面体V′;
步骤8:调用DivideV(F,O),将V(F,O)剖分为系列四面体。
本发明如果应用于物体间并行碰撞检测,首先要将物体表示为任意多面体。用任意多面体表示物体是个常规用法,就是将任意形状物体本身看成多面体模型,而任意多面体又可以剖分为简单四面体。
因为在动态环境下碰撞测算法遇到的主要问题是如何提高碰撞检测的实时性。而利用并行处理来提高碰撞检测的速度是一种简单有效的方法,其关键在于要满足并行处理的条件:①、求解问题可划分为多个子问题;②、子问题间具有低相关性。
有了任意多面体的分解算法,复杂多面体的碰撞检测问题就可分解为多个简单四面体间的碰撞检测,满足了并行处理的第一个条件;每一对简单四面体间的碰撞检测与其它简单四面体间的碰撞检测基本上没有任何关系,满足了并行处理的第二个条件。
因此任意多面体的剖分算法完成后,就已经基本具备了并行处理的条件,在这个基础上完成并行处理算法是一件相对容易的事,因为所使用的碰撞检测算法基本没有改变,只不过是将两个复杂多面体间的碰撞检测问题分解为多个四面体间的碰撞检测,这种分解为机群(Cluster)式的并行处理提供了非常好的处理粒度。例如若要判断多面体A、B是否发生碰撞,则可将多面体A分解为N个简单多面体A1、A2……An,多面体B分解为M个简单多面体B1、B2……Bm,然后再利用Cluster结构或SMP结构的并行机同时判断多面体Ai(i=1…n)与Bk(k=1…m)是否发生碰撞,若有,则A与B有碰撞发生,否则没有。
这种基于任意多面体剖分的并行碰撞检测算法较好提高碰撞检测速度,并行程序的执行时间应该是随着处理节点的增加而呈线性下降趋势,而实验的结果则证实了我们的理论分析。通过该并行处理算法,若碰撞检测的时间达不到我们的要求,则我们还可以增加处理的节点来进一步提高速度,测试结果如下表1。
表1碰撞检测程序运行测试结果(时间:ms)
本发明提出了一种新的将任意多面体剖分为系列四面体的方法,并将此方法应用于物体间并行碰撞检测,特别是机器人的碰撞检测问题的解决。该方法将两个复杂的多面体间的碰撞检测转化为系列四面体间的并行碰撞检测,在保证高精度的前提条件下,有效的满足了碰撞检测的实时要求,同时也解决了一般碰撞检测算法只适用于凸多面体的不足。并且将复杂多面体剖分为多个四面体只需处理一次,在以后的多次碰撞检测时不再需要重复剖分,因此可以在碰撞检测前预先处理,不需要占用总体碰撞检测时间。
值得说明的是,虽然前述内容已经参考若干具体实施方式描述了本发明创造的精神和原理,但是应该理解,本发明并不限于所公开的具体实施方式,对各方面的划分也不意味着这些方面中的特征不能组合,这种划分仅是为了表述的方便。本发明旨在涵盖所附权利要求的精神和范围内所包括的各种修改和等同布置。
Claims (9)
1.一种任意多面体剖分方法,其特征在于,包括以下步骤:
A1,判断所述多面体的类型,若是简单多面体,记为V(F,O),则执行步骤A2,若为凸多面体,则转向步骤A3,若为非凸多面体,则转向步骤A4;
A2,将简单多面体V(F,O)剖分为系列四面体,然后转向步骤A5;
A3,将凸多面体剖分,然后转向步骤A5;
A4,将非凸多面体剖分,然后转向步骤A5;
A5,判断所述多面体是否已剖分为系列四面体,如没有,转向步骤A1。
2.如权利要求1所述的任意多面体剖分方法,其特征在于,步骤A2中,简单多面体V(F,O)剖分为系列四面体的方法包括:
B1,将组成V(F,O)的原多面体的面F按Delaunay三角划分,剖分成多个三角形;
B2,将所述三角形分别与顶点O构成一系列四面体;
B3,将步骤B2中的四面体分别剖分出去。
3.如权利要求1所述的任意多面体剖分方法,其特征在于,步骤A3中,凸多面体的剖分方法包括:
C1,任取所述多面体的一个面F,一个顶点O,O不是面F的顶点;
C2,将步骤C1中的顶点O与面F的各个顶点相连接,得简单多面体V(F,O);
C3,将V(F,O)剖分出去,得一新多面体V′;
C4,将V(F,O)剖分为系列四面体。
4.如权利要求1所述的任意多面体剖分方法,其特征在于,步骤A4中,非凸多面体的剖分方法包括:
D1,任取所述多面体的一个面F;
D2,找出所有符合以下条件的顶点:
顶点位于面F的反侧,而该面位于该顶点的反向;
D3,求出每个顶点到面的垂直距离;
D4,判断是否还有其它未处理的面,如有,转向步骤D2;如没有,转向步骤
D5;
D5,在求得的所垂直距离中,找出距离最短的一组,即面F与顶点O;
D6,将顶点O与面F的各个顶点相连接,得简单多面体V(F,O);
D7,将V(F,O)剖分出去,得一新多面体V′;
D8,将V(F,O)剖分为系列四面体。
5.一种任意多面体剖分装置,其特征在于,所述剖分装置包括存储器;以及
耦合到所述存储器的处理器,该处理器被配置为执行存储在所述存储器中的指令,所述处理器执行以下操作:
A1,判断所述多面体的类型,若是简单多面体,记为V(F,O),则执行步骤A2,
若为凸多面体,则转向步骤A3,若为非凸多面体,则转向步骤A4;
A2,将简单多面体V(F,O)剖分为系列四面体,然后转向步骤A5;
A3,将凸多面体剖分,然后转向步骤A5;
A4,将非凸多面体剖分,然后转向步骤A5;
A5,判断所述多面体是否已剖分为系列四面体,如没有,转向步骤A1。
6.如权利要求5所述的任意多面体剖分装置,其特征在于,步骤A2中,简单多面体V(F,O)剖分为系列四面体的方法包括:
B1,将组成V(F,O)的原多面体的面F按Delaunay三角划分,剖分成多个三角形;
B2,将所述三角形分别与顶点O构成一系列四面体;
B3,将步骤B2中的四面体分别剖分出去。
7.如权利要求5所述的任意多面体剖分装置,其特征在于,步骤A3中,凸多面体的剖分方法包括:
C1,任取所述多面体的一个面F,一个顶点O,O不是面F的顶点;
C2,将步骤C1中的顶点O与面F的各个顶点相连接,得简单多面体V(F,O);
C3,将V(F,O)剖分出去,得一新多面体V′;
C4,将V(F,O)剖分为系列四面体。
8.如权利要求5所述的任意多面体剖分装置,其特征在于,步骤A4中,非凸多面体的剖分方法包括:
D1,任取所述多面体的一个面F;
D2,找出所有符合以下条件的顶点:
顶点位于面F的反侧,而该面位于该顶点的反向;
D3,求出每个顶点到面的垂直距离;
D4,判断是否还有其它未处理的面,如有,转向步骤D2;如没有,转向步骤
D5;
D5,在求得的所垂直距离中,找出距离最短的一组,即面F与顶点O;
D6,将顶点O与面F的各个顶点相连接,得简单多面体V(F,O);
D7,将V(F,O)剖分出去,得一新多面体V′;
D8,将V(F,O)剖分为系列四面体。
9.一种碰撞检测装置,其特征在于,所述检测装置包括存储器;以及
耦合到所述存储器的处理器,该处理器被配置为执行存储在所述存储器中的指令,所述处理器执行以下操作:
将被检测物体表示为任意多面体;
若要判断多面体A、B是否发生碰撞,则可将多面体A分解为N个简单多面体A1、A2……An,多面体B分解为M个简单多面体B1、B2……Bm,然后再利用Cluster结构或SMP结构的并行机同时判断多面体Ai(i=1…n)与Bk(k=1…m)是否发生碰撞,若有,则A与B有碰撞发生,否则没有。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711166495.5A CN107845138A (zh) | 2017-11-21 | 2017-11-21 | 任意多面体剖分方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711166495.5A CN107845138A (zh) | 2017-11-21 | 2017-11-21 | 任意多面体剖分方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107845138A true CN107845138A (zh) | 2018-03-27 |
Family
ID=61679911
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711166495.5A Pending CN107845138A (zh) | 2017-11-21 | 2017-11-21 | 任意多面体剖分方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107845138A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111814970A (zh) * | 2020-06-28 | 2020-10-23 | 盾钰(上海)互联网科技有限公司 | 基于神经网络的实时物理引擎增强计算方法、介质及系统 |
-
2017
- 2017-11-21 CN CN201711166495.5A patent/CN107845138A/zh active Pending
Non-Patent Citations (2)
Title |
---|
熊玉梅: "虚拟环境中物体碰撞检测技术的研究", 《博士学位论文电子期刊 信息科技辑》 * |
薛广涛等: "基于凸多面体剖分的并行碰撞检测算法", 《上海交通大学学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111814970A (zh) * | 2020-06-28 | 2020-10-23 | 盾钰(上海)互联网科技有限公司 | 基于神经网络的实时物理引擎增强计算方法、介质及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhang et al. | Collision detection for clothed human animation | |
Ho et al. | Real-time interference analysis between a tool and an environment | |
US8217938B2 (en) | Method and apparatus for determining item orientation | |
CN101982837A (zh) | 一种基于有限元分析后处理结果的快速三维可视化方法 | |
Lopes et al. | Tangent vectors to a 3-D surface normal: A geometric tool to find orthogonal vectors based on the Householder transformation | |
CN104809760A (zh) | 基于深度优先策略的地理空间三维外轮廓自动构建方法 | |
Ruan et al. | Closed-form Minkowski sums of convex bodies with smooth positively curved boundaries | |
Kimmerle et al. | Hierarchy accelerated stochastic collision detection | |
US20210406432A1 (en) | Calculation method, medium and system for real-time physical engine enhancement based on neural network | |
US8358303B2 (en) | Method of searching neighboring cell address in same resolution octree structure | |
Ruan et al. | Efficient exact collision detection between ellipsoids and superquadrics via closed-form Minkowski sums | |
CN107845138A (zh) | 任意多面体剖分方法和装置 | |
Tang et al. | Adjacency-based culling for continuous collision detection | |
Wong et al. | Continuous collision detection for deformable objects using permissible clusters | |
Hauth et al. | Extended linked voxel structure for point-to-mesh distance computation and its application to NC collision detection | |
Arhid et al. | An Efficient Hierarchical 3D Mesh Segmentation Using Negative Curvature and Dihedral Angle. | |
CN107610231A (zh) | 一种动态碰撞检测方法 | |
Choi et al. | Controlling the contact levels of details for fast and precise haptic collision detection | |
Held et al. | Straight skeletons and mitered offsets of polyhedral terrains in 3D | |
Camata et al. | Parallel linear octree meshing with immersed surfaces | |
Schauer et al. | Performance comparison between state-of-the-art point-cloud based collision detection approaches on the CPU and GPU | |
Pasko et al. | Minkowski sums of point sets defined by inequalities | |
Wei et al. | A fast collision detection algorithm suitable for complex virtual environment | |
Laroche | An implicit representation of swept volumes based on local shapes and movements | |
Ma et al. | A high-performance method for calculating the minimum distance between two 2D and 3D nurbs curves |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180327 |