CN112862956A - 基于HRBFs的人体与服装模型碰撞检测和处理方法 - Google Patents

基于HRBFs的人体与服装模型碰撞检测和处理方法 Download PDF

Info

Publication number
CN112862956A
CN112862956A CN202110162106.1A CN202110162106A CN112862956A CN 112862956 A CN112862956 A CN 112862956A CN 202110162106 A CN202110162106 A CN 202110162106A CN 112862956 A CN112862956 A CN 112862956A
Authority
CN
China
Prior art keywords
human body
model
point
collision
bounding box
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
CN202110162106.1A
Other languages
English (en)
Other versions
CN112862956B (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.)
Nanjing University
Original Assignee
Nanjing University
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 Nanjing University filed Critical Nanjing University
Priority to CN202110162106.1A priority Critical patent/CN112862956B/zh
Publication of CN112862956A publication Critical patent/CN112862956A/zh
Application granted granted Critical
Publication of CN112862956B publication Critical patent/CN112862956B/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/005Tree description, e.g. octree, quadtree
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/006Mixed reality
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/21Collision detection, intersection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/44Morphing

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Software Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Processing Or Creating Images (AREA)

Abstract

本发明提供了基于HRBFs的人体与服装模型碰撞检测和处理方法,该方法以三维服装、人体模型为对象,利用hermit径向基函数对多个三维模型进行碰撞检测,结合网格形变算法进行碰撞处理,最终通过布料仿真来实现计算机中三维人体试衣的效果。该方法的主要步骤包括:利用人体特征尺寸和关节点信息生成三维人体模型;对所有选择的服装模型和人体模型进行碰撞检测和处理;对服装模型进行布料仿真,并展示人体试衣效果。本发明能够使互相穿透的人体、服装模型达到无碰撞的效果,不需要进行手动调整,具有一定的通用性和实用性。

Description

