CN112802203A - 一种基于特征的空间哈希连续碰撞检测方法 - Google Patents

一种基于特征的空间哈希连续碰撞检测方法 Download PDF

Info

Publication number
CN112802203A
CN112802203A CN202110062332.2A CN202110062332A CN112802203A CN 112802203 A CN112802203 A CN 112802203A CN 202110062332 A CN202110062332 A CN 202110062332A CN 112802203 A CN112802203 A CN 112802203A
Authority
CN
China
Prior art keywords
collision
detected
grid model
physical
feature
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.)
Granted
Application number
CN202110062332.2A
Other languages
English (en)
Other versions
CN112802203B (zh
Inventor
刘谦
黄团送
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huazhong University of Science and Technology
Ezhou Institute of Industrial Technology Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
Ezhou Institute of Industrial Technology Huazhong University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huazhong University of Science and Technology, Ezhou Institute of Industrial Technology Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN202110062332.2A priority Critical patent/CN112802203B/zh
Publication of CN112802203A publication Critical patent/CN112802203A/zh
Application granted granted Critical
Publication of CN112802203B publication Critical patent/CN112802203B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • G06T17/205Re-meshing

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Computer Graphics (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Image Analysis (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

一种基于特征的空间哈希连续碰撞检测方法,所述方法包括步骤:获取待检测物体的物理网格模型;获取所述物理网格模型中各特征的邻接信息;根据所述邻接信息建立所述物理网格模型的结构约束关系;计算所述物理网格模型中各质点在下一时刻的预测位置;基于各所述特征的空间哈希碰撞检测所述物理网格模型中实际发生碰撞的特征对。本申请提供的一种基于特征的空间哈希连续碰撞检测方法相比于基于三角形的空间哈希碰撞检测方法具有完全排除重复检测、剔除效率高的优点;相比于其他基于特征的BVH方法,避免了额外的耗时步骤,开发难度更小,易并行,且能无差别的实现碰撞和自碰撞检测的优点;本发明中的方法碰撞检测效率高,耗时少,易实现。

Description

一种基于特征的空间哈希连续碰撞检测方法
技术领域
本发明属于连续碰撞检测技术领域,具体涉及一种基于特征的空间哈希连续碰撞检测方法。
背景技术
基于物理模拟技术对真实世界中的各种物体(包括刚体、软体及柔性物体)进行物理建模,利用计算机的计算和渲染能力展现出动态逼真的效果已被广泛应用于电影工业、电子游戏、虚拟现实等诸多领域。碰撞检测是其中非常重要且耗时的一部分,目前有许多方法用来加速碰撞检测,大体可分为两类,一类是基于对象划分,如层次包围盒树(BVH)方法,另一类是基于空间划分,如空间八叉树、二叉空间分割树(BSP)、K-d树以及空间哈希法等。然而,Bac i u G.等注意到基于图形基元的碰撞检测算法存在大量重复检测的问题,为此他们提出一种随机标记的方法,将每一个特征(即顶点和边)唯一的分配到一个邻接三角形,从而避免碰撞对的重复检测。Hutter M.等发现除了大量重复检测外,基于图形基元的碰撞检测还存在剔除效率低的问题,进而为顶点和边引入特征包围盒提高了剔除效率,使用Bac i u G.的方法避免重复检测,进一步提升了碰撞检测的效率和速度。Manocha D.等在以上二者的思想上,提出基于“代表三角形”的层次包围盒树方法,同时使用特征包围盒提高剔除效率。
虽然以上碰撞检测方法有各自的优点,且能排除重复检测并解决剔除效率低的问题,但仍存在以下问题:1、
(1)排除重复碰撞检测需要将每一个特征分配到唯一一个相邻三角形,这一步需要额外消耗时间,尤其是当网格拓扑结构发生变化时,需要对断裂部位重新分配;
(2)以上改进算法都是基于层次包围盒树,对于布料等柔性物体而言,当发生较大形变时,BVH的剔除效率会大大降低,需要对BVH树做调整,必要时甚至需要重建,这会严重影响碰撞检测的性能;
(3)BVH树方法需要对对象间的碰撞检测和对象的自碰撞检测使用不同的遍历方法,此外还需要选用某种优化策略对BVH树进行调整,增大了算法实现难度。
而相对来说,空间哈希方法能避免以上几点,同时能很容易的实现并行计算,但尽申请人所知,目前尚未有基于特征的空间哈希连续碰撞检测方法。
发明内容
鉴于上述问题,本发明提供克服上述问题或者至少部分地解决上述问题的一种基于特征的空间哈希连续碰撞检测方法。
为解决上述技术问题,本发明提供了一种基于特征的空间哈希连续碰撞检测方法,所述方法包括步骤:
获取待检测物体的物理网格模型;
获取所述物理网格模型中各特征的邻接信息;
根据所述邻接信息建立所述物理网格模型的结构约束关系;
计算所述物理网格模型中各质点在下一时刻的预测位置;
基于各所述特征的空间哈希碰撞检测所述物理网格模型中实际发生碰撞的特征对。
优选地,所述获取所述物理网格模型中各特征的邻接信息包括步骤:
将所述物理网格模型导入物理仿真***中;
读取所述物理网格模型的顶点位置信息、三角形信息及法向信息;
初始化所述物理网格模型各质点的状态信息;
根据所述物理网格模型中顶点的连接关系生成各所述特征的邻接信息。
优选地,所述根据所述邻接信息建立所述物理网格模型的结构约束关系包括步骤:
获取所述物理网格模型中各所述质点的初始位置;
获取所述待检测物体的力学特性;
建立所述物理网格模型中每条边两顶点之间的距离约束关系;
建立所述物理网格模型中两共边三角形之间的二面角弯曲约束关系。
优选地,所述计算所述物理网格模型中各质点在下一时刻的预测位置包括步骤:
获取物理仿真***的时间步长以及当前时刻;
获取所述物理网格模型中各所述质点在当前时刻下所受的外力;
获取半隐式欧拉积分公式;
根据牛顿第二定律和所述半隐式欧拉积分公式预测各所述质点在下一时刻的预测位置。
优选地,所述基于各所述特征的空间哈希碰撞检测所述物理网格模型中实际发生碰撞的特征对包括步骤:
获取当前时刻至下一时刻之间的时间步长内扫掠体的空间包围盒所覆盖到的空间网格;
获取所述空间网格对应的三角形哈希表和边哈希表;
将所述物理网格模型中的三角形对应添加到所述三角形哈希表中;
将所述物理网格模型中的边对应添加到所述边哈希表中;
检测所述物理网格模型中的点-面碰撞对;
检测所述物理网格模型中的边-边碰撞对。
优选地,所述检测所述物理网格模型中的点-面碰撞对包括步骤:
遍历所述物理网格模型中各顶点;
获取各所述顶点在当前时刻至下一时刻之间的时间步长内扫过的轨迹;
获取所述轨迹的包围盒所覆盖到的所有空间网格;
判断所述轨迹是否与所述空间网格的包围盒相交;
若是,遍历所述空间网格中的所有三角形;
若否,则跳过;
判断所述顶点是否是所述三角形的顶点;
若是,则跳过,
若否,判断所述顶点与所述三角形是否已经检测过;
若是,则跳过;
若否,判断所述轨迹是否与所述三角形的包围盒相交;
若是,进行所述顶点与所述三角形的连续碰撞检测,生成点-面碰撞对约束关系,并将所述点-面碰撞对标记为已检测过;
若否,则跳过,并将所述点-面碰撞对标记为已检测过。
优选地,所述判断所述顶点与所述三角形是否已经检测过包括步骤:
设置一个长度为三角形个数的整型数组和一个计时器;
当相交检测开始时将所述整型数组中的元素和所述计时器均重置为0;
当每遍历一个顶点时将所述计时器的值自增1;
判断所述整型数组的值是否等于所述计时器的当前值;
若是,判断所述顶点与所述三角形已经检测过;
若否,判断所述顶点与所述三角形未检测过。
优选地,所述检测所述物理网格模型中的边-边碰撞对包括步骤:
遍历所述边哈希表;
对每个所述边哈希表中的任一两两边之间构成待检测边-边碰撞对;
判断任一所述待检测边-边碰撞对中两条边是否共顶点;
若是,则跳过;
若否,判断所述待检测边-边碰撞对是否已检测过;
若是,则跳过;
若否,判断两条所述边的扫掠体空间包围盒是否相交;
若是,进行边-边碰撞对连续碰撞检测,生成边-边碰撞对约束关系,并将所述边-边碰撞对标记为已检测过;
若否,则跳过,并将所述边-边碰撞对标记为已检测过。
优选地,所述判断所述待检测边-边碰撞对是否已检测过包括步骤:
设置一个长度为(S+31)/32的无符号整型数组bitFlags;
获取所述无符号整型数组bitFlags的位索引号
Figure BDA0002903189820000061
判断所述位索引号是否为1;
若是,判断所述待检测边-边碰撞对已检测过;
若否,判断所述待检测边-边碰撞对未检测过;
其中,S=M(M-1)/2,M为所述物理网格模型中边的总数;i和j为所述待检测边-边碰撞对(ei,ej)的下角标。
优选地,在所述基于各所述特征的空间哈希碰撞检测所述物理网格模型中实际发生碰撞的特征对之后还包括步骤:
将所述结构约束关系和所述碰撞约束关系一起做约束投影迭代;
修正所有所述质点的预测位置以满足所述结构约束关系和所述碰撞约束关系;
获取无碰撞状态时所有所述质点的位置;
使用所有所述质点的位置修正所有所述质点的速度;
根据所有所述质点的当前位置渲染得到图像。
本发明实施例中的一个或多个技术方案,至少具有如下技术效果或优点:本申请提供的一种基于特征的空间哈希连续碰撞检测方法可以剔除点-面碰撞对和边-边碰撞对的重复检测,同时引入特征包围盒进一步提高剔除效率;经试验,该方法相对于基于图形基元的空间哈希方法有很大提升;同时,相比于其他现有的基于特征的BVH算法,本方法不需要进行特征分配步骤,避免了复杂的BVH树调整过程,能无区别的实现物体间碰撞和自碰撞,开发难度更低,且能很容易实现并行优化。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本发明实施例提供的一种基于特征的空间哈希连续碰撞检测方法的流程示意图;
图2是本发明实施例提供的一种基于特征的空间哈希连续碰撞检测方法中边-边碰撞检测位标记数组及索引。
具体实施方式
下文将结合具体实施方式和实施例,具体阐述本发明,本发明的优点和各种效果将由此更加清楚地呈现。本领域技术人员应理解,这些具体实施方式和实施例是用于说明本发明,而非限制本发明。
在整个说明书中,除非另有特别说明,本文使用的术语应理解为如本领域中通常所使用的含义。因此,除非另有定义,本文使用的所有技术和科学术语具有与本发明所属领域技术人员的一般理解相同的含义。若存在矛盾,本说明书优先。
除非另有特别说明,本发明中用到的各种原材料、试剂、仪器和设备等,均可通过市场购买得到或者可通过现有方法制备得到。
如图1,在本申请实施例中,本发明提供了一种基于特征的空间哈希连续碰撞检测方法,所述方法包括步骤:
S1:获取待检测物体的物理网格模型;
在本申请实施例中,可以使用三维建模软件设计并制作待检测物体的物理网格模型,然后从三维建模软件中获得对应的物理网格模型数据文件。当然,也可以使用现有的已经制作完成的待检测物体的物理网格模型。
S2:获取所述物理网格模型中各特征的邻接信息;
在本申请实施例中,所述获取所述物理网格模型中各特征的邻接信息包括步骤:
将所述物理网格模型导入物理仿真***中;
读取所述物理网格模型的顶点位置信息、三角形信息及法向信息;
初始化所述物理网格模型各质点的状态信息;
根据所述物理网格模型中顶点的连接关系生成各所述特征的邻接信息。
在本申请实施例中,当获取所述物理网格模型中各特征的邻接信息时,将物理网格模型文件中的数据输入物理仿真***接口中,物理仿真***读取物体网格模型中各个顶点的位置信息、三角形信息和法向信息,并据此初始化物理网格模型中的各个质点的状态信息,包括质点的质量mi、质量倒数wi、位置xi以及速度vi,其中i∈(1,...,n),n为物理网格模型中所包含所有物理网格模型的顶点总数。具体地,mi和wi初始化为1,对于固定顶点,mi和wi初始化为0;位置xi初始化为物理网格模型顶点的坐标,速度vi初始化为0。然后根据物理网格模型顶点的连接关系获得物理网格模型中各特征(即顶点、边、三角形)的邻接信息,邻接信息具体包括顶点集合V,边集合E和三角形集合T。对于任意顶点vi∈V,其邻接信息具体包含其相邻的边索引列表和三角形索引列表;对于任意边ei∈E,其邻接信息具体包含其两顶点索引和参与构成的两个三角形索引,特别地,对于边界边,其只参与构成1个三角形,其第二个面索引设置为-1;对于任意三角形ti∈T,其邻接信息具体包括其三个顶点索引和三条边索引。
S3:根据所述邻接信息建立所述物理网格模型的结构约束关系;
在本申请实施例中,所述根据所述邻接信息建立所述物理网格模型的结构约束关系包括步骤:
获取所述物理网格模型中各所述质点的初始位置;
获取所述待检测物体的力学特性;
建立所述物理网格模型中每条边两顶点之间的距离约束关系;
建立所述物理网格模型中两共边三角形之间的二面角弯曲约束关系。
在本申请实施例中,当根据所述邻接信息建立所述物理网格模型的结构约束关系时,根据物理网格模型中各质点之间的初始位置以及待检测物体的力学特性建立质点之间的结构约束关系,用以描述质点之间的内力作用。具体地,结构约束关系包括每条边两顶点之间的距离约束以及两共边三角形之间的二面角弯曲约束等,约束的刚度系数根据物体的力学特性决定。具体地,距离约束关系描述为公式:C(p1,p2)=|p1-p2|-l0,其中p1和p2分别为两质点的初始位置,l0为这条边的原长;二面角弯曲约束关系描述为公式:
Figure BDA0002903189820000101
其中p1、p2为公共边的两顶点位置,p3和p4为两三角形各自的非公共边的顶点位置,
Figure BDA0002903189820000102
为两三角形之间的初始二面角。
S4:计算所述物理网格模型中各质点在下一时刻的预测位置;
在本申请实施例中,所述计算所述物理网格模型中各质点在下一时刻的预测位置包括步骤:
获取物理仿真***的时间步长以及当前时刻;
获取所述物理网格模型中各所述质点在当前时刻下所受的外力;
获取半隐式欧拉积分公式;
根据牛顿第二定律和所述半隐式欧拉积分公式预测各所述质点在下一时刻的预测位置。
在本申请实施例中,当计算所述物理网格模型中各质点在下一时刻的预测位置时,获取物理仿真***的时间步长Δt和当前时刻为t,然后计算物理网格模型中各质点在当前时刻t下所受外力fext(包括重力、空气阻力和摩擦力等),然后依据牛顿第二定律和半隐式欧拉积分公式预测质点i下一时刻t+1的位置
Figure BDA0002903189820000103
具体计算公式为:
Figure BDA0002903189820000104
其中,
Figure BDA0002903189820000105
表示预测的下一时刻质点i的速度,
Figure BDA0002903189820000106
表示当前时刻质点i的速度,wi表示质点i的质量倒数,
Figure BDA0002903189820000107
表示当前时刻质点i的位置。
S5:基于各所述特征的空间哈希碰撞检测所述物理网格模型中实际发生碰撞的特征对。
在本申请实施例中,所述基于各所述特征的空间哈希碰撞检测所述物理网格模型中实际发生碰撞的特征对包括步骤:
获取当前时刻至下一时刻之间的时间步长内扫掠体的空间包围盒所覆盖到的空间网格;
获取所述空间网格对应的三角形哈希表和边哈希表;
将所述物理网格模型中的三角形对应添加到所述三角形哈希表中;
将所述物理网格模型中的边对应添加到所述边哈希表中;
检测所述物理网格模型中的点-面碰撞对;
检测所述物理网格模型中的边-边碰撞对。
在本申请实施例中,当基于各所述特征的空间哈希碰撞检测所述物理网格模型中实际发生碰撞的特征对时,首先获取所述空间网格对应的三角形哈希表和边哈希表,然后将三角形和边分别对应添加到三角形哈希表和边哈希表中,以对点-面(V-F)碰撞对和边-边(E-E)碰撞对做相交检测。具体地,对于特征fi(三角形或边),需要将其添加到其在该时间步长内的扫掠体的空间包围盒所覆盖到的空间网格所对应的哈希桶中,空间网格Cellj与哈希桶的对应关系是根据Cellj的坐标(Xj,Yj,Zj)做哈希运算后对哈希表大小N取模得到。具体哈希函数可根据实际选取,常见的有XOR哈希、DJB2哈希,XOR哈希的计算公式为:h=X·p1 xor Y·p2 xor Z·p3,其中,h表示哈希值,X、Y、Z分别为空间网格的坐标分量,p1、p2、p3为三个较大的素数,可分别取值73856093、19349663和83492791。
在本申请实施例中,所述检测所述物理网格模型中的点-面碰撞对包括步骤:
遍历所述物理网格模型中各顶点;
获取各所述顶点在当前时刻至下一时刻之间的时间步长内扫过的轨迹;
获取所述轨迹的包围盒所覆盖到的所有空间网格;
判断所述轨迹是否与所述空间网格的包围盒相交;
若是,遍历所述空间网格中的所有三角形;
若否,则跳过;
判断所述顶点是否是所述三角形的顶点;
若是,则跳过,
若否,判断所述顶点与所述三角形是否已经检测过;
若是,则跳过;
若否,判断所述轨迹是否与所述三角形的包围盒相交;
若是,进行所述顶点与所述三角形的连续碰撞检测,生成点-面碰撞对约束关系,并将所述点-面碰撞对标记为已检测过;
若否,则跳过,并将所述点-面碰撞对标记为已检测过。
在本申请实施例中,当检测所述物理网格模型中的点-面碰撞对时,对于点-面(V-F)碰撞对需遍历物理网格模型中的各个顶点,对于顶点vi在该时间步长内扫过的轨迹si和轨迹si的包围盒所覆盖到的任意空间网格Cellj,先判断轨迹si是否与空间网格Cellj的包围盒相交,若相交,则遍历空间网格Cellj中的所有三角形tk,若否,则跳过;接着判断顶点i是否是三角形tk的顶点,若是则跳过,若否,则再判断顶点vi与三角形ti是否已经检测过,若是则跳过,若否,则进一步判断轨迹si是否与三角形tk的包围盒相交,若相交则进一步做顶点vi与三角形ti的连续碰撞检测,生成点-面碰撞对约束关系CVF(p0,p1,p2,p3),并将所述点-面碰撞对标记为已检测过;若不相交则跳过,并将所述点-面碰撞对标记为已检测过。
在本申请实施例中,所述判断所述顶点与所述三角形是否已经检测过包括步骤:
设置一个长度为三角形个数的整型数组和一个计时器;
当相交检测开始时将所述整型数组中的元素和所述计时器均重置为0;
当每遍历一个顶点时将所述计时器的值自增1;
判断所述整型数组的值是否等于所述计时器的当前值;
若是,判断所述顶点与所述三角形已经检测过;
若否,判断所述顶点与所述三角形未检测过。
在本申请实施例中,对于点-面(V-F)碰撞对使用时间戳方法避免顶点与三角形的重复检测。具体地,设置一个长度为三角形个数Nt的整型数组timeStamps和一个计时器counter,当相交检测开始时,将整型数组timeStamps中的元素和计时器counter均重置为0两每遍历一个顶点时将计时器counter的值自增1,当判断整型数组timeStamps的值等于计时器counter的当前值时,则判断所述顶点vi与所述三角形ti已经检测过;反之,则判断所述顶点vi与所述三角形ti未检测过。
在本申请实施例中,所述检测所述物理网格模型中的边-边碰撞对包括步骤:
遍历所述边哈希表;
对每个所述边哈希表中的任一两两边之间构成待检测边-边碰撞对;
判断任一所述待检测边-边碰撞对中两条边是否共顶点;
若是,则跳过;
若否,判断所述待检测边-边碰撞对是否已检测过;
若是,则跳过;
若否,判断两条所述边的扫掠体空间包围盒是否相交;
若是,进行边-边碰撞对连续碰撞检测,生成边-边碰撞对约束关系,并将所述边-边碰撞对标记为已检测过;
若否,则跳过,并将所述边-边碰撞对标记为已检测过。
在本申请实施例中,当检测所述物理网格模型中的边-边碰撞对时,可遍历边哈希表,对于每个边哈希表中的边,于两两之间构成待检测边-边(E-E)碰撞对。对于任意边-边碰撞对(ei,ej),先判断(ei,ej)的两条边是否共顶点,若是则跳过,若否则再判断该边-边碰撞对(ei,ej)是否已检测过,若是则跳过,若否则判断两条边的扫掠体空间包围盒是否相交,若相交则进行边-边碰撞对连续碰撞检测,生成边-边碰撞对约束关系CEE(p1,p2,p3,p4),并将所述边-边碰撞对标记为已检测过;若不相交则跳过,并将所述边-边碰撞对标记为已检测过。
在本申请实施例中,所述判断所述待检测边-边碰撞对是否已检测过包括步骤:
设置一个长度为(S+31)/32的无符号整型数组bitFlags;
获取所述无符号整型数组bitFlags的位索引号
Figure BDA0002903189820000151
判断所述位索引号是否为1;
若是,判断所述待检测边-边碰撞对已检测过;
若否,判断所述待检测边-边碰撞对未检测过;
其中,S=M(M-1)/2,M为所述物理网格模型中边的总数;i和j为所述待检测边-边碰撞对(ei,ej)的下角标。
在本申请实施例中,对于边-边(E-E)碰撞对使用位标记方法避免边与边的重复检测。具体地,对于E-E碰撞对(ei,ej),其中i<j,使用一个位来标志其是否已经检测过,具体地,设物理网格模型中边的总数为M,则总共可能的E-E碰撞对数量为S=M(M-1)/2,具体如图2所示。每一个无符号整型包含32位,则申请一个长度为(S+31)/32的无符号整型数组bitFlags即可表示所有E-E碰撞对的检测状态。对于任意E-E碰撞对(ei,ej),其中i<j,其对应的bitFlags中的位索引号为
Figure BDA0002903189820000152
其中,S=M(M-1)/2,M为所述物理网格模型中边的总数;i和j为所述待检测边-边碰撞对(ei,ej)的下角标。判断该位是否为1,若是,则待检测边-边碰撞对检测过;反之,则未检测过。
在本申请实施例中,在所述基于各所述特征的空间哈希碰撞检测所述物理网格模型中实际发生碰撞的特征对之后还包括步骤:
S6:将所述结构约束关系和所述碰撞约束关系一起做约束投影迭代;
S7:修正所有所述质点的预测位置以满足所述结构约束关系和所述碰撞约束关系;
S8:获取无碰撞状态时所有所述质点的位置;
S9:使用所有所述质点的位置修正所有所述质点的速度;
S10:根据所有所述质点的当前位置渲染得到图像。
在本申请实施例中,当基于各所述特征的空间哈希碰撞检测所述物理网格模型中实际发生碰撞的特征对之后,将静态的结构约束关系和动态的碰撞约束关系一起做约束投影迭代,通过修正所有质点的预测位置使约束关系得以满足,通过多次迭代得到无碰撞状态,此时得到的质点位置即为在外力和内部约束共同作用下的正确位置pi。然后用得到所有的质点正确位置pi修正对应质点的速度vi,并根据所有质点当前位置渲染得到一帧图像。将更新后的质点位置和速度作为下一时间步长的初始状态,重复步骤S4-S10即可实现连续动态的仿真效果,直至得到完整的仿真动画。
本申请提供的一种基于特征的空间哈希连续碰撞检测方法可以剔除点-面碰撞对和边-边碰撞对的重复检测,同时引入特征包围盒进一步提高剔除效率;经试验,该方法相对于基于图形基元的空间哈希方法有很大提升;同时,相比于其他现有的基于特征的BVH算法,本方法不需要进行特征分配步骤,避免了复杂的BVH树调整过程,能无区别的实现物体间碰撞和自碰撞,开发难度更低,且能很容易实现并行优化。
本申请提供的一种基于特征的空间哈希连续碰撞检测方法相比于基于三角形的空间哈希碰撞检测方法具有完全排除重复检测、剔除效率高的优点;相比于其他基于特征的BVH方法,避免了额外的耗时步骤,开发难度更小,易并行,且能无差别的实现碰撞和自碰撞检测的优点;本发明中的方法碰撞检测效率高,耗时少,易实现。
需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。
总之,以上所述仅为本发明技术方案的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于特征的空间哈希连续碰撞检测方法,其特征在于,所述方法包括步骤:
获取待检测物体的物理网格模型;
获取所述物理网格模型中各特征的邻接信息;
根据所述邻接信息建立所述物理网格模型的结构约束关系;
计算所述物理网格模型中各质点在下一时刻的预测位置;
基于各所述特征的空间哈希碰撞检测所述物理网格模型中实际发生碰撞的特征对。
2.根据权利要求1所述的基于特征的空间哈希连续碰撞检测方法,其特征在于,所述获取所述物理网格模型中各特征的邻接信息包括步骤:
将所述物理网格模型导入物理仿真***中;
读取所述物理网格模型的顶点位置信息、三角形信息及法向信息;
初始化所述物理网格模型各质点的状态信息;
根据所述物理网格模型中顶点的连接关系生成各所述特征的邻接信息。
3.根据权利要求1所述的基于特征的空间哈希连续碰撞检测方法,其特征在于,所述根据所述邻接信息建立所述物理网格模型的结构约束关系包括步骤:
获取所述物理网格模型中各所述质点的初始位置;
获取所述待检测物体的力学特性;
建立所述物理网格模型中每条边两顶点之间的距离约束关系;
建立所述物理网格模型中两共边三角形之间的二面角弯曲约束关系。
4.根据权利要求1所述的基于特征的空间哈希连续碰撞检测方法,其特征在于,所述计算所述物理网格模型中各质点在下一时刻的预测位置包括步骤:
获取物理仿真***的时间步长以及当前时刻;
获取所述物理网格模型中各所述质点在当前时刻下所受的外力;
获取半隐式欧拉积分公式;
根据牛顿第二定律和所述半隐式欧拉积分公式预测各所述质点在下一时刻的预测位置。
5.根据权利要求1所述的基于特征的空间哈希连续碰撞检测方法,其特征在于,所述基于各所述特征的空间哈希碰撞检测所述物理网格模型中实际发生碰撞的特征对包括步骤:
获取当前时刻至下一时刻之间的时间步长内扫掠体的空间包围盒所覆盖到的空间网格;
获取所述空间网格对应的三角形哈希表和边哈希表;
将所述物理网格模型中的三角形对应添加到所述三角形哈希表中;
将所述物理网格模型中的边对应添加到所述边哈希表中;
检测所述物理网格模型中的点-面碰撞对;
检测所述物理网格模型中的边-边碰撞对。
6.根据权利要求5所述的基于特征的空间哈希连续碰撞检测方法,其特征在于,所述检测所述物理网格模型中的点-面碰撞对包括步骤:
遍历所述物理网格模型中各顶点;
获取各所述顶点在当前时刻至下一时刻之间的时间步长内扫过的轨迹;
获取所述轨迹的包围盒所覆盖到的所有空间网格;
判断所述轨迹是否与所述空间网格的包围盒相交;
若是,遍历所述空间网格中的所有三角形;
若否,则跳过;
判断所述顶点是否是所述三角形的顶点;
若是,则跳过,
若否,判断所述顶点与所述三角形是否已经检测过;
若是,则跳过;
若否,判断所述轨迹是否与所述三角形的包围盒相交;
若是,进行所述顶点与所述三角形的连续碰撞检测,生成点-面碰撞对约束关系,并将所述点-面碰撞对标记为已检测过;
若否,则跳过,并将所述点-面碰撞对标记为已检测过。
7.根据权利要求6所述的基于特征的空间哈希连续碰撞检测方法,其特征在于,所述判断所述顶点与所述三角形是否已经检测过包括步骤:
设置一个长度为三角形个数的整型数组和一个计时器;
当相交检测开始时将所述整型数组中的元素和所述计时器均重置为0;
当每遍历一个顶点时将所述计时器的值自增1;
判断所述整型数组的值是否等于所述计时器的当前值;
若是,判断所述顶点与所述三角形已经检测过;
若否,判断所述顶点与所述三角形未检测过。
8.根据权利要求5所述的基于特征的空间哈希连续碰撞检测方法,其特征在于,所述检测所述物理网格模型中的边-边碰撞对包括步骤:
遍历所述边哈希表;
对每个所述边哈希表中的任一两两边之间构成待检测边-边碰撞对;
判断任一所述待检测边-边碰撞对中两条边是否共顶点;
若是,则跳过;
若否,判断所述待检测边-边碰撞对是否已检测过;
若是,则跳过;
若否,判断两条所述边的扫掠体空间包围盒是否相交;
若是,进行边-边碰撞对连续碰撞检测,生成边-边碰撞对约束关系,并将所述边-边碰撞对标记为已检测过;
若否,则跳过,并将所述边-边碰撞对标记为已检测过。
9.根据权利要求8所述的基于特征的空间哈希连续碰撞检测方法,其特征在于,所述判断所述待检测边-边碰撞对是否已检测过包括步骤:
设置一个长度为(S+31)/32的无符号整型数组bihFlags;
获取所述无符号整型数组bihFlags的位索引号
Figure FDA0002903189810000041
判断所述位索引号是否为1;
若是,判断所述待检测边-边碰撞对已检测过;
若否,判断所述待检测边-边碰撞对未检测过;
其中,S=M(M-1)/2,M为所述物理网格模型中边的总数;i和j为所述待检测边-边碰撞对(ei,ej)的下角标。
10.根据权利要求1所述的基于特征的空间哈希连续碰撞检测方法,其特征在于,在所述基于各所述特征的空间哈希碰撞检测所述物理网格模型中实际发生碰撞的特征对之后还包括步骤:
将所述结构约束关系和所述碰撞约束关系一起做约束投影迭代;
修正所有所述质点的预测位置以满足所述结构约束关系和所述碰撞约束关系;
获取无碰撞状态时所有所述质点的位置;
使用所有所述质点的位置修正所有所述质点的速度;
根据所有所述质点的当前位置渲染得到图像。
CN202110062332.2A 2021-01-18 2021-01-18 一种基于特征的空间哈希连续碰撞检测方法 Active CN112802203B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110062332.2A CN112802203B (zh) 2021-01-18 2021-01-18 一种基于特征的空间哈希连续碰撞检测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110062332.2A CN112802203B (zh) 2021-01-18 2021-01-18 一种基于特征的空间哈希连续碰撞检测方法

Publications (2)

Publication Number Publication Date
CN112802203A true CN112802203A (zh) 2021-05-14
CN112802203B CN112802203B (zh) 2023-02-28

Family

ID=75810067

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110062332.2A Active CN112802203B (zh) 2021-01-18 2021-01-18 一种基于特征的空间哈希连续碰撞检测方法

Country Status (1)

Country Link
CN (1) CN112802203B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113609667A (zh) * 2021-07-30 2021-11-05 深圳市创想三维科技股份有限公司 模型布局方法、装置、计算机设备和存储介质

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040010346A1 (en) * 2002-07-11 2004-01-15 Stewart Paul Joseph Method of real-time collision detection between solid geometric models
CN1996388A (zh) * 2006-12-21 2007-07-11 上海交通大学 虚拟手术***中形变物体的实时冲突检测方法
CN102708017A (zh) * 2012-05-18 2012-10-03 浙江大学 一种基于非共线剔除的柔性场景连续碰撞检测方法
CN102722910A (zh) * 2012-05-18 2012-10-10 浙江大学 一种基于分离轴剔除的体网格场景连续碰撞检测方法
CN103324784A (zh) * 2013-05-30 2013-09-25 杭州电子科技大学 一种基于局部约束的网格模型碰撞处理方法
CN106407605A (zh) * 2016-11-01 2017-02-15 南京大学 一种三维服装的粒子化计算机动态仿真方法
CN107330972A (zh) * 2017-06-28 2017-11-07 华中科技大学鄂州工业技术研究院 模拟生物力学特性的实时软组织形变方法和***
CN110047143A (zh) * 2019-03-04 2019-07-23 南昌大学 一种基于空间细分与动态包围盒的连续碰撞检测方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040010346A1 (en) * 2002-07-11 2004-01-15 Stewart Paul Joseph Method of real-time collision detection between solid geometric models
CN1996388A (zh) * 2006-12-21 2007-07-11 上海交通大学 虚拟手术***中形变物体的实时冲突检测方法
CN102708017A (zh) * 2012-05-18 2012-10-03 浙江大学 一种基于非共线剔除的柔性场景连续碰撞检测方法
CN102722910A (zh) * 2012-05-18 2012-10-10 浙江大学 一种基于分离轴剔除的体网格场景连续碰撞检测方法
CN103324784A (zh) * 2013-05-30 2013-09-25 杭州电子科技大学 一种基于局部约束的网格模型碰撞处理方法
CN106407605A (zh) * 2016-11-01 2017-02-15 南京大学 一种三维服装的粒子化计算机动态仿真方法
CN107330972A (zh) * 2017-06-28 2017-11-07 华中科技大学鄂州工业技术研究院 模拟生物力学特性的实时软组织形变方法和***
CN110047143A (zh) * 2019-03-04 2019-07-23 南昌大学 一种基于空间细分与动态包围盒的连续碰撞检测方法

Non-Patent Citations (8)

* Cited by examiner, † Cited by third party
Title
MIN TANG等: "Collision-Streams: Fast GPU-based Collision Detection for Deformable Models", 《HTTP://GAMMA.CS.UNC.EDU/CSTREAMS/》 *
S. CURTIS等: "Fast collision detection for deformable models using representative-triangles. in: Proceedings of the 2008 symposium on Interactive 3D graphics and games", 《REDWOOD CITY》 *
周进广等: "应急仿真中的碰撞检测算法研究", 《计算机安全》 *
唐敏等: "图形硬件加速的柔性物体连续碰撞检测", 《计算机学报》 *
张龙涛等: "基于网格拓扑优化的连续碰撞检测算法", 《计算机工程》 *
朱丽丽等: "虚拟装配中快速碰撞检测算法的研究与实现", 《计算机应用》 *
王天柱: "变形物体碰撞检测技术研究", 《中国博士学位论文全文数据库 信息科技辑》 *
王鹏等: "基于OBB层次包围盒的碰撞检测算法改进", 《计算机工程与设计》 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113609667A (zh) * 2021-07-30 2021-11-05 深圳市创想三维科技股份有限公司 模型布局方法、装置、计算机设备和存储介质
CN113609667B (zh) * 2021-07-30 2024-03-15 深圳市创想三维科技股份有限公司 模型布局方法、装置、计算机设备和存储介质

Also Published As

Publication number Publication date
CN112802203B (zh) 2023-02-28

Similar Documents

Publication Publication Date Title
US10198847B2 (en) Physically based simulation methods for modeling and animating two-and three-dimensional deformable objects
Hu et al. Fast tetrahedral meshing in the wild
US7098907B2 (en) Method for converting explicitly represented geometric surfaces into accurate level sets
US8760450B2 (en) Real-time mesh simplification using the graphics processing unit
Ernst et al. Early split clipping for bounding volume hierarchies
JP6159807B2 (ja) 3次元シーンをレンダリングするためのコンピュータグラフィックス方法
Greß et al. GPU‐based collision detection for deformable parameterized surfaces
US20050210994A1 (en) Volumetric hair rendering
JP3416893B2 (ja) 3次元トポグラフィシミュレーションのための効率的頂点移動計算システム
US20130127895A1 (en) Method and Apparatus for Rendering Graphics using Soft Occlusion
CN112802203B (zh) 一种基于特征的空间哈希连续碰撞检测方法
Bender et al. Adaptive cloth simulation using corotational finite elements
Trusty et al. The shape matching element method: direct animation of curved surface models
CN105279788B (zh) 一种生成物体空间扫掠体的方法
Friston et al. Real-time collision detection for deformable characters with radial fields
Wiemann et al. Automatic Map Creation For Environment Modelling In Robotic Simulators.
WO2000041138A1 (fr) Systeme d&#39;absorption d&#39;erreur de donnees squelette a trois dimensions
Vyatkin An Interactive System for Modeling, Animating and Rendering of Functionally Defined Objects
Merrell et al. Constraint-based model synthesis
CN113591208A (zh) 一种基于舰船特征提取的超大模型轻量化方法及电子设备
CN104346822A (zh) 纹理贴图方法及装置
CN109979007A (zh) 一种建筑体的几何造型方法和装置
Svensson Real-time rendering of deformable snow covers
US8010330B1 (en) Extracting temporally coherent surfaces from particle systems
WO2024037116A1 (zh) 三维模型的渲染方法、装置、电子设备及存储介质

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
GR01 Patent grant
GR01 Patent grant