CN115293018B - 柔性体的碰撞检测方法、装置、计算机设备及存储介质 - Google Patents

柔性体的碰撞检测方法、装置、计算机设备及存储介质 Download PDF

Info

Publication number
CN115293018B
CN115293018B CN202211203142.9A CN202211203142A CN115293018B CN 115293018 B CN115293018 B CN 115293018B CN 202211203142 A CN202211203142 A CN 202211203142A CN 115293018 B CN115293018 B CN 115293018B
Authority
CN
China
Prior art keywords
collision
projection
virtual
point
unit
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.)
Active
Application number
CN202211203142.9A
Other languages
English (en)
Other versions
CN115293018A (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.)
Wuhan Glinsun Intelligent Technology Co ltd
Original Assignee
Wuhan Glinsun Intelligent Technology Co ltd
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 Wuhan Glinsun Intelligent Technology Co ltd filed Critical Wuhan Glinsun Intelligent Technology Co ltd
Priority to CN202211203142.9A priority Critical patent/CN115293018B/zh
Publication of CN115293018A publication Critical patent/CN115293018A/zh
Application granted granted Critical
Publication of CN115293018B publication Critical patent/CN115293018B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/25Design optimisation, verification or simulation using particle-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/08Projecting images onto non-planar surfaces, e.g. geodetic screens

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computational Mathematics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Analysis (AREA)
  • Algebra (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明实施例公开了一种柔性体的碰撞检测方法、装置、计算机设备及存储介质。该方法包括:选取两个柔性体的基础图元,并基于点‑面碰撞或边‑边碰撞生成每个所述柔性体的虚拟粒子;确定两个所述虚拟粒子在预设时间的初始位置点,并生成由两个所述初始位置点构成的第一向量;获取两个所述虚拟粒子在所述预设时间的路径向量,并确定两个所述路径向量在所述第一向量上的第一投影点;根据两个所述第一投影点之间的距离、两个所述虚拟粒子的碰撞半径之和对两个所述柔性体进行碰撞检测。本发明不仅可以方便的表达碰撞半径,而且还可以简化计算,极大的满足了柔性体碰撞的稳定性和实时性的要求,同时还统一了碰撞响应的处理方式。

Description

柔性体的碰撞检测方法、装置、计算机设备及存储介质
技术领域
本发明涉及碰撞检测技术领域,尤其涉及一种柔性体的碰撞检测方法、装置、计算机设备及存储介质。
背景技术
在基于物理的仿真动画、游戏引擎、机器人技术以及工程仿真中,模拟出物体之间的碰撞是一种必不可少的技术。其中,柔性体的碰撞检测可以用于布料的模拟,以确保布料以更加真实的方式运动。
通常碰撞包括碰撞检测和碰撞响应,其中,碰撞检测(物理引擎)又可进一步拆解为成Broad-Phase和Narrow-Phase两部分,Broad-Phase用于初步筛选可能发生碰撞的图元,Narrow-Phase用于精确的计算两个图元在每一帧的运动过程中,是否发生了碰撞,并计算其碰撞位置和碰撞时间点。
传统的柔性体碰撞检测在Narrow-Phase步骤中,通常会将运动的三角形的碰撞问题,转化为运动的点和运动的三角形碰撞问题,以及运动的三角形边和边之间的碰撞问题,其需要求解一个关于时间的三次方程,导致柔性体仿真过程无法实时响应。另外,如果考虑到粒子碰撞的半径,这该方程升级为五次方程,虽然可以精确的计算碰撞点和碰撞时间,但是五次方程的计算开销较大,而且当柔性体揉在一起或有多层覆盖时,严重的影响柔性体仿真的时效性。
发明内容
针对现有技术的不足,本发明提供了一种柔性体的碰撞检测方法、装置、计算机设备及存储介质,旨在解决现有技术中柔性体仿真过程无法实时响应的技术问题。
第一方面,本发明实施例提供了一种柔性体的碰撞检测方法,其包括:
选取两个柔性体的基础图元,并基于点-面碰撞或边-边碰撞生成每个所述柔性体的虚拟粒子;
确定两个所述虚拟粒子在预设时间的初始位置点,并生成由两个所述初始位置点构成的第一向量;
获取两个所述虚拟粒子在所述预设时间的路径向量,并确定两个所述路径向量在所述第一向量上的第一投影点;
根据两个所述第一投影点之间的距离、两个所述虚拟粒子的碰撞半径之和对两个所述柔性体进行碰撞检测。
第二方面,本发明实施例还提供了一种柔性体的碰撞检测装置,其包括:
选取单元,用于选取两个柔性体的基础图元,并基于点-面碰撞或边-边碰撞生成每个所述柔性体的虚拟粒子;
第一确定单元,用于确定两个所述虚拟粒子在预设时间的初始位置点,并生成由两个所述初始位置点构成的第一向量;
第一获取单元,用于获取两个所述虚拟粒子在所述预设时间的路径向量,并确定两个所述路径向量在所述第一向量上的第一投影点;
第一检测单元,用于根据两个所述第一投影点之间的距离、两个所述虚拟粒子的碰撞半径之和对两个所述柔性体进行碰撞检测。
第三方面,本发明实施例又提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如上述第一方面所述的柔性体的碰撞检测方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其中,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的柔性体的碰撞检测方法。
本发明实施例提供了一种柔性体的碰撞检测方法、装置、计算机设备及存储介质。该方法在点-面碰撞或边-边碰撞的基础上通过生成两个柔性体的虚拟粒子来模拟两个柔性体的运动,替代了传统方法中点-面碰撞或边-边碰撞的响应方法,其不仅可以方便的表达碰撞半径,而且还可以简化计算,极大的满足了柔性体碰撞的稳定性和实时性的要求,同时还统一了碰撞响应的处理方式。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的柔性体的碰撞检测方法的流程示意图;
图2为本发明实施例提供的三角形图元上顶点的投影结构示意图;
图3为本发明实施例提供的柔性体的碰撞检测方法的一流程示意图;
图4为本发明实施例提供的柔性体的碰撞检测方法的另一流程示意图;
图5为本发明实施例提供的柔性体的碰撞检测方法的另一流程示意图;
图6为本发明实施例提供的柔性体的碰撞检测方法的另一流程示意图;
图7为本发明实施例提供的柔性体的碰撞检测方法的另一流程示意图;
图8为本发明实施例提供的柔性体的碰撞检测装置的示意性框图;
图9为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/ 或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1,图1为本发明实施例提供的柔性体的碰撞检测方法的流程示意图。本发明实施例的所述的柔性体的碰撞检测方法应用于终端设备中,该方法通过安装于终端设备中的应用软件进行执行。其中,终端设备为具备接入互联网功能的终端设备,例如台式电脑、笔记本电脑、平板电脑或手机等终端设备。
下面对所述的柔性体的碰撞检测方法进行详细说明。
如图1所示,该方法包括以下步骤S110~S140。
S110、选取两个柔性体的基础图元,并基于点-面碰撞或边-边碰撞生成每个所述柔性体的虚拟粒子。
具体的,基础图元为柔性体在网格化后所形成的基础图形,在对柔性体进行仿真时,为了方便仿真计算,需要对柔性体(仿真的模拟对象)进行网格化,然后实时修改每个基础图元的位置来实现仿真动画。
通常在对柔性体进行碰撞检测时,需要进行Broad-Phase和Narrow-Phase两个步骤,其中,Broad-Phase主要用于初步筛选可能发生碰撞的图元,即本实施例中在选取两个柔性体的基础图元时,采用Broad-Phase筛选处可能发生碰撞的两个基础图元,然后将两个基础图元按照点-面碰撞或边-边碰撞的方式生成两个虚拟粒子。
在本实施例中,基础图元可以为三角形图元,当进行点-面碰撞时,如图2所示,可以将其中一个三角形图元的一个顶点投影至另一个三角形图元上,该顶点在另一个三角形图元上的投影点即为虚拟粒子。由于三角形图元具有三个顶点,且每个任意一个三角形图元的顶点均可投影至另外一个三角形图元上,故可以得到6种组合的虚拟粒子;当进行边-边碰撞时,可以通过各自的一条边生成一个虚拟粒子,进而可以得到9种组合的虚拟粒子。
在图2所示的实施例中,其为一对潜在的碰撞三角形图元,三角形P1P2P3的顶点P1在三角形Q1Q2Q3上的投影点为P点(即虚拟粒子),P点坐标可由三角形Q1Q2Q3的质心坐标(u,v,w)给出,而顶点P2、P3也可以通过投影生成两个虚拟粒子,可以得到三种组合,而三角形Q1Q2Q3的三个顶点分别向三角形P1P2P3投影,可以得到另外三种组合,因此可以得到6种组合的虚拟粒子同样的;同样的,边e0与三角形Q1Q2Q3的三条边e3、e4、e5得到三种组合,而e1和e2可以分别得到三种组合,进而可以得到9种组合的虚拟粒子。
其中,当进行点-面碰撞时,一个三角形图元的顶点在领域给三角形图元上的投影点可以作为一个虚拟粒子,而另一个虚拟粒子则为该顶点;当进行边-边碰撞时,可将两条边之间最短距离的两个点作为两个虚拟粒子,其虚拟粒子的坐标可以通过其对应两个顶点以及参数u、v得到,其中,u+v=1。
需要说明的是,本申请中提及的虚拟粒子可以为基础图元的顶点,也可以为基础图元的边上的点,还可以为基础图元内部的点。例如,(P1, P2, P3)可以为原始的基础图元的顶点的编号,若将基础图元的顶点作为网格粒子点,P1为网格点编号,P2, P3为-1,其为-1是程序语言使用习惯;对于将边上的点作为网格粒子点,P1, P2为边的端点的编号,P3为-1。
另外,对于由基础图元的顶点得到的虚拟粒子,其可以由(1,0,0)进行表示;对于基础图元的边上的虚拟粒子,其可以由(u,v,0)进行表示,其中u+v=1;对于基础图元内部的虚拟粒子,其可以由质心坐标(u,v,w)进行表示。
可以理解,本发明实施例提及的基础图元不仅仅局限于三角形图元,也可以为其他多边形图元,具体可以根据实际应用进行选择,本实施例中不做具体限定。
虚拟粒子的位置P、速度V、质量M以及碰撞半径可以通过如下公式进行计算:
P = P1 * u + P2* v + P3*w
V = V1 * u + V2 * v + V3*w
M = M1 * u + M2*v +M3*w
R = R1* u +R2*v +R3*w
在其他发明实施例中,如图3所示,步骤S110包括步骤S111和S112。
S111、将一个所述基础图元的顶点在另一个所述基础图元上进行投影,得到第二投影点;
S112、根据所述第二投影点生成所述虚拟粒子。
在本实施例中,基础图元为三角形图元,第二投影点为基础图元上任意一个顶点在另一个基础图元上投影的点,第二投影点可以直接作为一个虚拟粒子且可以采用质心坐标进行表征。例如,假设
Figure 693354DEST_PATH_IMAGE001
(三角形图元P1P2P3的顶点)在三角形图元Q1Q2Q3上的投影点为
Figure 887707DEST_PATH_IMAGE002
点(第二投影点),则
Figure 258645DEST_PATH_IMAGE002
点在三角形图元Q1Q2Q3上对应的质心坐标(u,v,w)的计算公式如下:
三角形图元Q1Q2Q3的边向量
Figure 191835DEST_PATH_IMAGE003
可通过三个顶点坐标计算得到,具体如下:
Figure 625221DEST_PATH_IMAGE004
则三角形的法向量
Figure 13477DEST_PATH_IMAGE005
为:
Figure 661759DEST_PATH_IMAGE006
Figure 454265DEST_PATH_IMAGE007
Figure 952112DEST_PATH_IMAGE008
Figure 878479DEST_PATH_IMAGE009
,则质心坐标(u,v,w)可以为:
Figure 568218DEST_PATH_IMAGE010
需要说明的是,公式
Figure 344675DEST_PATH_IMAGE011
为虚拟粒子的一般形式,当u +v+w = 1时,
Figure 142867DEST_PATH_IMAGE012
表示三角形平面上一点,(u,v,w)即三角形图元上的虚拟粒子;当u=1,v=0,w = 0时,
Figure 748291DEST_PATH_IMAGE013
表示三角形图元上某个顶点,(1,0,0)为网格粒子点,也就是虚拟粒子点;当u + v=1,w = 0时,
Figure 682749DEST_PATH_IMAGE014
表示边
Figure 394222DEST_PATH_IMAGE015
边上的一个点,(u,v,0)为网格粒子点,也就是虚拟粒子点。
在其他发明实施例中,如图4所示,步骤S112包括步骤S1121和S1122。
S1121、若所述第二投影点不位于另一个所述基础图元的内部,将所述顶点在另一个所述基础图元的每条边上进行投影,得到多个第三投影点;
S1122、根据所述第三投影点与所述顶点之间的距离生成所述虚拟粒子。
在本实施例中,在判断第二投影点是否在对应基础图元的内部时,只需通过第二投影点的质心坐标的三个分量是否位于0-1之间,若第二投影点的质心坐标的三个分量均在0-1之间,则第二投影点在对应基础图元的内部,此时便可以直接将所述第二投影点作为一个虚拟粒子;若第二投影点的质心坐标的至少一个分量不在0-1之间,则第二投影点不在对应基础图元的内部,此时需将该顶点在另一个基础图元的每条边上进行投影,并根据投影后生成的每个第三投影点与该顶点之间的距离生成虚拟粒子。
具体的,一个基础图元的顶点在另一个基础图元的每条边上进行投影后,均得到一个投影点,该投影点即为第三投影点,然后计算每个第三投影点与该顶点之间的距离,并将最短距离的第三投影点作为虚拟粒子。
在其他发明实施例中,如图5所示,步骤S110还包括步骤S113和S114。
S113、确定两个所述基础图元的边与边之间的最短距离;
S114、根据所述最短距离的两个点生成所述虚拟粒子。
在本实施例中,两个虚拟粒子是基于边-边碰撞生成的,即通过计算两个基础图元的边与边之间的最短距离,并将该最短距离所对应的直线与两条边相交的点作为两个虚拟粒子,两个虚拟粒子分别在各自基础图元的边上。
S120、确定两个所述虚拟粒子在预设时间的初始位置点,并生成由两个所述初始位置点构成的第一向量。
具体的,所述初始位置点为虚拟粒子在预设时间内进行运动的初始时刻的位置,每个虚拟粒子均具有一个初始位置点,两个初始位置点可以构建一个向量,即所述第一向量。
S130、获取两个所述虚拟粒子在所述预设时间的路径向量,并确定两个所述路径向量在所述第一向量上的第一投影点。
在本实施例中,所述第一投影点为虚拟粒子在预设时间内走过路径的端点在第一向量上的投影的点,所述路径向量用于表征虚拟粒子在预设时间内从初始时刻到结束时刻运动的路径。例如,若两个虚拟粒子在初始时刻的位置分别为
Figure 555076DEST_PATH_IMAGE016
,结束时刻的位置分别为
Figure 823247DEST_PATH_IMAGE017
Figure 503889DEST_PATH_IMAGE018
,则两个虚拟粒子的路径向量
Figure 464892DEST_PATH_IMAGE019
Figure 581883DEST_PATH_IMAGE020
可以分别为:
Figure 653745DEST_PATH_IMAGE021
S140、根据两个所述第一投影点之间的距离、两个所述虚拟粒子的碰撞半径之和对两个所述柔性体进行碰撞检测。
在本实施例中,通过将两个第一投影点之间的距离与两个虚拟粒子的碰撞半径之和进行比较,以检测出两个柔性体是否发生碰撞。具体的,当该距离大于两个虚拟粒子的碰撞半径之和,则碰撞未发生;当该距离小于两个虚拟粒子的碰撞半径之和,则碰撞发生。
在其他发明实施例中,如图6所示,步骤S140包括步骤S141和S142。
S141、若所述两个所述第一投影点之间的距离小于所述碰撞半径之和,构建点-面碰撞的运动方程;
S142、根据所述运动方程检测两个所述柔性体之间是否发生碰撞。
具体的,本实施例之所以采用两个柔性体粒子在投影方向上进行碰撞检测,其主要是基于两个柔性体粒子碰撞后,其投影法线必定会发生碰撞,但是其也会存在两个柔性体粒子实际上未发生碰撞,但其却在投影法线上发生碰撞,即存在误报的情况,为了避免误报,当两个第一投影点之间距离小于两个虚拟粒子的碰撞半径之和时,还需进一步检测两个柔性体粒子是否发生碰撞。
本实施例在两个第一投影点之间距离小于两个虚拟粒子的碰撞半径之和之后,通过建立点-面碰撞的运动方程,并通过判断运动方程是否存在解来检测两个柔性体之间是否发生碰撞。
具体的,通过建立
Figure 953008DEST_PATH_IMAGE022
点和三角形图元Q1Q2Q3运动方程,
Figure 819333DEST_PATH_IMAGE023
表示初始时刻的平均速度,
Figure 751517DEST_PATH_IMAGE024
分别表示在时间间隔
Figure 987588DEST_PATH_IMAGE025
内的平均速度,令
Figure 16724DEST_PATH_IMAGE026
Figure 663737DEST_PATH_IMAGE027
Figure 411113DEST_PATH_IMAGE028
Figure 746149DEST_PATH_IMAGE029
则三角形图元Q1Q2Q3的法线
Figure 505157DEST_PATH_IMAGE030
当发生碰撞时,
Figure 713285DEST_PATH_IMAGE031
其中
Figure 308476DEST_PATH_IMAGE032
为一个二次多项式,
Figure 932356DEST_PATH_IMAGE033
为一个一次多项式,故最终可以得到一个关于时间t的三次方程。
在其他发明实施例中,如图7所示,步骤S140之后,还包括步骤S150、S160和S170。
S150、若两个所述柔性体之间发生碰撞,获取所述虚拟粒子的法向上的穿透深度、切向上的运动深度以及所述柔性体的表面摩擦系数;
S160、根据所述穿透深度、所述运动深度以及所述表面摩擦系数对所述虚拟粒子进行切向运动修正和法向运动修正;
S170、根据动量守恒定律对所述虚拟粒子进行位置修正。
在本实施例中,在检测到两个柔性体之间发生碰撞后,需要进行碰撞响应,其具体通过计算结束时刻两个虚拟粒子的在初始位置连线上的投影距离,便可以近似得到碰撞在法向上的穿透深度,同时在切方向上的投影以得到切向运动深度,并通过模拟摩擦力效果进行切向上的运动深度修正,而对于穿透的虚拟粒子,只需在法向上进行修正,即将两个虚拟粒子挤出,以恢复到碰撞半径的距离即可。
具体的,通过计算结束时刻两个虚拟粒子的在初始位置连线的投影距离,即两个第一投影点之间的距离,其可以由路径向量
Figure 670505DEST_PATH_IMAGE034
可进行单位化后得到向量
Figure 970905DEST_PATH_IMAGE035
,则投影距离
Figure 302660DEST_PATH_IMAGE036
当投影距离小于两个虚拟粒子的碰撞半径之和(d<2r,其中r为碰撞半径)时,碰撞发生,此时可以令
Figure 58126DEST_PATH_IMAGE037
Figure 276880DEST_PATH_IMAGE038
其中,
Figure 92390DEST_PATH_IMAGE039
为虚拟粒子的法向上的穿透深度,
Figure 911441DEST_PATH_IMAGE040
Figure 205019DEST_PATH_IMAGE041
分别表示两个虚拟粒子的切向上的运动深度,
Figure 839132DEST_PATH_IMAGE042
Figure 700909DEST_PATH_IMAGE043
分别表示两个粒子质量的倒数。
在采用模拟摩擦力效果对虚拟粒子进行切向运动修正的过程中,以
Figure 131890DEST_PATH_IMAGE040
为例,令
Figure 589678DEST_PATH_IMAGE044
则向量
Figure 156926DEST_PATH_IMAGE045
的切向分量(即切向的深度)
Figure 986342DEST_PATH_IMAGE046
。当
Figure 29253DEST_PATH_IMAGE047
,可添加滑动摩擦得到修正后的位置
Figure 399054DEST_PATH_IMAGE048
其中kf为摩擦系数,kd为阻尼系数;当
Figure 227333DEST_PATH_IMAGE049
可添加静摩擦得到修正后的位置
Figure 289967DEST_PATH_IMAGE050
同样的,
Figure 44341DEST_PATH_IMAGE051
也可以进行相同的方式进行修正。
另外,由于一个虚拟粒子可能与多个虚拟粒子发生碰撞,故虚拟粒子进行切向运动修正和法向运动修正后,还需通过动量守恒定律进行位置修正。假如一个虚拟粒子有n对碰撞对,则碰撞后修正位置可以分别为
Figure 748992DEST_PATH_IMAGE052
根据动量守恒便可以得到虚拟粒子修正后的位置
Figure 166198DEST_PATH_IMAGE053
在其他发明实施例中,步骤S170之后还包括步骤:将所述位置修正映射至所述基础图元上,并根据所述动量守恒定律对所述基础图元的位置进行修正。
具体的,由于虚拟粒子在网格上是不存在的,故需要将虚拟粒子的位置修正映射至基础图元上,并根据动量守恒定律对基础图元的位置进行修正以算出基础图元的最终位置。
例如
Figure 321105DEST_PATH_IMAGE054
已知
Figure 948395DEST_PATH_IMAGE055
的值,则可令
Figure 597682DEST_PATH_IMAGE056
在本发明实施例所提供的柔性体的碰撞检测方法中,通过选取两个柔性体的基础图元,并基于点-面碰撞或边-边碰撞生成每个所述柔性体的虚拟粒子;确定两个所述虚拟粒子在预设时间的初始位置点,并生成由两个所述初始位置点构成的第一向量;获取两个所述虚拟粒子在所述预设时间的路径向量,并确定两个所述路径向量在所述第一向量上的第一投影点;根据两个所述第一投影点之间的距离、两个所述虚拟粒子的碰撞半径之和对两个所述柔性体进行碰撞检测。该方法通过选取两个柔性体的基础图元,并根据点-面碰撞或边-边碰撞生成对应的两个虚拟粒子,确定两个虚拟粒子在预设时间的初始位置点,并生成由两个初始位置点构成的第一向量;获取两个虚拟粒子在所述预设时间的路径向量,并确定两个路径向量在第一向量上的第一投影点;根据两个第一投影点之间的距离、两个虚拟粒子的碰撞半径之和实现对两个柔性体进行碰撞检测。该方法在点-面碰撞或边-边碰撞的基础上通过生成两个柔性体的虚拟粒子来模拟两个柔性体的运动,替代了传统方法中点-面碰撞或边-边碰撞的响应方法,其不仅可以方便的表达碰撞半径,而且还可以简化计算,极大的满足了柔性体碰撞的稳定性和实时性的要求,同时还统一了碰撞响应的处理方式。
本发明实施例还提供了一种柔性体的碰撞检测装置100,该装置用于执行前述柔性体的碰撞检测方法的任一实施例。
具体地,请参阅图8,图8是本发明实施例提供的柔性体的碰撞检测装置100的示意性框图。
如图8所示,所述的柔性体的碰撞检测装置100,该装置包括:选取单元110、第一确定单元120、第一获取单元130、第一检测单元140。
选取单元110,用于选取两个柔性体的基础图元,并基于点-面碰撞或边-边碰撞生成每个所述柔性体的虚拟粒子。
在其他发明实施例中,选取单元110包括:第一投影单元和第一生成单元。
第一投影单元,用于将一个所述基础图元的顶点在另一个所述基础图元上进行投影,得到第二投影点;第一生成单元,用于根据所述第二投影点生成所述虚拟粒子。
在其他发明实施例中,第一生成单元包括:第二投影单元和第二生成单元。
第二投影单元,用于若所述第二投影点不位于另一个所述基础图元的内部,将所述顶点在另一个所述基础图元的每条边上进行投影,得到第三投影点;第二生成单元,用于根据所述第三投影点与所述顶点之间的距离生成所述虚拟粒子。
在其他发明实施例中,选取单元110还包括:第二确定单元和第三生成单元。
第二确定单元,用于确定两个所述基础图元的边与边之间的最短距离;第三生成单元,用于根据所述最短距离的两个点生成所述虚拟粒子。
第一确定单元120,用于确定两个所述虚拟粒子在预设时间的初始位置点,并生成由两个所述初始位置点构成的第一向量。
第一获取单元130,用于获取两个所述虚拟粒子在所述预设时间的路径向量,并确定两个所述路径向量在所述第一向量上的第一投影点。
第一检测单元140,用于根据两个所述第一投影点之间的距离、两个所述虚拟粒子的碰撞半径之和对两个所述柔性体进行碰撞检测。
在其他发明实施例中,第一检测单元140包括:构建单元和第二检测单元。
构建单元,用于若所述两个所述第一投影点之间的距离小于所述碰撞半径之和,构建点-面碰撞的运动方程;第二检测单元,用于根据所述运动方程检测两个所述柔性体之间是否发生碰撞。
在其他发明实施例中,柔性体的碰撞检测装置100还包括:第二获取单元、第一修正单元、第二修正单元、映射单元和第三修正单元。
第二获取单元,用于若两个所述柔性体之间发生碰撞,获取所述虚拟粒子的法向上的穿透深度、切向上的运动深度以及所述柔性体的表面摩擦系数。
第一修正单元,用于根据所述穿透深度、所述运动深度以及所述表面摩擦系数对所述虚拟粒子进行切向运动修正和法向运动修正。
第二修正单元,用于根据动量守恒定律对所述虚拟粒子进行位置修正。
第三修正单元,用于将所述位置修正映射至所述基础图元上,并根据所述动量守恒定律对所述基础图元的位置进行修正。
本发明实施例所提供的柔性体的碰撞检测装置100用于执行上述选取两个柔性体的基础图元,并基于点-面碰撞或边-边碰撞生成每个所述柔性体的虚拟粒子;确定两个所述虚拟粒子在预设时间的初始位置点,并生成由两个所述初始位置点构成的第一向量;获取两个所述虚拟粒子在所述预设时间的路径向量,并确定两个所述路径向量在所述第一向量上的第一投影点;根据两个所述第一投影点之间的距离、两个所述虚拟粒子的碰撞半径之和对两个所述柔性体进行碰撞检测。
需要说明的是,所属领域的技术人员可以清楚地了解到,上述柔性体的碰撞检测装置100和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。
上述柔性体的碰撞检测装置可以实现为一种计算机程序的形式,该计算机程序可以在如图9所示的计算机设备上运行。
请参阅图9,图9是本发明实施例提供的计算机设备的示意性框图。
参阅图9,该设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括存储介质503和内存储器504。
该存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032被执行时,可使得处理器502执行柔性体的碰撞检测方法。
该处理器502用于提供计算和控制能力,支撑整个设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行柔性体的碰撞检测方法。
该网络接口505用于进行网络通信,如提供数据信息的传输等。本领域技术人员可以理解,图9中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的设备500的限定,具体的设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现如下功能:选取两个柔性体的基础图元,并基于点-面碰撞或边-边碰撞生成每个所述柔性体的虚拟粒子;确定两个所述虚拟粒子在预设时间的初始位置点,并生成由两个所述初始位置点构成的第一向量;获取两个所述虚拟粒子在所述预设时间的路径向量,并确定两个所述路径向量在所述第一向量上的第一投影点;根据两个所述第一投影点之间的距离、两个所述虚拟粒子的碰撞半径之和对两个所述柔性体进行碰撞检测。
本领域技术人员可以理解,图9中示出的设备500的实施例并不构成对设备500具体构成的限定,在其他实施例中,设备500可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,设备500可以仅包括存储器及处理器502,在这样的实施例中,存储器及处理器502的结构及功能与图9所示实施例一致,在此不再赘述。
应当理解,在本发明实施例中,处理器502可以是中央处理单元 (CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器502、数字信号处理器502(Digital Signal Processor,DSP)、专用集成电路 (Application Specific IntegratedCircuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器502可以是微处理器502或者该处理器502也可以是任何常规的处理器502等。
在本发明的另一实施例中提供计算机存储介质。该存储介质可以为非易失性的计算机可读存储介质,也可以是易失性的存储介质。该存储介质存储有计算机程序5032,其中计算机程序5032被处理器502执行时实现以下步骤:选取两个柔性体的基础图元,并基于点-面碰撞或边-边碰撞生成每个所述柔性体的虚拟粒子;确定两个所述虚拟粒子在预设时间的初始位置点,并生成由两个所述初始位置点构成的第一向量;获取两个所述虚拟粒子在所述预设时间的路径向量,并确定两个所述路径向量在所述第一向量上的第一投影点;根据两个所述第一投影点之间的距离、两个所述虚拟粒子的碰撞半径之和对两个所述柔性体进行碰撞检测。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为逻辑功能划分,实际实现时可以有另外的划分方式,也可以将具有相同功能的单元集合成一个单元,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台设备500 ( 可以是个人计算机,服务器,或者网络设备等 ) 执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U 盘、移动硬盘、只读存储器 (ROM,Read-Only Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

Claims (7)

1.一种柔性体的碰撞检测方法,其特征在于,包括:
选取两个柔性体的基础图元,并基于点-面碰撞或边-边碰撞生成每个所述柔性体的虚拟粒子;
确定两个所述虚拟粒子在预设时间的初始位置点,并生成由两个所述初始位置点构成的第一向量;
获取两个所述虚拟粒子在所述预设时间的路径向量,并确定两个所述路径向量在所述第一向量上的第一投影点;
根据两个所述第一投影点之间的距离、两个所述虚拟粒子的碰撞半径之和对两个所述柔性体进行碰撞检测;
其中,所述基于点-面碰撞或边-边碰撞生成每个所述柔性体的虚拟粒子,包括:
将一个所述基础图元的顶点在另一个所述基础图元上进行投影,得到第二投影点;
根据所述第二投影点生成所述虚拟粒子;
其中,所述根据所述第二投影点生成所述虚拟粒子,包括:
若所述第二投影点不位于另一个所述基础图元的内部,将所述顶点在另一个所述基础图元的每条边上进行投影,得到第三投影点;
根据所述第三投影点与所述顶点之间的距离生成所述虚拟粒子;
其中,所述根据两个所述第一投影点之间的距离、两个所述虚拟粒子的碰撞半径之和对两个所述柔性体进行碰撞检测,包括:
若所述两个所述第一投影点之间的距离小于所述碰撞半径之和,构建点-面碰撞的运动方程;
根据所述运动方程检测两个所述柔性体之间是否发生碰撞。
2.根据权利要求1所述的柔性体的碰撞检测方法,其特征在于,所述基于点-面碰撞或边-边碰撞生成每个所述柔性体的虚拟粒子,包括:
确定两个所述基础图元的边与边之间的最短距离;
根据所述最短距离的两个点生成所述虚拟粒子。
3.根据权利要求1所述的柔性体的碰撞检测方法,其特征在于,在所述根据两个所述第一投影点之间的距离、两个所述虚拟粒子的碰撞半径之和对两个所述柔性体进行碰撞检测之后,还包括:
若两个所述柔性体之间发生碰撞,获取所述虚拟粒子的法向上的穿透深度、切向上的运动深度以及所述柔性体的表面摩擦系数;
根据所述穿透深度、所述运动深度以及所述表面摩擦系数对所述虚拟粒子进行切向运动修正和法向运动修正;
根据动量守恒定律对所述虚拟粒子进行位置修正。
4.根据权利要求3所述的柔性体的碰撞检测方法,其特征在于,在所述根据动量守恒定律对所述虚拟粒子进行位置修正之后,还包括:
将所述位置修正映射至所述基础图元上,并根据所述动量守恒定律对所述基础图元的位置进行修正。
5.一种柔性体的碰撞检测装置,其特征在于,包括:
选取单元,用于选取两个柔性体的基础图元,并基于点-面碰撞或边-边碰撞生成每个所述柔性体的虚拟粒子;
第一确定单元,用于确定两个所述虚拟粒子在预设时间的初始位置点,并生成由两个所述初始位置点构成的第一向量;
第一获取单元,用于获取两个所述虚拟粒子在所述预设时间的路径向量,并确定两个所述路径向量在所述第一向量上的第一投影点;
第一检测单元,用于根据两个所述第一投影点之间的距离、两个所述虚拟粒子的碰撞半径之和对两个所述柔性体进行碰撞检测;
选取单元包括第一投影单元和第一生成单元;
第一投影单元,用于将一个所述基础图元的顶点在另一个所述基础图元上进行投影,得到第二投影点;第一生成单元,用于根据所述第二投影点生成所述虚拟粒子;
第一生成单元包括第二投影单元和第二生成单元;
第二投影单元,用于若所述第二投影点不位于另一个所述基础图元的内部,将所述顶点在另一个所述基础图元的每条边上进行投影,得到第三投影点;第二生成单元,用于根据所述第三投影点与所述顶点之间的距离生成所述虚拟粒子;
第一检测单元包括构建单元和第二检测单元;
构建单元,用于若所述两个所述第一投影点之间的距离小于所述碰撞半径之和,构建点-面碰撞的运动方程;第二检测单元,用于根据所述运动方程检测两个所述柔性体之间是否发生碰撞。
6.一种计算机设备,其特征在于,包括存储器、处理器及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1至4中任一项所述的柔性体的碰撞检测方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至4任一项所述的柔性体的碰撞检测方法。
CN202211203142.9A 2022-09-29 2022-09-29 柔性体的碰撞检测方法、装置、计算机设备及存储介质 Active CN115293018B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211203142.9A CN115293018B (zh) 2022-09-29 2022-09-29 柔性体的碰撞检测方法、装置、计算机设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211203142.9A CN115293018B (zh) 2022-09-29 2022-09-29 柔性体的碰撞检测方法、装置、计算机设备及存储介质

Publications (2)

Publication Number Publication Date
CN115293018A CN115293018A (zh) 2022-11-04
CN115293018B true CN115293018B (zh) 2022-12-27

Family

ID=83834738

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211203142.9A Active CN115293018B (zh) 2022-09-29 2022-09-29 柔性体的碰撞检测方法、装置、计算机设备及存储介质

Country Status (1)

Country Link
CN (1) CN115293018B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009003895A (ja) * 2007-06-25 2009-01-08 Nippon Telegr & Teleph Corp <Ntt> 対象物衝突模擬装置、その方法、そのプログラム、及びその記録媒体
CN101866386A (zh) * 2010-06-25 2010-10-20 杭州维肖软件科技有限公司 一种基于能量平衡的柔性体碰撞处理方法
CN103559741A (zh) * 2013-11-25 2014-02-05 武汉大学 虚拟手术中基于粒子的多相耦合方法
CN107134001A (zh) * 2017-05-26 2017-09-05 厦门幻世网络科技有限公司 用于3d动画材料的图像处理的方法、装置、设备及介质
CN110765565A (zh) * 2018-07-25 2020-02-07 真玫智能科技(深圳)有限公司 一种布料仿真碰撞的方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120065947A1 (en) * 2010-09-09 2012-03-15 Jiun-Der Yu Collision Effect And Particle Information Update In Particulate Fluid Flow Simulations
CN102194248A (zh) * 2011-05-05 2011-09-21 上海大学 基于增强现实的虚实碰撞检测及响应方法
CN104461690B (zh) * 2014-12-05 2017-10-17 国家电网公司 一种电力设备运行仿真系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009003895A (ja) * 2007-06-25 2009-01-08 Nippon Telegr & Teleph Corp <Ntt> 対象物衝突模擬装置、その方法、そのプログラム、及びその記録媒体
CN101866386A (zh) * 2010-06-25 2010-10-20 杭州维肖软件科技有限公司 一种基于能量平衡的柔性体碰撞处理方法
CN103559741A (zh) * 2013-11-25 2014-02-05 武汉大学 虚拟手术中基于粒子的多相耦合方法
CN107134001A (zh) * 2017-05-26 2017-09-05 厦门幻世网络科技有限公司 用于3d动画材料的图像处理的方法、装置、设备及介质
CN110765565A (zh) * 2018-07-25 2020-02-07 真玫智能科技(深圳)有限公司 一种布料仿真碰撞的方法及装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
虚拟穿衣中织物模型的建立和碰撞检测的处理;高成英等;《计算机应用》;20020528(第05期);全文 *

Also Published As

Publication number Publication date
CN115293018A (zh) 2022-11-04

Similar Documents

Publication Publication Date Title
Lin et al. Collision and proximity queries
Choi et al. Continuous collision detection for ellipsoids
Weller New geometric data structures for collision detection and haptics
US10984573B2 (en) Collision detection and resolution in virtual environments
US8698799B2 (en) Method and apparatus for rendering graphics using soft occlusion
US20080001947A1 (en) Soft shadows in dynamic scenes
Wang et al. Efficient and Reliable Self‐Collision Culling Using Unprojected Normal Cones
US10242498B1 (en) Physics based garment simulation systems and methods
Hubbard Real-time collision detection and time-critical computing
Friston et al. Real-time collision detection for deformable characters with radial fields
Vyatkin Method of binary search for image elements of functionally defined objects using graphics processing units
Mendoza et al. Interruptible collision detection for deformable objects
CN115293018B (zh) 柔性体的碰撞检测方法、装置、计算机设备及存储介质
US20150325028A1 (en) Method and system for representing objects with velocity-dependent particles
CN111265874B (zh) 游戏中目标物的建模方法、装置、设备及存储介质
Zesch et al. Neural collision detection for deformable objects
JP2008059375A (ja) 情報処理方法、情報処理装置
O'Sullivan et al. Collision Handling for Virtual Environments.
CN112802165A (zh) 游戏场景积雪渲染方法、装置及介质
US20180189996A1 (en) Animating a virtual object
Madera et al. A hybrid bounding volume algorithm to detect collisions between deformable objects
Simnett et al. An Edge-based Approach to Adaptively Refining a Mesh for Cloth Deformation.
CN109542302A (zh) 一种显示对象的数字模型化组件的子集的由计算机实施的方法
Woulfe et al. A framework for benchmarking interactive collision detection
Hou et al. A prediction method using interpolation for smooth six-DOF haptic rendering in multirate simulation

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