基于HRBFs的人体与服装模型碰撞检测和处理方法
技术领域
本发明涉及基于HRBFs的人体与服装模型碰撞检测和处理方法。
背景技术
在虚拟试衣系统中,服装模型具有丰富的褶皱细节、且极易变形,不可避免的会与人体模型产生碰撞、互相穿透,因此碰撞检测和处理是决定试衣效果的关键因素。如何快速检测出服装与人体模型之间的碰撞并做出符合物理规律的响应是影响试衣体验的关键问题。
碰撞检测实质是判断服装模型与人体模型的基本组成元素在三维空间是否相交,一般分为连续碰撞检测和离散碰撞检测。
1、离散碰撞检测方法:主要是检测某一时刻T的两个静态模型是否发生穿插,并返回具体的碰撞信息,如穿插深度、发生穿插的多边形网格的序号等。目前常用的经典算法有基于层次包围盒的碰撞检测算法、基于空间分解的碰撞检测算法、基于图像空间的碰撞检测算法。
2、连续碰撞检测方法:主要是检测两个模型在一段时间间隔的运动过程中有没有碰撞,如果发生碰撞就返回第一次碰撞的具体信息。
碰撞处理是通过改变发生碰撞的基本元素的位置,来矫正服装与人体模型的相交、穿透,并尽量使变形的服装模型符合实际现象。针对动态,静态的物体模型有不同的处理方式。
1、基于物理模型的碰撞处理方法:运用物理学原理来实现仿真,如质点-弹簧法、有限元法、无网格法等。
2、基于几何模型的碰撞处理方法:本质是将发生碰撞的基本元素在三维空间移动,直至无碰撞,在此基础上改进的优化网格变形算法则是同时考虑了非碰撞元素的随动情况。
近年来,有大量学者在研究碰撞检测算法。有学者对刚性体的碰撞检测进行了研究,通过求解碰撞方程判定是否发生碰撞,但求解过程耗时。Manocha等人提出给基本图元标记特征三角对,避免重复测试。国内学者提出通过基于层次剔除的碰撞检测来减少不必要的精确计算,提高柔性织物模拟中的碰撞检测效率。又有学者研究根据三维模型的拓扑信息构建层次包围盒,可以排除大多数没有发生碰撞的三角对。
大多数碰撞处理方法是基于历史的,不能处理预先存在的碰撞。空气网格方法就是一种基于历史的碰撞处理模型,它能记住预处理时的无碰撞状态。然而,预先存在的碰撞经常出现在虚拟试衣系统和服装合成等应用中,由于没有无碰撞的初始状态供参考,因此需要进行预处理。Volino等人提出了一种交叉轮廓最小化方法,它既不依赖于历史也不依赖于方向,可以处理任何类型的轮廓。然而忽略了在没有历史记录和方向的情况下,将两个碰撞表面分开经常会表现出不可预测的收敛行为。有学者提出使用三角形法线判断一个顶点是否穿透其他物体,但没有给出实现细节。还有学者提出了一个非常详细的算法,致力于解决如何将穿透人体的布料顶点移出人体的问题。对于每个布料碰撞点,找到与它最接近的人体模型顶点,然后将布料碰撞点沿着该人体模型顶点的法向量方向移动。因为仅处理碰撞点而不考虑全局,此方法不稳健,但值得参考改进。
发明内容
发明目的:本发明所要解决的技术问题是针对现有技术的不足,提供基于HRBFs的人体与服装模型碰撞检测和处理方法,该方法以三维服装、人体模型为对象,利用hermit径向基函数对多个三维模型进行碰撞检测,结合网格形变算法进行碰撞处理,最终通过布料仿真来实现计算机中三维人体试衣的效果。该方法的主要步骤包括:利用人体特征尺寸和关节点信息生成三维人体模型;对所有选择的服装模型和人体模型进行碰撞检测和处理;对服装模型进行布料仿真,并展示人体试衣效果。本发明能够使互相穿透的人体、服装模型达到无碰撞的效果,不需要进行手动调整,具有一定的通用性和实用性。
基于HRBFs的人体与服装模型碰撞检测和处理方法,包括以下步骤:
包括如下步骤:
步骤1,根据骨架参数构建人体模型;
步骤2,构建人体隐式曲面函数;
步骤3,构建人体、服装模型层次包围盒树;
步骤4,进行服装与人体间的碰撞检测;
步骤5,进行碰撞处理和网格变形;
步骤6,布料模拟并展示渲染结果。
步骤1包括:
读取人体骨架关节点和特征尺寸的文件,将人体划分成静态区块和动态区块。
静态区块是使用插值样条曲面建立的适合于人体尺寸的三维曲面模型,以关节点为基准,根据特征尺寸和骨架比例关系,采用插值样条曲面对人体静态区块构建曲面模型,同时获得人体各部位模型生成点的法向量;
动态区块是根据关节点位置以及对应两端静态区块的端口截面来生成的一系列连接截面,这些沿着骨骼方向的一系列连接截面最终构成连接各静态区块的网格模型;
在静态和动态区块构建完成后,将其拼接得到一个闭合的三维人体模型,进一步对拼接处进行平滑优化处理,得到最终的三维人体网格模型。
步骤2包括:
三维人体网格模型有N个顶点,将所有顶点作为采样点,在三维空间
Figure BDA0002935829910000031
中,有N个已知的Hermite数据
Figure BDA0002935829910000032
xi是采样点的坐标,ni是顶点的法向量,每个Hermite数据带有一个值fi,该值描述了采样点和隐式曲面的位置关系;
接下来的目标是要找到一个隐式曲面函数f来描述三维人体曲面模型,
Figure BDA0002935829910000033
必须满足如下条件:
Figure BDA0002935829910000034
有f(xi)=fi并且
Figure BDA0002935829910000035
找到一个使能量函数最小的解,即最小
Figure BDA0002935829910000036
广义插值函数f*,并且这个最优解是唯一的,形式如下:
Figure BDA0002935829910000037
其中,
Figure BDA0002935829910000038
是f(xi)的导数,x表示空间中的任意一点,ψ(x)=φ(‖x‖)是径向基函数;其中未知的标量系数
Figure BDA0002935829910000039
和向量系数
Figure BDA00029358299100000310
由f*(xi)=fi
Figure BDA00029358299100000311
这两个插值条件唯一确定:
Figure BDA00029358299100000312
Figure BDA00029358299100000313
Figure BDA0002935829910000041
其中H是Hessian算子,
Figure BDA0002935829910000042
xj是第j个顶点;(H)ij代表H的第i行第j列元素;
接下来需要求解αi和βi得到f*的具体表达式,通过组装相关矩阵得到形如Aα=c(这里没有意义,是线性方程组的形式)的形式:
Figure BDA0002935829910000045
有:
Figure BDA0002935829910000043
然后解线性方程组就能求得未知系数αi和βi
将系数带入(1)得到人体的隐式曲面函数f*(x),f*(x)=0即隐式曲面函数的0等值面描述了人体模型的网格表面;对于空间中任意一点x,f*(x)>0说明点在曲面外部,f*(x)<0说明点在曲面内部,由此能够判断一个点和人体三维网格模型的位置关系。
步骤3包括:读取服装模型文件,并指定服装类型,服装模型是由三角面片组成的网格模型,三角面片的法线指向模型表面外侧;服装模型是流形;服装模型文件为obj格式;
根据服装模型的类型初始化服装模型的基本信息;
自上而下的构建人体、服装模型的18-dops层次包围盒树,18-Dops包围盒是一种由一组半空间Hi确定其面的封闭几何空间,18个固定的方向集(D1,D2,……,D18)决定了半空间的外法向;选取方向完全相反且共线的向量对作为固定法向,则只使用了9个方向,正方向为(1,0,0)、(0,1,0)、(0,0,1)、(1,1,0)、(1,0,1)、(0,1,1)、(1,-1,0)、(1,0,-1)、(0,1,-1),反方向为(-1,0,0)、(0,-1,0)、(0,0,-1)、(-1,-1,0)、(-1,0,-1)、(0,-1,-1)、(-1,1,0)、(-1,0,1)、(0,-1,1),用矩阵形式来表示半方向集D:
Figure BDA0002935829910000044
将一个三角面片的三个顶点与半方向集D中第一个方向(1,0,0)分别做点积,得到的最大值就是该方向上的最大延伸。例如一个三角面片的三个顶点坐标分别为(2,1,4)、(6,2,3)和(4,6,2):
(1,0,0)·(2,1,4)=2
(1,0,0)·(4,6,2)=4
(1,0,0)·(6,2,3)=6
最大值为6,所以该三角面片在第一个方向(1,0,0)上的最大延伸是6。
计算半方向集中每一个方向的最大延伸得到一个三角面片的包围盒。
选择自顶向下的方法来构造层次包围盒树,层次包围盒树是一棵二叉树。将一个三维网格模型的全部三角面片称作全集S,从全集S开始,将其当作根结点,然后根据整个集合的特征递归的进行左、右结点划分,直到每个结点中只有一个元素;左、右结点的划分方法为,取当前包围盒9个固定方向中的最长轴线的中点进行划分,计算当前包围盒中每个三角形的重心属于划分后的哪一部分,对每一部分重新计算包围盒;对新结点继续进行划分,直到包围盒中只有一个元素;树的根节点记录整个模型(是任意模型,在本发明方法里既要构造人体模型的包围盒树,也要改造服装模型的包围盒树)的包围盒以及所有三角面片、顶点信息;树的子结点记录了其所包含的三角面片、顶点信息以及这部分模型的包围盒。
步骤4包括:将碰撞检测分为宽阶段和窄阶段:
宽阶段是包围盒碰撞检测,比较人体包围盒树(步骤3自上而下的构建人体、服装模型的18-dops层次包围盒树)的根结点与服装包围盒树的根节点重叠与否,如果不重叠返回没有发生碰撞的信息;如果重叠,沿着服装模型的包围盒树向下遍历左右子结点,当子结点只包含一个三角面片,再用所述三角面片遍历人体模型的包围盒树,直到结点中都只有一个三角面片,得到可能发生碰撞的三角面片对以及可能在人体内部的服装模型顶点集;
随后进入窄阶段的碰撞检测:窄阶段需要逐一检测服装模型顶点集中的顶点是否在人体内部,将每个可能在人体内部的服装模型顶点x,带入步骤2求得的人体隐式曲面函数计算f*(x),f*(x)<0的点就是在人体内部的点,即碰撞点。
步骤5包括:根据碰撞点函数值来进行碰撞处理,首先利用2元合成算子实现隐式解缠,
Figure BDA0002935829910000051
描述了与人体模型无碰撞的服装模型曲面,通过二元合成算子
Figure BDA0002935829910000052
来构造
Figure BDA0002935829910000053
Figure BDA0002935829910000054
其中碰撞点是服装模型网格顶点,所以
Figure BDA0002935829910000055
是碰撞检测窄阶段求得的隐式曲面函数值;
将碰撞点沿梯度方向投射到
Figure BDA0002935829910000061
的零等值面上,实现将人体内部的服装模型顶点移出人体。
步骤5还包括:结合ARAP网格变形(As-rigid-as-possible surface modeling,类似刚性网格变形)算法来进行优化,具体包括:
ARAP网格变形的过程中,每个顶点和与其相邻的边构成一个变形单元,在变形过程中,每个变形单元只进行旋转变换,使得变形过程中每个点在其1-邻域中的相对位置不发生改变,即对点vi和其每个相邻点vj,旋转矩阵Ri,满足:
v′i-v′j=Ri(vi-vj)
其中,vi是第i个点,vj是vi的第j个相邻点,v′i、v′j是vi、vj移动后的新位置;
给定变形约束,对每一个顶点,定义能量损耗函数f(V′,Ri):
Figure BDA0002935829910000062
其中Ri为每个顶点的最优旋转矩阵,wij为边ij的权重,则变形前后整个网格的能量损耗函数为:
Figure BDA0002935829910000063
其中,V是顶点集,Ni是vi的1-邻域点的索引集合;
通过最小化上述能量损耗函数实现最优变形,上式中需要求解的未知量为所有非约束顶点的V′i和R,将R和V′i依次看作已知量进行求解,R已知时,只需对V′求偏导,使偏导值为0,得到最优V′;当V′已知时,求出
Figure BDA0002935829910000064
从任意初始V′开始,依次固定V′、R′,直至能量损耗最终收敛,最终得到的V′即为变形结果;
将碰撞点作为变形的控制点,将碰撞点的k邻域作为变形的固定点,控制点和固定点组成移动点,将控制点的目标位置和固定点的当前位置作为变形约束,根据所述ARAP网格变形算法计算出移动点的新位置,得到变形后的服装模型。
步骤6包括:将服装模型加入FlexClothWrapper容器,将人体模型加入FlexColliderWrapper容器,设置布料相关参数运行动态仿真,计算得到下一帧的服装模型顶点位置;对人体模型和下一帧服装模型进行碰撞检测,如果发生碰撞转到步骤5,如果没有碰撞就展示所有模型的渲染结果。
本发明具有如下有益效果:
(1)将碰撞检测分为了宽阶段和窄阶段,在宽阶段利用特性简单的包围盒包裹复杂模型来简化并加速碰撞检测,快速排除大量不相交区域,提高了检测效率,减少了窄阶段的计算量。
(2)碰撞检测窄阶段利用隐式曲面方程表示模型表面,不仅可以精确的检测出顶点在模型的内部、表面还是外部,还能得到具体的相对位置关系。隐式曲面函数的一阶导数表示了曲面上点的梯度方向,是碰撞处理需要的关键信息。
(3)结合HRBFs的碰撞处理能够通过提取不同的等值面表现出服装模型的厚度;并且改用多元合成算子后能够处理多模型的相交解缠。
(4)结合ARAP的模型形变能够保证服装模型不发生扭曲突变,同时保持一定的细节特征。
本发明方法实现了一个完整的虚拟试衣流程,具有一定的通用性和实用性。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1是本发明方法流程图。
图2是碰撞检测流程图。
图3是虚拟试衣流程图。
图4a、图4b、图4c是效果图。
具体实施方式
如图1、图2、图3所示,本发明提供了一种用于计算机虚拟试衣的碰撞检测和处理方法,包括如下步骤:
步骤1,根据骨架参数构建人体模型:
读取人体骨架关节点和特征尺寸的文件,将人体划分成形变上静态、动态的多个区块。静态区块是使用插值样条曲面建立的适合于人体尺寸的三维曲面模型,以关节点为基准,根据特征尺寸和骨架比例关系,采用插值样条曲面对人体静态区块构建曲面模型,同时获得人体各部位模型生成点的法向量。动态区块则是根据关节点位置以及对应两端静态区块的端口截面来生成的一系列连接截面,这些沿着骨骼方向的截面最终构成连接各静态区块的网格模型。在静态和动态区块构建完成后,将其拼接得到一个闭合的三维人体模型,为了使得整体网格光顺,进一步对拼接处进行平滑优化处理,得到最终的三维人体网格模型。这种建模方法效率更高且具有更高的灵活性,通过骨架关节点的改变可以改变人体姿势,通过特征尺寸的改变可以改变人体体型,为更加方便地控制和改变人体提供了可能。文献1:熊昌泰.面向虚拟试衣的实时三维人体建模及系统实现[D].南京大学,2018对三维人体建模做了详细介绍。
步骤2,构建人体隐式曲面函数:
根据人体网格模型中的顶点和顶点法向量信息,构建人体隐式曲面函数。
隐式曲面可以用来表示三维几何形体,径向基函数(RBF)是隐式曲面重建算法中被广泛运用的一种,RBF隐式曲面重建本质是一个插值过程,HRBF是基于RBF对一阶Hermite数据的插值方法,一阶Hermite数据是包含点和相应法向量的数据,使得不用额外引入偏移点就能得到非平凡解。
三维人体网格模型有N个顶点,将所有顶点作为采样点。所以在
Figure BDA0002935829910000081
空间中,有N个已知的Hermite数据
Figure BDA0002935829910000082
xi是顶点的坐标,ni是顶点的法向量,每个数据带有一个值fi,该值描述了采样点和隐式曲面的位置关系。因为顶点在人体模型表面,所以fi=0。
接下来的目标是要找到一个隐式曲面函数f来描述三维人体曲面模型,
Figure BDA0002935829910000083
必须满足如下条件:
Figure BDA0002935829910000084
有f(xi)=fi并且
Figure BDA0002935829910000085
这样的函数不是唯一的,但可以找到一个使能量函数最小的解,即最小
Figure BDA0002935829910000086
广义插值函数f*,并且这个最优解是唯一的,形式如下:
Figure BDA0002935829910000087
x表示空间中的任意一点,xi是采样点,ψ(x)=φ(‖x‖)是径向基函数。其中未知的标量系数
Figure BDA0002935829910000088
和向量系数
Figure BDA0002935829910000089
由f*(xi)=fi
Figure BDA00029358299100000810
这两个插值条件唯一确定:
Figure BDA0002935829910000091
Figure BDA0002935829910000092
Figure BDA0002935829910000093
其中H是Hessian算子,
Figure BDA0002935829910000094
接下来需要求解αi和βi得到f*的具体表达式,通过组装相关矩阵得到形如Aα=c的形式:
Figure BDA0002935829910000095
Figure BDA0002935829910000096
然后解线性方程组就能求得未知系数αi和βi
采用紧支撑径向基函数:
Figure BDA0002935829910000097
将系数和径向基函数带入(1)得到人体的隐式曲面函数f*(x),f*(x)=0即隐式曲面函数的0等值面描述了人体模型的网格表面。对于空间中任意一点x,f*(x)>0说明点在曲面外部,f*(x)<0说明点在曲面内部,由此可以方便的判断一个点和一个三维网格模型的位置关系。
步骤3,构建人体、服装模型层次包围盒树
读取服装模型文件,并指定服装类型(上衣、裤子、连衣裙、短裙)。本发明中要求服装模型必须是由三角面片组成的网格模型;三角面片的法线指向模型表面外侧;模型必须是流形;模型文件为“.obj”格式。
根据服装模型的类型初始化服装模型的基本信息。例如读取的是“sweater.obj”文件,类型为上衣,将模型网格数据存入CGAL::Surface_mesh类中。Surface_mesh类是半边数据结构的实现,它是基于索引的,使用整数索引作为顶点、半边、边缘和面的描述符,由于索引是连续的,因此它们可以用作存储属性的向量的索引。半边数据结构最大特点是半边,把一条边保持长度不变,形式上分为两个半边,每个半边都是一个有方向,方向相反。如果一个边被两个面共用,则每个面都能各自拥有一个半边。如果一个边仅被一个面占有(边界边),则这个面片仅拥有该边的其中一个半边。半边数据结构的三个重要的数据结构分别是顶点、半边、面片。顶点包含出半边的指针或索引;半边包含起始点、邻接面、下一条半边、上一条半边的指针或索引;面片包含一条起始边的指针或索引。根据半边数据结构的特性,可以容易的找到网格模型的边缘,从而得到上衣模型的领口、袖口、下摆的位置。
自上而下的构建人体、服装模型的18-dops层次包围盒树,,核心在于利用特性比较简单的几何空间包裹住复杂的三维网格模型,加速碰撞检测。18-Dops包围盒是一种由一组半空间Hi确定其面的封闭几何空间,18个固定的方向集(D1,D2,……,D18)决定了这些半空间的外法向。为了方便,选取方向完全相反且共线的向量对来作为固定法向,所以实际上只使用了9个方向。正方向为(1,0,0)、(0,1,0)、(0,0,1)、(1,1,0)、(1,0,1)、(0,1,1)、(1,-1,0)、(1,0,-1)、(0,1,-1),反方向为(-1,0,0)、(0,-1,0)、(0,0,-1)、(-1,-1,0)、(-1,0,-1)、(0,-1,-1)、(-1,1,0)、(-1,0,1)、(0,-1,1)。可以用矩阵形式来表示半方向集D:
Figure BDA0002935829910000101
一个三角面片的18-Dops包围盒可以通过计算固定方向集D中每一个方向与三角形顶点的最大点积得到,其中的最大值作为模型各方向上的最大距离,最小值作为最小距离。计算有n个顶点的三维模型的k-Dops包围盒可以在O(kn)时间内完成。例如三角形T的顶点坐标分别为(2,1,4)、(6,2,3)和(4,6,2)。通过依次计算D中的每一个方向向量和三角形三个顶点的点积得到这个三角形的包围盒。例如,要找到方向(1,0,0)上的最大延伸,计算三个顶点的点积:
(1,0,0)·(2,1,4)=2
(1,0,0)·(4,6,2)=4
(1,0,0)·(6,2,3)=6
最大值为6,所以X在(1,0,0)上的最大延伸是6,同时(-1,0,0)是D中和(1,0,0)方向相反的向量,所以X的顶点与(1,0,0)的点积的最小值就是X在(-1,0,0)上的最大延伸。通过计算固定方向集D其它方向上的点积,可以很容易得到点的包围盒。
选择自顶向下的方法来构造层次包围盒树,核心是要把一个模型划分为若干不相交的子集。层次包围盒树本质是一棵二叉树,从模型全集S开始,将其当作根结点,然后根据整个集合的特征递归的进行左右结点划分,直到每个结点中只有一个元素。左右结点的划分方法为,取当前包围盒9个固定方向中的最长轴线的中点进行划分,计算当前包围盒中每个三角形的重心属于划分后的哪一部分,对每一部分重新计算包围盒。对新结点继续进行划分,直到包围盒中只有一个元素。树的根节点记录整个模型的包围盒以及所有三角面片、顶点信息。树的子结点记录了其所包含的三角面片、顶点信息以及这部分模型的包围盒。
步骤4,服装与人体间的碰撞检测。
将碰撞检测分为宽阶段和窄阶段。
宽阶段主要是包围盒碰撞检测,比较人体包围盒树的根结点与服装包围盒树的根节点重叠与否。如果不重叠返回没有发生碰撞的信息;如果重叠,沿着服装模型的包围盒树向下遍历左右子结点,当子结点只包含一个三角面片,再用该三角面片遍历人体模型的包围盒树,直到结点中都只有一个三角面片,得到可能发生碰撞的三角面片对以及可能在人体内部的服装模型顶点集。
随后进入窄阶段的碰撞检测。窄阶段需要逐一检测顶点集中的顶点是否在人体内部,得到精确的碰撞点信息。将每个可能在人体内部的服装模型顶点x,带入步骤2求得的人体隐式曲面函数计算f*(x),f*(x)<0的点就是真正在人体内部的点,即碰撞点。
步骤5,碰撞处理和网格变形:
根据碰撞点函数值来进行碰撞处理。首先利用2元合成算子实现隐式解缠。
Figure BDA0002935829910000111
描述了与人体模型无碰撞的服装模型曲面,通过二元合成算子
Figure BDA0002935829910000112
来构造
Figure BDA0002935829910000113
Figure BDA0002935829910000114
其中碰撞点是服装模型网格顶点,所以
Figure BDA0002935829910000115
是碰撞检测窄阶段求得的值。
然后将碰撞点沿梯度方向投射到
Figure BDA0002935829910000116
的零等值面上,实现将人体内部的服装模型顶点移出人体。为了保持服装模型的细节特征和模型表面光顺,还需结合ARAP网格变形算法来进行优化。
ARAP变形的过程中,每个顶点和与其相邻的边构成一个变形单元,在变形过程中,每个变形单元只进行旋转变换。使得变形过程中每个点在其1-邻域中的相对位置不发生改变。即对点i和其每个临点j,旋转矩阵Ri,满足
v′i-v′j=Ri(vi-vj)
实际上,由于不同顶点的相互影响,每个顶点的最终位置由多个临点构成的多个旋转单元共同决定。给定变形约束,对每一个顶点,可定义能量损耗函数:
Figure BDA0002935829910000121
其中Ri为每个顶点的最优旋转矩阵,wij为边ij的权重,本文使用余切权重。则变形前后整个网格的能量损耗为
Figure BDA0002935829910000122
ARAP变形的核心思想即为通过最小化上述能量损耗函数实现最优变形。
上式中需要求解的未知量为所有非约束顶点的V′i和R。常使用两部迭代法,将R和V′i依次看作已知量进行求解。R已知时,只需对V′求偏导,使偏导值为0,得到最优V′;当V′已知时,可求出
Figure BDA0002935829910000123
从任意初始V′开始,依次固定V′、R′,直至能量损耗最终收敛,最终得到的V′即为变形结果。
将碰撞点作为变形的控制点,将碰撞点的k邻域作为变形的固定点(本方案将k设为3),控制点和固定点组成移动点,将控制点的目标位置和固定点的当前位置作为变形约束,根据上述ARAP变形方法计算出移动点的新位置,得到变形后的服装模型。
步骤6,布料模拟并展示渲染结果:
服装布料模拟阶段借助Flex提供的框架实现的服装仿真。将服装模型加入FlexClothWrapper容器,将人体模型加入FlexColliderWrapper容器,然后设置布料参数,将拉伸刚度设为1.0,弯曲刚度设为0.6,弹性系数设为0.6,运行动态仿真,计算得到下一帧的服装模型顶点位置。对人体模型和下一帧服装模型进行碰撞检测,如果发生碰撞转到碰撞处理步骤,如果没有碰撞就展示所有模型的渲染结果。图4a、4b中,左边一列是初始状态互相穿透的服装、人体模型;中间一列是使用本方法碰撞检测和处理以后的人体、服装网格模型,可以看到人体、服装不再互相穿透;右边一列是渲染结果。图4c左边一列是初始状态互相穿透的服装、人体模型;右边一列是使用本方法碰撞检测和处理以后的人体、服装模型渲染结果,人体、服装不再互相穿透。
本发明提供了一种用于计算机虚拟试衣的碰撞检测和处理方法,具体实现该技术方案的方法和途径很多,以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用现有技术加以实现。

