CN101593367B - 一种基于四叉包围盒树的柔性织物自碰撞检测方法 - Google Patents
一种基于四叉包围盒树的柔性织物自碰撞检测方法 Download PDFInfo
- Publication number
- CN101593367B CN101593367B CN2009100879022A CN200910087902A CN101593367B CN 101593367 B CN101593367 B CN 101593367B CN 2009100879022 A CN2009100879022 A CN 2009100879022A CN 200910087902 A CN200910087902 A CN 200910087902A CN 101593367 B CN101593367 B CN 101593367B
- Authority
- CN
- China
- Prior art keywords
- bounding box
- fork
- fabric
- tri patch
- node
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Image Analysis (AREA)
Abstract
一种基于四叉包围盒树的柔性织物自碰撞检测方法,其特点在于对织物几何基元建立四叉包围盒树,并采用基于四叉包围盒树的法向量锥法、三角面片重心检测法和平面同侧过滤法分别在粗略检测和精确求交阶段过滤掉不可能相交的三角面片,从而大大减少了相交测试的计算量。其步骤是(1)利用织物几何基元的空间位置关系,构建结构紧密的四叉包围盒树;(2)基于四叉包围盒树,采用法向量锥法,排除掉不可能相交的三角面片对;(3)根据两三角面片重心间的距离,过滤掉距离大于给定阈值的三角面片对;(4)基本几何元素间的精确检测,平面同侧过滤法过滤掉不必要的线段平面求交。
Description
技术领域
本发明涉及一种基于四叉包围盒树的柔性织物自碰撞检测方法,属于柔性织物仿真碰撞检测技术领域。
背景技术
碰撞处理包括碰撞检测和碰撞响应两部分。碰撞检测的目标是发现碰撞并报告;碰撞响应是在碰撞发生后,根据碰撞点及其它参数使发生碰撞的对象做出正确的动作,以反应真实的动态效果。
现有的基于空间的碰撞检测算法大致可划分为两大类:空间分解法(Space Decomposition)和层次包围盒法(Hierarchical Bounding Volumes)。这两类算法的主要思想都是为了减少被测元素的数量,以提高算法效率。
空间分解法是将整个虚拟空间划分成相等体积的小单元格,只对占据同一单元格或相邻单元格的几何对象进行相交测试。比较典型的方法有八叉树和BSP树。空间分解法对于一般的环境很难选择一个最优的空间分解尺寸,若选择不当则会导致空间耗费大、计算效率低。
层次包围盒法的核心思想是利用体积略大而几何特性简单的包围盒将复杂几何对象包裹起来,在进行碰撞检测时,首先进行包围盒之间的相交测试,只有包围盒相交时,才对其所包裹的对象做进一步求交计算。在构造碰撞体的包围盒时,通过引入树状层次结构可快速剔除不发生碰撞的元素,减少大量不必要的相交测试,从而提高碰撞检测效率。比较典型的包围盒类型有沿坐标轴的包围盒AABB(Axis Aligned Bounding Boxes),包围球(Spheres),方向包围盒OOBB(Object Oriented Bounding Box)等。
在柔性织物形变动态模拟中,碰撞可以分成两类:一类是织物与外界其他物体的碰撞,如与桌子、地面、人体等的碰撞,称为他碰撞;另一类是织物自身各部分之间的碰撞,称为自碰撞。这两种碰撞有着不同的检测和处理方法。本发明针对自碰撞问题。
织物在运动中,除了与周围的物体发生碰撞外,其自身的各个部分也会发生碰撞(即自碰撞)。为了保证模拟的真实感,需要及时检测到这些碰撞并对其进行响应,否则会发生穿透现象,破坏模拟的真实感。对织物进行碰撞检测和响应处理是一项非常复杂而耗时的工作,而在应用中对其实时性的要求却很高。因此,如何设计具有真实感和实时性的碰撞检测和响应算法成为织物模拟的关键。
如图1所示,碰撞检测分为初步检测和精确检测两个阶段。初步检测阶段采用层次包围盒技术和空间层次剖分技术来找到可能发生碰撞的基本几何元素对(如:三角面片对);精确检测阶段则处理基本几何元素对之间的精确求交检测。
传统碰撞检测方法主要存在以下一些问题:
(1)采用二叉树的形式建立层次包围盒树,并且叶子结点只包含一个基元,这种方法虽容易理解和实现,但当叶子结点数量庞大时,会导致树的高度增加很快,这一方面使得内存的占用量很大,另一方面降低了算法的效率。
(2)传统的方法在自底向上构建包围盒树的过程中未考虑几何基元的空间位置关系,这会在一定程度上导致层次包围盒结构比较松散,从而影响碰撞检测的效率。
针对以上问题,本发明提出了一种基于四叉包围盒树的柔性织物自碰撞检测的方法,其核心内容可以总结为:对织物几何基元建立四叉包围盒树,并采用基于四叉包围盒树的法向量锥法、三角面片重心检测法和平面同侧过滤法分别在粗略检测和精确求交阶段过滤掉不可能相交的三角面片,以此大大减少相交测试的计算量。
发明内容
本发明要解决的技术问题是:克服现有技术的不足,提供一个适应柔性织物自碰撞检测的方法,减少相交测试的计算量,提高运算效率。
本发明采用的技术方案:对织物几何基元建立四叉包围盒树,基于四叉包围盒树,结合法向量锥法、三角面片重心检测法在粗略检测阶段过滤掉不可能相交的三角面片,然后,在精确求交阶段,采用平面同侧过滤法减少精确求交的计算量。该方案实现的步骤,如图2所示:
(1)利用织物几何基元的空间位置关系,构建结构紧密的四叉包围盒树;
(2)基于四叉包围盒树,采用法向量锥法,排除掉不可能相交的三角面片对;
(3)根据两三角面片重心间的距离,过滤掉距离大于给定阈值的三角面片对;
(4)基本几何元素间的精确检测,平面同侧过滤法过滤掉不必要的线段平面求交。
本发明与现有技术相比的有益效果是:
系统效率得到了明显提升,保证了仿真的实时性。在质点数量相同的情况下,相比二叉树而言,四叉树的深度较小,因此碰撞检测执行的递归次数也就明显较少。而后通过三角面片重心距离法等方法过滤掉更多未发生碰撞的碰撞对,从而大大减少了精确求交的计算量,提高了运算效率。
附图说明
图1碰撞检测算法框架图;
图2基于四叉树包围盒的柔性织物自碰撞检测法步骤示意图;
图3织物四叉树划分示意图;
图4两个子结点锥顶角合并示意图;
图5重心距离示意图;
图6平均帧率对比图;
图7重心距离参数作用效果图。
具体实施方式
下面结合附图及具体实施方式对本发明进一步详细说明。
(1)利用织物几何基元的空间位置关系,构建结构紧密的四叉包围盒树;
第一步:采用自上而下的方法递归建立四叉树。用四叉树描述层次包围体结构,将织物按照4×4分割,一直分割到三角面片为止,即叶子结点为三角面片。织物划分如图3所示。树的根结点是包围整个织物的包围盒,叶结点是包围织物的基本几何元素(三角面片)的包围盒,中间结点则对应于各级子部分的包围盒。
第二步:在每一个时间步长内,需要更新四叉包围盒树每个结点的锥顶角和包围盒信息,采用后序遍历四叉树的方法进行更新。
(2)基于四叉包围盒树,采用法向量锥法,排除掉不可能相交的三角面片对;
第一步:递归计算四叉包围盒树各结点的圆锥的顶角α值。在遍历求解过程中,将四个孩子结点分为两组,先分别求出各组中两个子结点合并的α值,记为α1、α2,再将α1、α2合并,从而得到四个孩子结点的父结点的α值。
假设两个子结点对应锥体轴线的夹角为β。则这两个子结点合并的α值可由两个子结点的α1、α2以及β来确定(如图4所示),公式为α=β/2+max(α1,α2)。
若某结点仅有一个子结点,则其α属性等于其子结点的α值。二叉树的每个叶结点仅包含一个三角形元素,其α=0。
第二步:检测层次包围盒四叉树的某一结点,若此结点对应区域的圆锥顶角α<π/2,可以断定这块区域没有发生自碰撞,停止进一步检测;但若α≥π/2,则这块区域可能发生了自碰撞。
(3)根据两三角面片重心间的距离,过滤掉距离大于给定阈值的三角面片对;
用两个三角面片重心间的距离来标识两个三角面片的距离,当该距离大于某阈值时,这两个三角面片不相交,否则才有可能相交。设两个三角面片ΔA1B1C1、ΔA2B2C2为大小相等的等腰直角三角形,直角边长为L,重心间的距离为D。则当两个三角面片发生碰撞时,其重心的距离满足式当D取时(如图5所示),两个三角形共面,且两个三角形的重心与相交的斜边顶点位于同一直线上,此时是两个三角形相交且重心距离最远的情况。
重心距离检测法:设定一个重心距离阈值,当两三角面片的重心距离大于该阈值时,则认为这两个三角面片不相交,过滤掉该三角面片对,不对它们进行进一步的精确求交检测。
在应用过程中,可根据系统的实时性需求调整重心距离阈值,以可接受的碰撞对遗漏率换取期望的实时性。
(4)基本几何元素间的精确检测,平面同侧过滤法过滤掉不必要的线段平面求交;
判断质点在两个时刻的位置是否位于三角面片的同侧,如在同侧则表明质点并未穿透面片,因而不需要进行点面求交计算,从而达到优化目的。
判断质点当前时刻与下一时刻位置是否位于三角面片同一侧的方法如下:
第一步:由三角面片的法向(法向已知)及三角面片的一个顶点得到三角面片所在平面的方程;
第二步:将当前时刻与下一时刻的质点位置分别带入方程的表达式得出值x;x=0,表示点在平面上;x>0表示点位于平面正侧;x<0表示点位于平面负侧。
由于平面方程ax+by+cz+d=0的表达式ax+by+cz+d为一次运算,计算复杂度低,故该方法耗时较少。
四叉包围盒树法实验:本实验将基于四叉包围盒树的碰撞检测方法与传统的基于二叉包围盒树的方法进行对比。首先对两种包围盒树中的包围盒个数进行对比,数据如表1所示:
表1包围盒数量(个)
由表1可看出,与二叉包围盒树相比,采用四叉包围盒树对织物进行划分减少了包围盒的总个数,从而可减少系统的计算开销。
下面对以上两种方法的检测效率进行实验对比。创建一块初始方向为水平的织物,固定织物的中心质点,然后运行系统让织物自然垂下。分别采集两种方法在10秒内检测到的碰撞对个数(见表2)和10秒内的平均帧率(见表3)。
表2检测到的碰撞对个数(个)
表3包围盒树法平均帧率对比(FPS)
由表2、表3可知,四叉包围盒树法比二叉包围盒树法获得的需要精确求交的碰撞对数量明显减少,即四叉包围盒树法可过滤掉更多未发生碰撞的碰撞对,从而减少后面点面和边边精确求交的次数。
从图6可看出,质点数量越多,采用本发明方法对系统效率的提高就明显。
三角面片重心距离检测法实验:本实验用以验证三角面片重心距离检测法的有效性。重心距离参数取为最大边长的1.1倍。创建一块初始方向为水平的织物,固定织物的中心质点,然后运行系统让织物自然垂下。分别统计采用该方法前后检测到10万个碰撞对时系统运行的平均帧率,见表4、表5。
表4检测到的碰撞对(个)
表5平均帧率对比(FPS)
由表4、表5可知,采用重心距离检测法后,当质点数越多时,过滤掉的碰撞对数也越多,系统运行帧率得到较明显的提升。
重心距离参数实验:验证重心距离参数对三角面片重心距离检测法效率的影响。
记三角面片最长边边长为L,分别取重心距离参数值为:1.5L,1.4L,1.3L,1.2L,1.1L,L,0.9L,0.8L,0.7L,0.6L,0.5L。
创建一块质点数为17×17个、初始方向为水平的织物,固定织物的中心质点,然后运行系统让织物自然垂下。
统计不同重心距离参数值下,总碰撞对数达到10万个时系统的碰撞对过滤率和碰撞对遗漏率(见表6)。
表6碰撞对过滤率和碰撞对遗漏率
由表6和图7可看出重心距离检测的方法,可以在损失少量有效碰撞对的前提下,提高系统运行效率;距离值参数与有效碰撞检测丢失率的关系为:距离值参数设置的越大,碰撞对遗漏率就越大。我们可以根据系统的运行需求,灵活的调节距离参数,以达到在可接受的碰撞对遗漏率的前提下提升系统运行帧率的目的。
Claims (2)
1.一种基于四叉包围盒树的柔性织物自碰撞检测方法,其特征在于通过以下步骤实现:
(1)利用织物几何基元的空间位置关系,构建结构紧密的四叉包围盒树;
(2)基于四叉包围盒树,采用法向量锥法,排除掉不可能相交的三角面片对;
(3)根据两三角面片重心间的距离,过滤掉距离大于给定阈值的三角面片对;
(4)基本几何元素间的精确检测,平面同侧过滤法过滤掉不必要的线段平面求交;
其中,所述步骤(1)中的利用织物几何基元的空间位置关系,构建结构紧密的四叉包围盒树方法如下:
(1.1)采用自上而下的方法递归建立四叉树;将织物按照4×4分割,一直分割到三角面片为止,即叶子结点为三角面片;树的根结点是包围整个织物的包围盒,叶结点是包围织物的基本几何元素三角面片的包围盒,中间结点则对应于各级子部分的包围盒;
(1.2)每一个时间步长内,采用后序遍历四叉树的方法更新四叉包围盒树每个结点的锥顶角和包围盒信息;
所述步骤(2)中的基于四叉包围盒树,采用法向量锥法,排除掉不可能相交的三角面片对,方法如下:
(2.1)递归计算四叉包围盒树各结点的圆锥的顶角α值;
(2.2)检测四叉包围盒树各结点,若结点对应区域的圆锥顶角α<π/2,判断这块区域没有发生自碰撞,停止进一步检测;若α≥π/2,判断这块区域有可能发生了自碰撞,需要进一步检测;
所述步骤(4)中的基本几何元素间的精确检测,平面同侧过滤法过滤掉不必要的线段平面求交,方法如下:
(4.1)计算质点在前后两个时刻的位置;
(4.2)判断质点前后两个时刻位置是否位于三角面片的同侧,如在同侧则表明质点并未穿透面片,不需要进行点面求交计算。
2.根据权利要求1所述的基于四叉包围盒树的柔性织物自碰撞检测方法,其特征在于:所述步骤(3)中的根据两三角面片重心间的距离,过滤掉距离大于给定阈值的三角面片对方法如下:
(3.1)计算三角面片的重心位置;
(3.2)计算两三角面片的重心距离;
(3.3)当两三角面片的重心距离大于设定的重心距离阈值时,则认为这两个三角面片不相交,过滤掉该三角面片对,不对它们进行进一步的精确求交检测。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100879022A CN101593367B (zh) | 2009-06-25 | 2009-06-25 | 一种基于四叉包围盒树的柔性织物自碰撞检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100879022A CN101593367B (zh) | 2009-06-25 | 2009-06-25 | 一种基于四叉包围盒树的柔性织物自碰撞检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101593367A CN101593367A (zh) | 2009-12-02 |
CN101593367B true CN101593367B (zh) | 2011-03-23 |
Family
ID=41408008
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100879022A Expired - Fee Related CN101593367B (zh) | 2009-06-25 | 2009-06-25 | 一种基于四叉包围盒树的柔性织物自碰撞检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101593367B (zh) |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819675B (zh) * | 2010-04-19 | 2011-08-10 | 浙江大学 | 一种基于gpu的层次包围盒的快速构造方法 |
CN101984443B (zh) * | 2010-11-10 | 2012-07-25 | 北京航空航天大学 | 一种改进的柔性织物碰撞处理方法 |
TWI402130B (zh) * | 2011-01-12 | 2013-07-21 | Ind Tech Res Inst | 碰撞保護方法及其裝置 |
CN102509317B (zh) * | 2011-09-27 | 2013-12-25 | 北京像素软件科技股份有限公司 | 一种实时碰撞检测系统的实现方法 |
CN102368280A (zh) * | 2011-10-21 | 2012-03-07 | 北京航空航天大学 | 一种面向虚拟装配的基于aabb-obb混合包围盒的碰撞检测方法 |
US9965821B2 (en) * | 2012-03-09 | 2018-05-08 | Nvidia Corporation | Fully parallel in-place construction of 3D acceleration structures in a graphics processing unit |
CN102693363B (zh) * | 2012-05-10 | 2015-03-25 | 北京像素软件科技股份有限公司 | 一种网络游戏中基于四叉树的场景管理方法 |
CN103366054B (zh) * | 2013-06-28 | 2016-08-31 | 北京航空航天大学 | 一种基于质点弹簧模型的衣物接缝处理和褶皱增强方法 |
CN106503347B (zh) * | 2016-10-25 | 2019-03-12 | 福州大学 | 一种基于aabb与obb自适应的虚拟装配中实时碰撞检测方法 |
CN108732556B (zh) * | 2018-08-17 | 2020-03-27 | 西南交通大学 | 一种基于几何体求交运算的车载激光雷达仿真方法 |
CN110000812A (zh) * | 2019-03-21 | 2019-07-12 | 深圳点猫科技有限公司 | 一种用于机器人的物体碰撞检测方法及其系统 |
CN113034338B (zh) * | 2019-12-24 | 2023-03-17 | 深圳市海思半导体有限公司 | 一种用于gpu的bvh构造方法、装置及存储介质 |
CN111203916B (zh) * | 2020-01-16 | 2021-06-08 | 山西万合智能科技有限公司 | 一种机器人关节与几何体碰撞的检测方法 |
CN112932662B (zh) * | 2021-02-01 | 2022-08-02 | 威海威高骨科手术机器人有限公司 | 一种具有患者安全保护的复位位置检测方法 |
CN113001551B (zh) * | 2021-03-18 | 2022-09-23 | 青岛九维华盾科技研究院有限公司 | 基于八叉树结构分割的快速碰撞检测方法 |
CN114170385B (zh) * | 2021-12-10 | 2022-08-16 | 北京优锘科技有限公司 | 实时生成模型剖面带洞网格的方法、装置、介质和设备 |
CN116612825B (zh) * | 2023-07-19 | 2023-10-13 | 四川省产品质量监督检验检测院 | 分子静电势等值面点云的碰撞点检测和碰撞体积计算方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071515A (zh) * | 2007-06-25 | 2007-11-14 | 北京金山软件有限公司 | 一种在服务器端实现三维游戏碰撞检测的方法 |
CN101093586A (zh) * | 2007-07-12 | 2007-12-26 | 上海交通大学 | 面向复杂场景实时交互操作的并行碰撞检测方法 |
-
2009
- 2009-06-25 CN CN2009100879022A patent/CN101593367B/zh not_active Expired - Fee Related
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101071515A (zh) * | 2007-06-25 | 2007-11-14 | 北京金山软件有限公司 | 一种在服务器端实现三维游戏碰撞检测的方法 |
CN101093586A (zh) * | 2007-07-12 | 2007-12-26 | 上海交通大学 | 面向复杂场景实时交互操作的并行碰撞检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101593367A (zh) | 2009-12-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101593367B (zh) | 一种基于四叉包围盒树的柔性织物自碰撞检测方法 | |
CN102509317B (zh) | 一种实时碰撞检测系统的实现方法 | |
CN101984443B (zh) | 一种改进的柔性织物碰撞处理方法 | |
US20220139027A1 (en) | Scene data obtaining method and model training method, apparatus and computer readable storage medium using the same | |
CN105513127B (zh) | 基于密度峰值聚类的杆状物规则化三维建模方法及系统 | |
CN101615305B (zh) | 碰撞检测的方法和装置 | |
CN104484882B (zh) | 一种基于机载LiDAR数据的城市区域电力线检测方法 | |
CN101281654A (zh) | 一种基于八叉树的大规模复杂三维场景处理方法 | |
CN108257103A (zh) | 游戏场景的遮挡剔除方法、装置、处理器及终端 | |
CN101908068B (zh) | 一种基于四叉树索引的海量激光扫描点云实时绘制方法 | |
CN105701798B (zh) | 柱状物体的点云提取方法及装置 | |
CN102426424B (zh) | 基于分布式架构的临近空间飞行器视景仿真方法 | |
CN110084195A (zh) | 基于卷积神经网络的遥感图像目标检测方法 | |
CN110007279B (zh) | 一种基于毫米波雷达模型的目标可见性判断方法 | |
CN105761312A (zh) | 一种微地形表面重建方法 | |
CN108257173A (zh) | 一种图像信息中的物体分离方法及装置及系统 | |
CN102867334A (zh) | 基于粒子系统模型进行实时模拟雪花沉积的方法 | |
CN109636870A (zh) | 一种狭长图斑分块融解方法及装置 | |
CN104658033A (zh) | 多光源下的全局光照绘制方法及装置 | |
CN103049931A (zh) | 基于粒子系统的云团快速三维仿真算法 | |
CN106444819A (zh) | 一种基于uwb阵列的无人机自主避障系统及其方法 | |
RU2019145092A (ru) | Способ и система для предсказания будущего события в беспилотном автомобиле (sdc) | |
CN102855661A (zh) | 基于空间相似性的大规模森林场景快速生成方法 | |
CN109243614A (zh) | 一种手术仿真方法、装置和系统 | |
CN103049341A (zh) | 带预判方法的obb层次体树碰撞检测方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110323 Termination date: 20130625 |