CN1766931A - 一种人体模型与柔性物体间的冲突检测方法 - Google Patents
一种人体模型与柔性物体间的冲突检测方法 Download PDFInfo
- Publication number
- CN1766931A CN1766931A CNA2004100865597A CN200410086559A CN1766931A CN 1766931 A CN1766931 A CN 1766931A CN A2004100865597 A CNA2004100865597 A CN A2004100865597A CN 200410086559 A CN200410086559 A CN 200410086559A CN 1766931 A CN1766931 A CN 1766931A
- Authority
- CN
- China
- Prior art keywords
- manikin
- summit
- control shaft
- local distance
- flexible article
- 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
Links
Images
Landscapes
- Image Analysis (AREA)
Abstract
本发明涉及一种人体模型与柔性物体间冲突检测的方法,包括如下步骤:1)预处理阶段,在人体模型表面建立局部距离表,按一定顺序记录人体表面每一区域与底层相关骨骼之间的距离信息;2)检测过程中,遍历柔性物体上每个顶点/面片,求得当前顶点/面片在各控制轴1上的垂点位置,通过对垂点位置的讨论,并查找局部距离表,判定当前时刻当前顶点/面片与人体模型表面是否发生了位置冲突。本发明的优点在于:(a)满足计算机生成空间对逼真性的要求。(b)满足实际应用系统对速度的要求,冲突检测的时间复杂度仅与柔性物体模型上的顶点数目相关。(c)在人体模型处于剧烈运动的情况下,冲突检测计算的时间复杂度不变。
Description
技术领域
本发明涉及计算机图形学领域,具体的说,涉及一种人体模型与柔性物体间冲突检测的方法。
背景技术
在现实世界中,人体总是同各种柔性物体相接触,如身体穿着的服饰,睡眠使用的床垫被子等。若要在计算机生成空间中真实的描述客观世界,包括客观世界中的各种人物、物品以及他们的运动,需要对人体模型和其周围相关的柔性物体进行运动仿真或动画模拟。其中关键问题之一是在仿真或动画模拟过程中对人体模型和柔性物体进行空间位置的冲突检测。
在计算机生成空间中,柔性物体和人体模型通常用多边形网格表示。为了获得较强的真实感,一个简单的柔性物体,如裙子的模型,它的顶点数目通常在几千数量级,而普通人体模型的面片数目通常在几万数量级。多边形网格是无厚度的几何模型,任何细微的穿透都会影响视觉效果的逼真性。现有技术中进行冲突检测的方法,速度较快的有层次包围盒法、体元法,但这些方法的计算复杂度仍然较高,难以满足实时性要求。对于一些实时的应用,如何在保证实时的前提下,对成千上万的顶点和面片进行精确的空间位置冲突检测是目前图形学领域的研究难点之一。
发明内容
本发明的目的在于为计算机生成空间中人体模型和柔性物体提供一种快速、精确的空间位置冲突检测方法。
为了实现上述目的,本发明提供的人体模型与柔性物体间的冲突检测方法包括如下步骤:
1)检测之前的预处理阶段,在人体模型表面建立局部距离表,局部距离表按一定顺序记录了人体表面每一区域与底层相关骨骼之间的距离信息,该底层相关骨骼由控制轴1表示,控制轴1是连接相关骨骼两相邻关节的线段;
2)检测过程中,遍历柔性物体上每个顶点/面片,求得当前顶点/面片在各控制轴1上的垂点位置,通过对垂点位置的讨论,并查找局部距离表,判定当前时刻当前顶点/面片与人体模型表面是否发生了位置冲突。
所述步骤1)包括以下子步骤:
11)按照当前人体模型的特点,对模型进行部位划分,得出各部位的控制轴1;
12)遍历每个部位,对当前部位的几何表面进行区域划分;
13)计算几何表面上每个局部区域到其所在部位控制轴1的距离,将该距离称为局部距离;
14)将所有局部距离及其相关信息按一定顺序存入该部位的局部距离表中。
所述步骤12)中还包括以下子步骤:
121)对于当前部位,沿该部位控制轴1等间隔地作与控制轴1垂直的剖面9;
122)遍历每一剖面,对于当前剖面,以该剖面与其控制轴1的交点为中心,以约定的固定方向作为起始射线10,以相同角度为间隔,均匀地向外作射线;
123)用步骤122)中所作射线与所在部位表面的交点表征各个局部区域。
所述步骤14)中还包括以下子步骤:
141)将所有局部距离按一定顺序存入该部位的局部距离表中;
142)将当前部位的每一剖面上局部距离的最大值,按剖面顺序存入局部距离表中;
143)将选定部位中所有局部距离的最大值存入局部距离表中;
所述步骤14)中还包括以下子步骤:
144)在局部距离表的开头记录部位序号、部位名称、部位剖面数目,每个剖面的射线数目。
所述步骤2)包括以下子步骤:
21)遍历柔性物体上的每一顶点,对于当前顶点遍历人体每一部位,从当前顶点出发向当前部位控制轴1所在直线作垂线,并求得垂点;
22)根据垂点的位置,并查找局部距离表,判断柔性物体上当前顶点与人体模型当前部位是否发生位置冲突。
所述步骤22)还包括以下子步骤:
221)在步骤21)中已求得垂点的位置,若垂点位于控制轴以外,则可以判定当前顶点与当前部位不发生位置冲突;若垂点位于控制轴上,则根据垂点与控制轴两端的距离求得与垂线相邻的两个剖面的序号;
222)查找当前部位局部距离表,若当前顶点到垂点的距离大于相邻两个剖面上最大的局部距离,则可以判定当前顶点与当前部位不发生位置冲突;否则,再根据垂线方向、控制轴位置和当前运动状态下当前部位作射线的起始方向,求得与垂线相邻的四条射线的序号;
223)查找当前部位局部距离表,若当前顶点到垂点的距离大于相邻四条射线的局部距离,则可以判定当前顶点与当前部位不发生位置冲突;否则,判定当前顶点与当前部位已经发生或即将发生位置冲突。
本发明提供的人体模型与柔性物体间的冲突检测方法,其优点在于:
(a)满足计算机生成空间对逼真性的要求,本发明提供的冲突检测方法能负载包含大量面片的人体模型和柔性物体模型。
(b)满足实际应用系统对速度的要求,设人体模型的面片数目为m,柔性物体模型上的顶点数目为n,则冲突检测的时间复杂度为O(n),仅与柔性物体模型上的顶点数目n相关。
(c)在人体模型处于剧烈运动的情况下,冲突检测计算的时间复杂度不变。
在人体运动状态下,由于无需更新各个部位的局部距离表,因此进行冲突检测的方法和人体静止状态下一致,算法复杂度仍然为O(n)。而且算法的复杂度与实际发生空间位置冲突的顶点数目无关,因此,在发生大量冲突的实际应用中,例如虚拟服装表演,其算法的复杂度仍保持在O(n)数量级。本发明所描述的人体模型和柔性物体间的冲突检测方法,能够快速、准确的检测人体模型在各种状态下(静止、运动),与周围柔性物体(如服装、窗帘等)之间的位置冲突情况,满足各种实时应用的需要。
附图说明
图1为人体某一部位及其相关骨骼的示意图;
图2为运动过程中人体某一部位与其控制轴之间的位置关系示意图;
图3为求局部距离过程中剖面和射线的位置示意图;
图4为柔性物体上顶点和人体某一部位的几种可能的位置关系示意图;
图5为计算机生成空间中人体模型和柔性物体的实例;
图6为本发明中生成局部距离表的流程图;
图7为本发明中一次具体检测过程的流程图。
具体实施方式
一般情况下,在计算机生成空间中,每一时刻,由于人体运动、空气流动等原因,人体模型和柔性物体之间的空间位置关系会发生变化,因此需要对它们之间的空间位置冲突情况进行重新检测。
由于人体的生理结构的特点,可以把人体模型分成若干个部位,其中每个部位都存在一相关骨骼,相关骨骼可带动其所在部位以该骨骼的一端点为轴旋转,将相关骨骼称为控制轴,将其作为旋转轴的端点称为该控制轴的父关节。如图1所示,以人体模型的一个部位右小腿5为例,其控制轴1为右膝关节2到右踝关节3的连线,右膝关节2为控制轴1的父关节。图2为运动过程中人体某一部位与其控制轴之间的位置关系示意图,其中1为控制轴,4为父关节,6为该部位的一块表面面片,7为该部位的原始位置,8为该部位绕父关节4旋转后的位置。可以看出,在运动过程中整个部位与其控制轴一起产生相同的位移和旋转,这一特点决定了人体模型表面任一区域与其控制轴之间的距离可以假设保持不变。
正是利用这一假设,本发明引入了局部距离表这一概念,局部距离表按一定顺序记录了人体表面每一局部区域与其相关底层骨骼之间的距离信息。由于假设人体模型表面任一区域与其控制轴之间的距离,在运动过程中保持不变,无论人体处于何种运动姿态,各个部位局部距离表中的局部距离信息均保持不变。
在具体实施过程中,本发明的方法包含下列两个步骤:首先,在检测开始前的预处理阶段,在人体模型表面为每个部位建立局部距离表。其次,在检测过程,根据当前时刻柔性物体与人体骨架之间的距离,通过查找局部距离表,快速判定该时刻柔性物体与人体模型之间的位置冲突情况。下面结合附图与实施例对本发明做进一步的描述。
1、局部距离表的建立
局部距离表的建立是在预处理阶段进行,并不占用检测过程中的时间开销。建立局部距离表包括以下步骤(如图6所示):
步骤101:对人体模型进行部位划分,对于每一部位,定义相关骨骼,该相关骨骼用连接其两个相邻关节点的线段表示,称为控制轴。
步骤102:选定人体模型中的一个部位,如图3所示(图中4为父关节),沿该部位控制轴1等间隔地作与控制轴1垂直的剖面9,该间隔的大小,可根据应用系统对精度要求和当前部位沿控制轴方向的长度进行约定。一般情况下,一部位的剖面数在6~12之间。
步骤103:在每一剖面上,以该剖面与控制轴1交点为中心,以约定的固定方向作为起始射线10,以相同角度为间隔,均匀的向外设置射线。求得所有射线与人体表面的交点,见图3。射线之间的角度间隔也可根据应用系统的精度要求进行约定。一般情况下,每一剖面上的射线数目在6~18之间。
步骤104:计算出选定部位所有射线从起点到该射线与人体表面交点间的距离,把该距离成为局部距离。将选定部位的所有局部距离按一定顺序存入该部位的局部距离表中。表1是一个局部距离表的实例。
步骤105:将选定部位的每一剖面上局部距离的最大值,按剖面顺序存入局部距离表中。
步骤106:将选定部位中所有局部距离的最大值存入局部距离表中。
步骤107:判断是否已经在局部距离表中存入了人体模型中的所有部位的局部距离。若判断为是,进入步骤108,若判断为否,回到步骤102,选定下一个部位,重复执行步骤102到步骤106。
步骤108:人体模型中的所有部位的局部距离均已存入局部距离表,局部距离表建立完毕。
需注意的是,局部距离表中,局部距离信息的存放顺序可根据后续查询需要进行人为的约定。表的开头一般记录部位序号、部位名称、部位剖面数目,每个剖面的射线数目。
表1
部位序号 | 2 |
部位名称 | 右小腿 |
剖面数目 | 12 |
单个剖面射线数目 | 10 |
1号剖面上1号射线的局部距离 | 0.1105 |
1号剖面上2号射线的局部距离 | 0.1110 |
… | 0.1116 |
… | 0.1158 |
… | 0.1178 |
… | 0.1201 |
… | 0.1183 |
… | 0.1165 |
… | 0.1134 |
1号剖面上10号射线的局部距离 | 0.1112 |
1号剖面上的最大局部距离 | 0.1201 |
… | … |
… | … |
部位最大局部距离 | 0.1339 |
2、空间位置冲突情况的检测
每一次具体的检测过程,包括以下步骤(如图7所示):
步骤200:遍历柔性物体上的每一顶点,对于当前顶点遍历人体每一部位。
步骤201:从当前顶点出发向当前部位控制轴所在直线作垂线,并求得垂点。图4为柔性物体上顶点和人体某一部位的几种可能的位置关系示意图,其中1为控制轴,P1,P2,P3分别为柔性物体上的三个顶点,区域A、B分别表示对应于顶点P2,P3的人体表面局部区域。分别过P1,P2,P3,作控制轴1的垂线,得到垂点P1′,P2′,P3′。
步骤202:若垂点位于控制轴以外,则可以判定当前顶点与当前部位不发生位置冲突(即图4中的P1情况),回到步骤201检测下一组数据;若垂点位于控制轴上(即图4中P2或P3情况),进入步骤203。
步骤203:计算出垂点与控制轴两端的距离,查找当前部位的局部距离表,求得与垂线相邻的两个剖面的序号。
步骤204:查找当前部位局部距离表,若当前顶点到垂点的距离d大于相邻两个剖面上最大的局部距离(图4中的P2情况),则可以判定当前顶点与当前部位不发生位置冲突,回到步骤201检测下一组数据;否则,进入步骤205。
步骤205:根据垂线方向和当前运动状态下当前部位的射线起始方向,以及已求得的相邻两个剖面的序号,求得与垂线相邻的四条射线的序号。在步骤204中已经得到了与当前顶点相邻的两个剖面,查找当前部位局部距离表,可以分别得到这两个剖面上与当前顶点相邻的四条射线(其中每个剖面上有两条相邻射线)。需注意的是,在运动状态下,当前部位可能发生以控制轴为转轴的旋转运动,因此当前部位的射线起始方向应当是局部距离表中的默认起始方向加上当前部位旋转的角度。
步骤206:查找当前部位局部距离表,若当前顶点到垂点的距离大于相邻四条射线局部距离的最大值,则可以判定当前顶点与当前部位不发生位置冲突,回到步骤201检测下一组数据;否则,判定当前顶点与当前部位已经发生或即将发生位置冲突,进入步骤207。
步骤207:判断是否已经遍历柔性物体上的每一顶点和人体每一部位的组合,若判断为是,进入步骤208;若判断为否,回到步骤201检测下一组数据。
步骤208:得到检测结果,冲突检测过程结束。
从以上叙述可以看出,人体模型和柔性物体之间的冲突检测,可分解为柔性物体上单个顶点和人体模型单个部位之间的冲突检测。设人体模型的面片数目为m,柔性物体模型上的顶点数目为n,通常情况下m>>n,人体的部位数目通常为一较小的常数(一般情况下小于15),因此利用本发明进行人体模型和柔性物体之间冲突检测的时间复杂度在O(n)数量级(即冲突检测的时间仅与柔性物体模型上的顶点数目n有关,与人体模型的面片数目m的大小无关),大大低于目前已有的算法。
在人体运动状态下,由于无需更新各个部位的局部距离表,因此进行冲突检测的方法和人体静止状态下一致,算法复杂度仍然为O(n)。而且算法的复杂度与实际发生空间位置冲突的顶点数目无关,因此,在发生大量冲突的实际应用中,例如虚拟服装表演,其算法的复杂度仍保持在O(n)数量级。
本发明所描述的人体模型和柔性物体间的冲突检测方法,能够快速、准确的检测人体模型在各种状态下(静止、运动),与周围柔性物体(如服装、窗帘等)之间的位置冲突情况,满足各种实时应用的需要。
Claims (7)
1、一种人体模型与柔性物体间的冲突检测方法,其特征在于,包括如下步骤:
1)检测之前的预处理阶段,在人体模型表面建立局部距离表,局部距离表按一定顺序记录了人体表面每一区域与底层相关骨骼之间的距离信息,该底层相关骨骼由控制轴(1)表示,控制轴(1)是连接相关骨骼两相邻关节的线段;
2)检测过程中,遍历柔性物体上每个顶点/面片,求得当前顶点/面片在各控制轴(1)上的垂点位置,通过对垂点位置的讨论,并查找局部距离表,判定当前时刻当前顶点/面片与人体模型表面是否发生了位置冲突。
2、按权利要求1所述的人体模型与柔性物体间的冲突检测方法,所述步骤1),其特征在于,包括以下子步骤:
11)按照当前人体模型的特点,对模型进行部位划分,得出各部位的控制轴(1);
12)遍历每个部位,对当前部位的几何表面进行区域划分;
13)计算几何表面上每个局部区域到其所在部位控制轴(1)的距离,将该距离称为局部距离;
14)将所有局部距离及其相关信息按一定顺序存入该部位的局部距离表中。
3、按权利要求2所述的人体模型与柔性物体间的冲突检测方法,所述步骤12),其特征在于,还包括以下子步骤:
121)对于当前部位,沿该部位控制轴(1)等间隔地作与控制轴(1)垂直的剖面(9);
122)遍历每一剖面,对于当前剖面,以该剖面与其控制轴(1)的交点为中心,以约定的固定方向作为起始射线(10),以相同角度为间隔,均匀地向外作射线;
123)用步骤122)中所作射线与所在部位表面的交点表征各个局部区域。
4、按权利要求2所述的人体模型与柔性物体间的冲突检测方法,所述步骤14)中还包括以下子步骤:
141)将所有局部距离按一定顺序存入该部位的局部距离表中;
142)将当前部位的每一剖面上局部距离的最大值,按剖面顺序存入局部距离表中;
143)将选定部位中所有局部距离的最大值存入局部距离表中;
5、按权利要求2所述的人体模型与柔性物体间的冲突检测方法,所述步骤14)中还包括以下子步骤:
144)在局部距离表的开头记录部位序号、部位名称、部位剖面数目,每个剖面的射线数目。
6、按权利要求1所述的人体模型与柔性物体间的冲突检测方法,所述步骤2)包括以下子步骤:
21)遍历柔性物体上的每一顶点,对于当前顶点遍历人体每一部位,从当前顶点出发向当前部位控制轴(1)所在直线作垂线,并求得垂点;
22)根据垂点的位置,并查找局部距离表,判断柔性物体上当前顶点与人体模型当前部位是否发生位置冲突。
7、按权利要求6所述的人体模型与柔性物体间的冲突检测方法,所述步骤22)还包括以下子步骤:
221)在步骤21)中已求得垂点的位置,若垂点位于控制轴以外,则可以判定当前顶点与当前部位不发生位置冲突;若垂点位于控制轴上,则根据垂点与控制轴两端的距离求得与垂线相邻的两个剖面的序号;
222)查找当前部位局部距离表,若当前顶点到垂点的距离大于相邻两个剖面上最大的局部距离,则可以判定当前顶点与当前部位不发生位置冲突;否则,再根据垂线方向、控制轴位置和当前运动状态下当前部位作射线的起始方向,求得与垂线相邻的四条射线的序号;
223)查找当前部位局部距离表,若当前顶点到垂点的距离大于相邻四条射线的局部距离,则可以判定当前顶点与当前部位不发生位置冲突;否则,判定当前顶点与当前部位已经发生或即将发生位置冲突。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100865597A CN100337250C (zh) | 2004-10-26 | 2004-10-26 | 一种人体模型与柔性物体间的冲突检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2004100865597A CN100337250C (zh) | 2004-10-26 | 2004-10-26 | 一种人体模型与柔性物体间的冲突检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1766931A true CN1766931A (zh) | 2006-05-03 |
CN100337250C CN100337250C (zh) | 2007-09-12 |
Family
ID=36742797
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2004100865597A Expired - Fee Related CN100337250C (zh) | 2004-10-26 | 2004-10-26 | 一种人体模型与柔性物体间的冲突检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100337250C (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100592342C (zh) * | 2008-03-21 | 2010-02-24 | 中国科学院计算技术研究所 | 一种用于人体-服装冲突检测的候选集的建立方法 |
CN101140663B (zh) * | 2007-10-16 | 2010-06-02 | 中国科学院计算技术研究所 | 一种服装动画计算方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3544268B2 (ja) * | 1995-10-09 | 2004-07-21 | 任天堂株式会社 | 三次元画像処理装置およびそれを用いた画像処理方法 |
US6714213B1 (en) * | 1999-10-08 | 2004-03-30 | General Electric Company | System and method for providing interactive haptic collision detection |
CN1407511A (zh) * | 2001-09-08 | 2003-04-02 | 袁铭辉 | 三维服装产品开发的系统 |
WO2003031005A2 (en) * | 2001-10-09 | 2003-04-17 | Massachusetts Institute Of Technology | Methods and apparatus for detecting and correcting penetration between objects |
-
2004
- 2004-10-26 CN CNB2004100865597A patent/CN100337250C/zh not_active Expired - Fee Related
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101140663B (zh) * | 2007-10-16 | 2010-06-02 | 中国科学院计算技术研究所 | 一种服装动画计算方法 |
CN100592342C (zh) * | 2008-03-21 | 2010-02-24 | 中国科学院计算技术研究所 | 一种用于人体-服装冲突检测的候选集的建立方法 |
Also Published As
Publication number | Publication date |
---|---|
CN100337250C (zh) | 2007-09-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104376576B (zh) | 一种目标跟踪方法及装置 | |
Zhou et al. | Computer vision techniques in manufacturing | |
Shi et al. | Forward vehicle detection based on incremental learning and fast R-CNN | |
CN106845515A (zh) | 基于虚拟样本深度学习的机器人目标识别和位姿重构方法 | |
DE3579473D1 (de) | Verfahren zum grafischen darstellen eines gebildes. | |
Schvartzman et al. | Star-contours for efficient hierarchical self-collision detection | |
CN107577882A (zh) | 一种侧铣直纹曲面的表面形貌建模及成型的仿真方法 | |
Hutter et al. | Optimized continuous collision detection for deformable triangle meshes | |
CN102393826B (zh) | 一种基于多核并行处理的柔性场景连续碰撞检测方法 | |
CN107563653A (zh) | 一种多机器人全覆盖任务分配方法 | |
CN107704799A (zh) | 一种人体动作识别方法及设备、计算机可读存储介质 | |
CN100337250C (zh) | 一种人体模型与柔性物体间的冲突检测方法 | |
CN104391482B (zh) | 一种基于模具型面延伸的纵向拉形加载轨迹设计方法 | |
CN101739713A (zh) | 一种基于剖分的并行碰撞检测方法 | |
CN108228998A (zh) | 基于web的电脑出格设计系统 | |
CN110634149B (zh) | 一种用于光学动作捕捉系统的非刚体目标特征点匹配方法 | |
CN106023317A (zh) | 一种用于大数据测试的加权Voronoi图生成方法 | |
CN1567383A (zh) | 利用文字脚本制作三维动画的方法 | |
CN102136039A (zh) | 一种建立地图模型的方法和设备 | |
Tang et al. | Adjacency-based culling for continuous collision detection | |
Watanabe et al. | Parameter identification of depth-depth-matching algorithm for liver following | |
CN104408685A (zh) | 一种混合cpu和gpu的大规模物体群的碰撞剔除方法 | |
CN107610231A (zh) | 一种动态碰撞检测方法 | |
CN102663674B (zh) | 并行化实时无标记人体运动跟踪方法 | |
CN105303602A (zh) | 一种3d人体模型骨骼自动绑定过程及方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20070912 Termination date: 20161026 |
|
CF01 | Termination of patent right due to non-payment of annual fee |