Claims (8)

1.基于HRBFs的人体与服装模型碰撞检测和处理方法,其特征在于,包括如下步骤:
步骤1,根据骨架参数构建人体模型;
步骤2,构建人体隐式曲面函数;
步骤3,构建人体、服装模型层次包围盒树;
步骤4,进行服装与人体间的碰撞检测;
步骤5,进行碰撞处理和网格变形;
步骤6,布料模拟并展示渲染结果。
2.根据权利要求1所述的方法,其特征在于,步骤1包括:
读取人体骨架关节点和特征尺寸的文件,将人体划分成静态区块和动态区块;
静态区块是使用插值样条曲面建立的适合于人体尺寸的三维曲面模型,以关节点为基准,根据特征尺寸和骨架比例关系,采用插值样条曲面对人体静态区块构建曲面模型,同时获得人体各部位模型生成点的法向量;
动态区块是根据关节点位置以及对应两端静态区块的端口截面来生成的一系列连接截面,这些沿着骨骼方向的一系列连接截面最终构成连接各静态区块的网格模型;
在静态和动态区块构建完成后,将其拼接得到一个闭合的三维人体模型,进一步对拼接处进行平滑优化处理,得到最终的三维人体网格模型。
3.根据权利要求2所述的方法,其特征在于,步骤2包括:
三维人体网格模型有N个顶点,将所有顶点作为采样点,在三维空间
Figure FDA0002935829900000011
中,有N个已知的Hermite数据
Figure FDA0002935829900000012
xi是采样点的坐标,ni是顶点的法向量,每个Hermite数据带有一个值fi,该值描述了采样点和隐式曲面的位置关系;
接下来的目标是要找到一个隐式曲面函数f来描述三维人体曲面模型,
Figure FDA0002935829900000013
必须满足如下条件:
Figure FDA0002935829900000014
有f(xi)=fi并且
Figure FDA0002935829900000015
找到一个使能量函数最小的解,即最小
Figure FDA0002935829900000016
广义插值函数f*,并且这个最优解是唯一的,形式如下:
Figure FDA0002935829900000017
其中,
Figure FDA0002935829900000018
是f(xi)的导数,x表示空间中的任意一点,ψ(x)=φ(||x||)是径向基函数;其中未知的标量系数
Figure FDA0002935829900000019
和向量系数
Figure FDA00029358299000000110
由f*(xi)=fi
Figure FDA00029358299000000111
这两个插值条件唯一确定:
Figure FDA0002935829900000021
Figure FDA0002935829900000022
Figure FDA0002935829900000023
其中H是Hessian算子,
Figure FDA0002935829900000024
xj是第j个顶点;(H)ij代表H的第i行第j列元素;
接下来需要求解αi和βi得到f*的具体表达式,通过组装相关矩阵得到形如Aα=c的形式:
Figure FDA0002935829900000025
有:
Figure FDA0002935829900000026
然后解线性方程组就能求得未知系数αi和βi
将系数带入(1)得到人体的隐式曲面函数f*(x),f*(x)=0即隐式曲面函数的0等值面描述了人体模型的网格表面;对于空间中任意一点x,f*(x)>0说明点在曲面外部,f*(x)<0说明点在曲面内部,由此能够判断一个点和人体三维网格模型的位置关系。
4.根据权利要求3所述的方法,其特征在于,步骤3包括:读取服装模型文件,并指定服装类型,服装模型是由三角面片组成的网格模型,三角面片的法线指向模型表面外侧;服装模型是流形;服装模型文件为obj格式;
根据服装模型的类型初始化服装模型的基本信息;
自上而下的构建人体、服装模型的18-dops层次包围盒树,18-Dops包围盒是一种由一组半空间Hi确定其面的封闭几何空间,18个固定的方向集(D1,D2,......,D18)决定了半空间的外法向;选取方向完全相反且共线的向量对作为固定法向,则只使用了9个方向,正方向为(1,0,0)、(0,1,0)、(0,0,1)、(1,1,0)、(1,0,1)、(0,1,1)、(1,-1,0)、(1,0,-1)、(0,1,-1),反方向为(-1,0,0)、(0,-1,0)、(0,0,-1)、(-1,-1,0)、(-1,0,-1)、(0,-1,-1)、(-1,1,0)、(-1,0,1)、(0,-1,1),用矩阵形式来表示半方向集D:
Figure FDA0002935829900000027
将一个三角面片的三个顶点与半方向集D中第一个方向(1,0,0)分别做点积,得到的最大值就是该方向上的最大延伸;
计算半方向集D中每一个方向的最大延伸得到一个三角面片的18-Dops包围盒;
选择自顶向下的方法来构造层次包围盒树,层次包围盒树是一棵二叉树;将一个三维网格模型的全部三角面片称作全集S,从全集S开始,将其当作根结点,然后根据整个集合的特征递归的进行左、右结点划分,直到每个结点中只有一个元素;左、右结点的划分方法为,取当前包围盒9个固定方向中的最长轴线的中点进行划分,计算当前包围盒中每个三角形的重心属于划分后的哪一部分,对每一部分重新计算包围盒;对新结点继续进行划分,直到包围盒中只有一个元素;树的根节点记录整个模型的包围盒以及所有三角面片、顶点信息;树的子结点记录了其所包含的三角面片、顶点信息以及这部分模型的包围盒。
5.根据权利要求4所述的方法,其特征在于,步骤4包括:将碰撞检测分为宽阶段和窄阶段:
宽阶段是包围盒碰撞检测,比较人体包围盒树的根结点与服装包围盒树的根节点重叠与否,如果不重叠返回没有发生碰撞的信息;如果重叠,沿着服装模型的包围盒树向下遍历左右子结点,当子结点只包含一个三角面片,再用所述三角面片遍历人体模型的包围盒树,直到结点中都只有一个三角面片,得到可能发生碰撞的三角面片对以及可能在人体内部的服装模型顶点集;
随后进入窄阶段的碰撞检测:窄阶段需要逐一检测服装模型顶点集中的顶点是否在人体内部,将每个可能在人体内部的服装模型顶点x,带入步骤2求得的人体隐式曲面函数计算f*(x),f*(x)<0的点就是在人体内部的点,即碰撞点。
6.根据权利要求5所述的方法,其特征在于,步骤5包括:根据碰撞点函数值来进行碰撞处理,首先利用2元合成算子实现隐式解缠,
Figure FDA0002935829900000031
描述了与人体模型无碰撞的服装模型曲面,通过二元合成算子
Figure FDA0002935829900000032
来构造
Figure FDA0002935829900000033
Figure FDA0002935829900000034
其中碰撞点是服装模型网格顶点,所以
Figure FDA0002935829900000035
Figure FDA0002935829900000036
是碰撞检测窄阶段求得的隐式曲面函数值;
将碰撞点沿梯度方向投射到
Figure FDA0002935829900000041
的零等值面上,实现将人体内部的服装模型顶点移出人体。
7.根据权利要求6所述的方法,其特征在于,步骤5还包括:结合ARAP网格变形算法来进行优化,具体包括:
ARAP网格变形的过程中,每个顶点和与其相邻的边构成一个变形单元,在变形过程中,每个变形单元只进行旋转变换,使得变形过程中每个点在其1-邻域中的相对位置不发生改变,即对点vi和其每个临点vj,旋转矩阵Ri,满足:
v′i-v′j=Ri(vi-vj)
其中,vi是第i个点,vj是vi的第j个相邻点,v′i、v′j是vi、vj移动后的新位置;
给定变形约束,对每一个顶点,定义能量损耗函数f(V′,Ri):
Figure FDA0002935829900000042
其中Ri为每个顶点的最优旋转矩阵,wij为边ij的权重,则变形前后整个网格的能量损耗函数为:
Figure FDA0002935829900000043
其中,V是顶点集,Ni是vi的1-邻域点的索引集合;
通过最小化上述能量损耗函数实现最优变形,上式中需要求解的未知量为所有非约束顶点的Vi′和R,将R和Vi′依次看作已知量进行求解,R已知时,只需对V′求偏导,使偏导值为0,得到最优V′;当V′已知时,求出
Figure FDA0002935829900000044
从任意初始V′开始,依次固定V′、R′,直至能量损耗最终收敛,最终得到的V′即为变形结果;
将碰撞点作为变形的控制点,将碰撞点的k邻域作为变形的固定点,控制点和固定点组成移动点,将控制点的目标位置和固定点的当前位置作为变形约束,根据所述ARAP网格变形算法计算出移动点的新位置,得到变形后的服装模型。
8.根据权利要求7所述的方法,其特征在于,步骤6包括:将服装模型加入FlexClothWrapper容器,将人体模型加入FlexColliderWrapper容器,设置布料相关参数运行动态仿真,计算得到下一帧的服装模型顶点位置;对人体模型和下一帧服装模型进行碰撞检测,如果发生碰撞转到步骤5,如果没有碰撞就展示所有模型的渲染结果。
CN202110162106.1A 2021-02-05 2021-02-05 基于HRBFs的人体与服装模型碰撞检测和处理方法 Active CN112862956B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110162106.1A CN112862956B (zh) 2021-02-05 2021-02-05 基于HRBFs的人体与服装模型碰撞检测和处理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110162106.1A CN112862956B (zh) 2021-02-05 2021-02-05 基于HRBFs的人体与服装模型碰撞检测和处理方法

