CN104778332A - 一种衣物自碰撞检测低层裁剪优化方法 - Google Patents
一种衣物自碰撞检测低层裁剪优化方法 Download PDFInfo
- Publication number
- CN104778332A CN104778332A CN201510204509.2A CN201510204509A CN104778332A CN 104778332 A CN104778332 A CN 104778332A CN 201510204509 A CN201510204509 A CN 201510204509A CN 104778332 A CN104778332 A CN 104778332A
- Authority
- CN
- China
- Prior art keywords
- primitive
- bounding box
- pair
- triangle
- coplanar
- 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
Landscapes
- Image Analysis (AREA)
Abstract
本发明公开了一种衣物自碰撞检测低层裁剪优化方法,在衣物动态仿真的自碰撞检测过程中,通过基元对层面的低层裁剪,裁剪掉冗余和不可能发生碰撞的基元对,得到所有可能发生碰撞的候选基元对。其步骤是(1)进行基于特征分配的低层裁剪优化。通过特征分配裁剪掉冗余的基元对,在对候选三角形对分配基元对时,进行基元包围盒相交测试,裁剪掉包围盒不相交的基元对;(2)进行基于不共面过滤器的低层裁剪优化,通过不共面测试,过滤掉时间步长内不发生共面的基元对,进一步较少候选基元对的数量,提高自碰撞检测的效率。
Description
技术领域
本发明涉及一种衣物自碰撞检测低层裁剪优化方法,属于虚拟衣物仿真技术领域。
背景技术
在衣物动态仿真过程中,碰撞检测是最耗时的部分。碰撞检测过程中,首先需要检测出所有发生碰撞的三角形对,然后对每个三角形对分配基元对进行后续基本相交测试。在每个时间步长内,需要判断网格的顶点与三角形、边与边之间的碰撞情况,对于N个顶点的衣物网格,进行自碰撞检测的时间复杂度是O(N2)。碰撞检测成为衣物动态仿真过程中的主要瓶颈,为了对自碰撞检测进行优化,研究者们提出一系列优化方法,分为三角形层面的高层裁剪方法和基元对层面的低层裁剪方法。
在以往的研究工作中,低层裁剪最简单的方法是,在分配过程中维护两个数据库,分别记录已经进行基本相交测试的VF基元对和EE基元对。Hutter和Fuhrmann提出基元包围盒的方法,碰撞检测过程中使用基元层次包围盒代替三角形层次包围盒,能够有效的裁剪掉不发生碰撞的基元对。Curtis提出代表三角形机制,通过将每个基元特征惟一的分配给一个包含它的三角形,消除冗余的基元对。Tang通过建立孤立集对邻接三角形对的基元对进行裁剪,邻接三角形对未被非邻接三角形对包含的基元对构成孤立集中的元素。除此之外,Tang等人提出过滤器的方法,过滤掉不发生共面的基元对。通过计算基元对在时间步长内的投影距离进行不共面测试,若基元对不发生共面,则不会发生碰撞,可以直接裁剪掉,无需进行基本相交测试。
以往自碰撞检测低层裁剪方法主要存在以下问题:
(1)基本低层裁剪方法实现简单,能够有效的消除重复的基元对基本相交测试,但对每个候选三角形对分配基元对时,需要查询数据库,时间开销大,影响自碰撞检测的效率。
(2)基元层次包围盒方法需要维护多个基元层次包围盒,影响仿真效率。
针对以上问题,本发明对虚拟衣物仿真技术和自碰撞检测低层裁剪方法做了进一步的研究,一种基于衣物自碰撞检测低层裁剪优化方法,其核心内容可以总结为:低层裁剪阶段,首先进行基于特征分配的低层裁剪优化,通过代表三角形的特征分配机制,裁剪掉冗余的基元对,在对候选三角形对分配基元对时进行基元包围盒相交测试,裁剪掉基元包围盒不相交的基元对。在此基础上,进行基于不共面过滤器的低层裁剪优化,通过不共面测试,裁剪掉时间步长内不发生共面的基元对。
发明内容
本发明要解决的技术问题是:克服现有技术的不足,提供一种衣物自碰撞检测低层裁剪优化方法,针对虚拟衣物仿真这一具体应用给出一种全新的自碰撞检测优化方法。
本发明采用的技术方案:首先进行基于特征分配的低层裁剪优化,在此基础上,进行基于不共面过滤器的低层裁剪优化。
该方案实现的步骤:
(1)进行基于特征分配的低层裁剪优化。通过特征分配裁剪掉冗余的基元对,在对候选三角形对分配基元对时,进行基元包围盒相交测试,裁剪掉包围盒不相交的基元对;
(2)进行基于不共面过滤器的低层裁剪优化,通过不共面测试,过滤掉时间步长内不发生共面的基元对,进一步较少候选基元对的数量,提高自碰撞检测的效率;
本发明与现有技术相比的有益效果是:
本发明的低层裁剪优化方法能够有效的裁剪掉了冗余和不发生碰撞的基元对,减少了进行后续基本相交测试的基元对的数量,提高了自碰撞检测的效率。
附图说明
图1一种衣物自碰撞检测低层裁剪优化方法步骤示意图;
图2基本低层裁剪实验结果示意图;
图3基于特征分配的低层裁剪优化结果示意图;
图4基于不共面过滤器的低层裁剪优化结果示意图。
具体实施方式
下面结合附图及具体实施方式对本发明进一步详细说明。
(1)进行基于特征分配的低层裁剪优化。通过特征分配裁剪掉冗余的基元对,在对候选三角形对分配基元对时,进行基元包围盒相交测试,裁剪掉包围盒不相交的基元对;
第一步,预处理阶段,对网格进行特征分配。
每个三角形的数据结构中增加两个属性,分别用来记录该三角形分配到的特征顶点和特征边的数量。对网格进行特征分配,分配过程使用贪婪算法,依次遍历每个三角形,如果该三角形存在未被分配的基元(顶点、边),则将其分配给该三角形。特征分配过程中,对每个三角形的顶点列表和边列表进行重新排序,使得分配到的特征基元位于顶点/边列表的前面部分。
第二步,碰撞检测阶段,每个时间步长,对高层裁剪得到的候选三角形对,分配进行后续基本相交测试的候选基元对。
首先判断候选三角形对是否包含可兼容的特征对,如果至少有一个三角形分配到一个或多个顶点或者两个三角形都分配到一条或多条边,则该三角形对包含可兼容的特征对,继续第二步。如果两个三角形不包含可兼容的特征对,则跳过该三角形对。
第三步,分配候选基元对时,进行基元包围盒的相交测试。
1、三角形A代表的每个顶点与三角形B进行VF基元包围盒相交测试,若基元包围盒相交,则构成一个VF候选基元对;
2、三角形B代表的每个顶点与三角形A进行VF基元包围盒相交测试,若基元包围盒相交,则构成一个VF候选基元对;
3、三角形A代表的每个特征边分别与三角形B代表的每个特征边进行EE基元包围盒的相交测试,若基元包围盒相交,则构成一个EE候选基元对。
EE基元包围盒的相交测试,每个时间步长,首先分别构建两条边的AABB包围盒,然后进行AABB包围盒相交测试即可。VF基元包围盒相交测试,由于连续碰撞检测的每个时间步长内,顶点的轨迹是一条线段,线段的AABB包围盒紧凑型差,进行包围盒相交测试的裁剪效率不高,所以进行VF基元包围盒相交测试时,直接用线段与三角形包围盒进行相交测试。使用分离轴的方法进行线段与包围盒的相交测试。
(2)进行基于不共面过滤器的低层裁剪优化,通过不共面测试,过滤掉时间步长内不发生共面的基元对,进一步较少候选基元对的数量,提高自碰撞检测的效率。
第一步,在碰撞检测阶段,每个时间步长,通过计算基元对的投影距离,对VF基元对进行不共面测试。设时间步长[0,1]的起点、终点、任意时刻顶点P位置分别为P0、P1、Pt,三角形T的三个顶点位置分别为(a0,b0,c0)、(a1,b1,c1)、(at,bt,ct)。
首先,时间步长归一化为[0,1],每个顶点的速度乘以时间步长△t;
其次,计算步长内三角形法向量的三个控制点n0、n1、计算公式如下:
n0=(b0-a0)×(c0-a0)n1=(b1-a1)×(c1-a1)
最后,求出投影距离的四个控制标量A、B、2*C+F、2*D+E的值,判断它们的符号是否相同,即同时为正或者同时为负,如果四个标量的符号相同,则VF基元对不会发生共面。定义符号A、B、C、D、E、F如下:
A=(P0-a0)·n0B=(P1-a1)·n1
E=(P0-a0)·n1F=(P1-a1)·n0
第二步,在碰撞检测阶段,每个时间步长,通过计算基元对的投影距离,对EE基元对进行不共面测试。
对于EE基元对,分别用两条边的四个顶点,替代VF基元对中的四个顶点,进行不共面测试,求出投影距离的四个控制标量A'、B'、2*C'+F'、2*D'+E'的值,判断符号是否相同,如果四个标量的符号相同,即同时为正号或者同时为负号,则EE基元对不会发生共面。
基本低层裁剪实验:图2展示了基本低层裁剪的实验结果,白色顶点和三角形用于标记VF基元对,白色的边用来标记EE基元对。在对候选三角形对分配基元对时,基本低层裁剪方法维护两个数据库,分别记录已经分配的VF基元对和EE基元对,以此来裁减掉重复的基元对。由实验结果可以看出,基本低层裁剪方法,检测出的候选VF基元对和EE基元对的数量分别是1122和2056,帧率是14.25。候选基元对包括由高层裁剪得到的候选三角形对分配的基元对和孤立集中的基元对。
低层裁剪优化实验一:图3展示了基于特征分配的低层裁剪优化的实验结果。由实验结果可以看出,本文基于特征分配的低层裁剪优化方法,检测出的候选VF基元对和EE基元对的数量分别是74和475,帧率是30.58。由实验结果可知,相对于基本低层裁剪方法,该方法能够大幅提高裁剪效率,同时仿真帧率提高了2倍多。
低层裁剪优化实验二:图4展示了基于不共面过滤器的低层裁剪优化的实验结果。由实验结果可以看出,经过基于不共面过滤器的裁剪优化,检测出的候选VF基元对和EE基元对的数量分别是31和137,帧率是32.55。由实验结果可知,在基于特征分配的低层裁剪的基础上,进行基于不共面过滤器的裁剪优化,能够有效的裁剪掉不发生共面的基元对,进一步减少了候选基元对的数量。
上述基本低层裁剪及优化实验结果表明,本文的低层裁剪优化方法能够有效的裁剪掉冗余和不发生碰撞的基元对,进一步提高了自碰撞检测的效率。
Claims (3)
1.一种衣物自碰撞检测低层裁剪优化方法,其特征在于通过以下步骤实现:
(1)进行基于特征分配的低层裁剪优化,通过特征分配裁剪掉冗余的基元对,在对候选三角形对分配基元对时,进行基元包围盒相交测试,裁剪掉包围盒不相交的基元对;
(2)进行基于不共面过滤器的低层裁剪优化,通过不共面测试,过滤掉时间步长内不发生共面的基元对,进一步较少候选基元对的数量,提高自碰撞检测的效率。
2.根据权利要求1所述的一种衣物自碰撞检测低层裁剪优化方法,其特征在于:所述步骤(1)中的进行基于特征分配的低层裁剪优化,通过特征分配裁剪掉冗余的基元对,在对候选三角形对分配基元对时,进行基元包围盒相交测试,裁剪掉包围盒不相交的基元对方法如下:
(2.1)预处理阶段,对网格进行特征分配;分配原则如下:
(2.1.1)每个基元特征,必须分配给一个三角形;
(2.1.2)每个基元特征,只能分配给一个三角形;
(2.1.3)每个基元特征,只能分配给包含它的三角形;
以上分配原则保证了每个基元特征都唯一分配给一个包含它的三角形;
(2.2)碰撞检测阶段,每个时间步长,对高层裁剪得到的候选三角形对,分配进行后续基本相交测试的候选基元对;
(2.3)分配候选基元对时,进行基元包围盒的相交测试:
(2.3.1)三角形A代表的每个顶点与三角形B进行VF基元包围盒相交测试,若基元包围盒相交,则构成一个VF候选基元对;
(2.3.2)三角形B代表的每个顶点与三角形A进行VF基元包围盒相交测试,若就按包围盒相交,则构成一个VF候选基元对;
(2.3.3)三角形A代表的每个特征边分别与三角形B代表的每个特征边进行EE基元包围盒的相交测试,若基元包围盒相交,则构成一个EE候选基元对;
对于EE基元包围盒相交测试,在每个时间步长内,分别构建两边的AABB包围盒,然后进行AABB包围盒相交测试即可;对于VF基元包围盒相交测试,由于连续碰撞检测的每个时间步长内,顶点的轨迹是一条线段,线段的AABB包围盒紧凑型差,进行包围盒相交测试的裁剪效率不高,所以进行VF基元包围盒相交测试时,直接用线段与三角形包围盒进行相交测试。
3.根据权利要求1所述的一种衣物自碰撞检测低层裁剪优化方法,其特征在于:所述步骤(2)中的进行基于不共面过滤器的低层裁剪优化,通过不共面测试,过滤掉时间步长内不发生共面的基元对,进一步较少候选基元对的数量,提高自碰撞检测的效率方法如下:
(3.1)在碰撞检测阶段,每个时间步长,通过计算基元对的投影距离,对VF基元对进行不共面测试;如果在整个时间步长内顶点与三角形没有发生共面,也就不会发生相交;对于VF基元对,为了判断四个顶点的共面性,需要计算它们在法向量方向的投影距离;设时间步长内的任意时刻顶点P的位置为Pt,三角形的三个顶点位置为at,bt,ct,法向量为nt,则投影距离可以表示为(Pt-at)·nt,若投影距离为0,则VF基元对的四个顶点在时间步长内发生共面,否则不发生共面;
(3.2)在碰撞检测阶段,每个时间步长,通过计算基元对的投影距离,对EE基元对进行不共面测试;设时间步长内任意时刻两条边的四个顶点位置为ut,vt,kt,lt,为了检测四个顶点的共面性,需要计算投影距离,EE基元对投影距离的计算方式同VF基元对相同,分别用lt、kt、ut、vt代替Pt、at、bt、ct,则EE基元对的投影距离可以表示为(lt-kt)·nt,其中nt为kt、ut、vt三个顶点形成的三角形的法向量;如果EE基元对的投影距离为0,则EE基元对在时间步长内部发生共面,否则不发生共面。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510204509.2A CN104778332A (zh) | 2015-04-27 | 2015-04-27 | 一种衣物自碰撞检测低层裁剪优化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510204509.2A CN104778332A (zh) | 2015-04-27 | 2015-04-27 | 一种衣物自碰撞检测低层裁剪优化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104778332A true CN104778332A (zh) | 2015-07-15 |
Family
ID=53619793
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510204509.2A Pending CN104778332A (zh) | 2015-04-27 | 2015-04-27 | 一种衣物自碰撞检测低层裁剪优化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104778332A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115056215A (zh) * | 2022-05-20 | 2022-09-16 | 梅卡曼德(北京)机器人科技有限公司 | 碰撞检测方法、控制方法、抓取***及计算机存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101398942A (zh) * | 2008-04-24 | 2009-04-01 | 中山大学 | 三维试衣仿真*** |
CN101984443A (zh) * | 2010-11-10 | 2011-03-09 | 北京航空航天大学 | 一种改进的柔性织物碰撞处理方法 |
US8284188B1 (en) * | 2007-10-29 | 2012-10-09 | Nvidia Corporation | Ray tracing system, method, and computer program product for simultaneously traversing a hierarchy of rays and a hierarchy of objects |
-
2015
- 2015-04-27 CN CN201510204509.2A patent/CN104778332A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8284188B1 (en) * | 2007-10-29 | 2012-10-09 | Nvidia Corporation | Ray tracing system, method, and computer program product for simultaneously traversing a hierarchy of rays and a hierarchy of objects |
CN101398942A (zh) * | 2008-04-24 | 2009-04-01 | 中山大学 | 三维试衣仿真*** |
CN101984443A (zh) * | 2010-11-10 | 2011-03-09 | 北京航空航天大学 | 一种改进的柔性织物碰撞处理方法 |
Non-Patent Citations (2)
Title |
---|
张龙涛: "连续碰撞检测算法的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
王鹏 等: "基于OBB层次包围盒的碰撞检测算法改进", 《计算机工程与设计》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115056215A (zh) * | 2022-05-20 | 2022-09-16 | 梅卡曼德(北京)机器人科技有限公司 | 碰撞检测方法、控制方法、抓取***及计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102314711B (zh) | 矿产资源评价信息的三维可视化方法及其装置 | |
CN102855492B (zh) | 基于矿物浮选泡沫图像的分类方法 | |
CN101853525B (zh) | 基于网格分割的带纹理模型细节保持简化方法 | |
CN110504754A (zh) | 一种基于地理信息自动生成三维分层结构的电网监控方法 | |
CN101231631A (zh) | 基于快速空间插值的电力***实时节点数据三维可视化方法 | |
CN103823928A (zh) | 基于扫描偏置的三维打印零件支撑自动生成方法 | |
CN104715508A (zh) | 一种网格建模方法及装置 | |
CN103198489B (zh) | 基于显著性密度与边缘响应的显著物体自动检测方法 | |
CN104778332A (zh) | 一种衣物自碰撞检测低层裁剪优化方法 | |
CN106408665A (zh) | 一种新的渐进网格生成方法 | |
CN103065305A (zh) | 虚拟手术训练***中基于四面体的组织模型切割方法 | |
CN105373661A (zh) | 一种基于动态规划算法的电网专题图布局方法 | |
CN103879433A (zh) | 轨道交通的能量分析方法 | |
CN103164862B (zh) | 基于智能识别绘图工具的平面cad/cam绘图方法 | |
CN107877582B (zh) | 一种电路板切割路径规划方法 | |
CN102393827A (zh) | 一种基于连续法向锥剔除的柔性场景连续碰撞检测方法 | |
CN107587982A (zh) | 一种风电机组运行状态划分方法及装置 | |
CN105808791A (zh) | 一种用于电阻计算网格划分的加速方法 | |
CN102708017A (zh) | 一种基于非共线剔除的柔性场景连续碰撞检测方法 | |
CN104809290A (zh) | 一种衣物自碰撞检测高层裁剪优化方法 | |
Tang et al. | Adjacency-based culling for continuous collision detection | |
CN102663789A (zh) | 将二维平面内含洞及岛的多边形三角化的方法 | |
CN114170385B (zh) | 实时生成模型剖面带洞网格的方法、装置、介质和设备 | |
CN102346915B (zh) | 电压等高曲面图形快速生成方法 | |
CN105678840A (zh) | 基于三维地形软件***中快速生成自定义道路实现方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150715 |