Publications (2)

Publication Number Publication Date
CN112862956A true CN112862956A (zh) 2021-05-28
CN112862956B CN112862956B (zh) 2024-01-26

Family

ID=75989130

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110162106.1A Active CN112862956B (zh) 2021-02-05 2021-02-05 基于HRBFs的人体与服装模型碰撞检测和处理方法

Country Status (1)

Country Link
CN (1) CN112862956B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113421331A (zh) * 2021-06-21 2021-09-21 中南大学 曲面重建方法、物体外观检测方法及应用方法
CN113610960A (zh) * 2021-07-19 2021-11-05 福建凯米网络科技有限公司 一种三维模型合并时防穿模的方法、装置及存储介质
CN113946885A (zh) * 2021-10-22 2022-01-18 上海百琪迈科技(集团)有限公司 一种基于全局相交轮廓线分析的布料穿透矫正方法
CN114820982A (zh) * 2022-04-26 2022-07-29 杭州隐捷适生物科技有限公司 一种面向数字化口腔正畸设计软件的碰撞深度计算方法
CN115393545A (zh) * 2022-07-21 2022-11-25 广州极点三维信息科技有限公司 基于可形变网格的碰撞处理方法、系统、设备及介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130187930A1 (en) * 2006-04-08 2013-07-25 Alan Millman Method and system for interactive simulation of materials and models
CN107067299A (zh) * 2017-03-29 2017-08-18 深圳奥比中光科技有限公司 虚拟试衣方法和系统
CN108230455A (zh) * 2018-01-31 2018-06-29 东南大学 一种基于骨骼驱动的虚拟服装变形仿真方法
US20180240262A1 (en) * 2015-08-17 2018-08-23 Side Effects Software Inc. Physically based simulation methods for modeling and animating two-and three-dimensional deformable objects

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130187930A1 (en) * 2006-04-08 2013-07-25 Alan Millman Method and system for interactive simulation of materials and models
US20180240262A1 (en) * 2015-08-17 2018-08-23 Side Effects Software Inc. Physically based simulation methods for modeling and animating two-and three-dimensional deformable objects
CN107067299A (zh) * 2017-03-29 2017-08-18 深圳奥比中光科技有限公司 虚拟试衣方法和系统
CN108230455A (zh) * 2018-01-31 2018-06-29 东南大学 一种基于骨骼驱动的虚拟服装变形仿真方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
THOMAS BUFFET 等: "Implicit Untangling: A Robust Solution for Modeling Layered Cloth", ACM TRANSACTIONS ON GRAPHICS, vol. 38, no. 4, pages 1 - 12 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113421331A (zh) * 2021-06-21 2021-09-21 中南大学 曲面重建方法、物体外观检测方法及应用方法
CN113421331B (zh) * 2021-06-21 2022-06-17 中南大学 基于曲面重建方法的物体外观检测方法及应用方法
CN113610960A (zh) * 2021-07-19 2021-11-05 福建凯米网络科技有限公司 一种三维模型合并时防穿模的方法、装置及存储介质
CN113610960B (zh) * 2021-07-19 2024-04-02 福建凯米网络科技有限公司 一种三维模型合并时防穿模的方法、装置及存储介质
CN113946885A (zh) * 2021-10-22 2022-01-18 上海百琪迈科技(集团)有限公司 一种基于全局相交轮廓线分析的布料穿透矫正方法
CN114820982A (zh) * 2022-04-26 2022-07-29 杭州隐捷适生物科技有限公司 一种面向数字化口腔正畸设计软件的碰撞深度计算方法
CN115393545A (zh) * 2022-07-21 2022-11-25 广州极点三维信息科技有限公司 基于可形变网格的碰撞处理方法、系统、设备及介质

Also Published As

Publication number Publication date
CN112862956B (zh) 2024-01-26

Similar Documents

Publication Publication Date Title
CN112862956A (zh) 基于HRBFs的人体与服装模型碰撞检测和处理方法
Botsch et al. Adaptive space deformations based on rigid cells
CN110288695B (zh) 基于深度学习的单帧图像三维模型表面重建方法
Wang et al. Parametric representation of a surface pencil with a common spatial geodesic
Xu et al. Pose-space subspace dynamics
CN110443885A (zh) 基于随机人脸图像的三维人头脸模型重建方法
US5159512A (en) Construction of minkowski sums and derivatives morphological combinations of arbitrary polyhedra in cad/cam systems
CN112862972A (zh) 一种表面结构网格生成方法
CN107330903A (zh) 一种人体点云模型的骨架提取方法
US9892485B2 (en) System and method for mesh distance based geometry deformation
CN110706332B (zh) 一种基于噪声点云的场景重建方法
CN112862957B (zh) 一种基于约束投影的gpu并行试衣仿真方法
De Araújo et al. Curvature dependent polygonization of implicit surfaces
Zell et al. Elastiface: Matching and blending textured faces
Jahanshahloo et al. Reconstruction of 3D shapes with B-spline surface using diagonal approximation BFGS methods
De Araújo et al. Adaptive polygonization of implicit surfaces
CN116416407A (zh) 衣物仿真中碰撞和自碰撞处理方法、系统、设备及介质
Siwei et al. Review of bounding box algorithm based on 3D point cloud
JP4175470B2 (ja) Cadシステム、曲面解析装置、曲面再生装置、その方法及びそのプログラム
Li et al. Multi-resolution modeling of shapes in contact
Vyatkin et al. Optimized finite element method using free-form volume patches for deformation of three-dimensional objects
Chen et al. A data-driven approach to efficient character articulation
Selig Curves of stationary acceleration in SE (3)
CN101655832B (zh) 一种基于标量场梯度的物理变形方法
Shah et al. GPU-accelerated post-processing and animated volume rendering of isogeometric analysis results

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