CN106407605A - 一种三维服装的粒子化计算机动态仿真方法 - Google Patents
一种三维服装的粒子化计算机动态仿真方法 Download PDFInfo
- Publication number
- CN106407605A CN106407605A CN201610936246.9A CN201610936246A CN106407605A CN 106407605 A CN106407605 A CN 106407605A CN 201610936246 A CN201610936246 A CN 201610936246A CN 106407605 A CN106407605 A CN 106407605A
- Authority
- CN
- China
- Prior art keywords
- particle
- grid
- model
- constraint
- point
- 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
- 239000002245 particle Substances 0.000 title claims abstract description 197
- 238000000034 method Methods 0.000 title claims abstract description 68
- 238000005094 computer simulation Methods 0.000 title abstract description 4
- 238000001514 detection method Methods 0.000 claims abstract description 30
- 230000008569 process Effects 0.000 claims abstract description 11
- 238000006073 displacement reaction Methods 0.000 claims description 19
- 238000005452 bending Methods 0.000 claims description 13
- 238000013517 stratification Methods 0.000 claims description 13
- 239000011159 matrix material Substances 0.000 claims description 12
- 230000008859 change Effects 0.000 claims description 11
- 230000004936 stimulating effect Effects 0.000 claims description 11
- 238000004804 winding Methods 0.000 claims description 11
- 238000004364 calculation method Methods 0.000 claims description 9
- 230000001052 transient effect Effects 0.000 claims description 7
- 230000009471 action Effects 0.000 claims description 4
- 239000008187 granular material Substances 0.000 claims description 3
- 238000012804 iterative process Methods 0.000 claims description 3
- 239000007787 solid Substances 0.000 claims description 2
- 230000015572 biosynthetic process Effects 0.000 claims 1
- 230000005484 gravity Effects 0.000 claims 1
- 230000000694 effects Effects 0.000 abstract description 16
- 238000004088 simulation Methods 0.000 abstract description 15
- 238000005516 engineering process Methods 0.000 abstract description 2
- 238000003672 processing method Methods 0.000 abstract 1
- 238000007670 refining Methods 0.000 abstract 1
- 230000000875 corresponding effect Effects 0.000 description 22
- 239000000463 material Substances 0.000 description 17
- 238000005381 potential energy Methods 0.000 description 5
- 206010068052 Mosaicism Diseases 0.000 description 4
- 241001274660 Modulus Species 0.000 description 3
- 230000001276 controlling effect Effects 0.000 description 3
- 238000012937 correction Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 244000309466 calf Species 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000009975 flexible effect Effects 0.000 description 2
- 230000008676 import Effects 0.000 description 2
- 210000000629 knee joint Anatomy 0.000 description 2
- 238000000053 physical method Methods 0.000 description 2
- 238000010008 shearing Methods 0.000 description 2
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 2
- 241001269238 Data Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000011248 coating agent Substances 0.000 description 1
- 238000000576 coating method Methods 0.000 description 1
- 238000000205 computational method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000149 penetrating effect Effects 0.000 description 1
- 238000011378 penetrating method Methods 0.000 description 1
- 239000000843 powder Substances 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 230000007480 spreading Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/23—Design optimisation, verification or simulation using finite element methods [FEM] or finite difference methods [FDM]
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种三维服装的粒子化计算机动态仿真方法,通过对衣物和人体的物理模型应用层次化建模和粒子化模拟的方法,实现快速并且鲁棒的物理仿真效果。该方法主要包括参数化的人体建模、粒子化人体模型、构建层次化衣物模型、基于粒子的快速碰撞检测算法。本发明在基于位置的仿真方法的基础上进行改进,提出使用网格重构技术,规范化衣物网格自身形态,增加计算过程的鲁棒性;使用不同大小和碰撞属性的粒子,实现快速鲁棒的离散时刻点碰撞检测和处理方法;使用多层次的粒子方法,引入细化表面密铺粒子方法防止穿过现象的出现,较为真实的实现多层衣物的仿真效果;使用带有优先级的约束求解方法,使用更少的迭代次数内实现仿真效果。
Description
技术领域
本发明涉及计算机图形学技术领域,尤其涉及到计算机仿真技术领域的衣物仿真的实现方法。
背景技术
虚拟试衣是虚拟现实(Virtual Reality,VR)领域的热点问题,它将计算机计算出来的虚拟衣物与实际拍摄的人体图像或者视频相结合,以期逼真的呈现人体穿着衣物的效果。虚拟试衣涉及计算机图形学、材料物理等诸多学科的相关技术,例如图像识别、人体建模、衣物仿真。并且虚拟试衣等相关问题更是有着广阔的应用前景,例如电影CG特效、实时3D游戏。在这些应用中,网购衣物无疑是虚拟试衣应用最重要的领域。通过虚拟试衣,人们足不出户便可以选择合适自己的衣物,免去了出行、试衣间排队等诸多困扰。
在虚拟试衣这一问题中,衣物材料的仿真是非常关键且困难的一步。为了应用于试衣这一场景,仿真过程必须非常高效,用户不能承受比较长时间的等待,即这一仿真过程必须是近实时的;另外,用户会要对比不同衣物的穿着效果,这要求仿真效果不仅仅是有一个可以接受的效果,而是必须逼真可信,具有一定的辨识度和区分度。
目前应用于虚拟试衣的主流方法主要有基于物理的数据驱动(data-driven)方法,基于物理的网格(mesh)模型方法和基于位置(position based)的仿真方法等,这些方法相互借鉴,互不冲突,并且各自有优缺点。
基于物理的数据驱动(data-driven)方法主要是利用计算机的计算资源,利用已知的各类材料在各类情况下的状态,来直接预测需要仿真的衣物状态,能够非常快速精确的实现各类材料在不同状态下的仿真效果。如何获得已知的各类材料的物理参数,并获得其在多种情况下的形变状态,是需要仔细考察的。现有方法普遍是使用精确的物理测量工具,对不同材料采集大量的数据,通过物理测量的方法获得大量准确数据,跨过了仿真过程中对物理参数的建模和计算方法,直接利用这些数据应用于仿真过程中。但是实际情况中,需要大量精确的物理仪器和测量实验的支持,并且需要覆盖用于仿真的各类材料,这种要求往往较难满足。
基于物理的网格(mesh)离散化方法是将衣物使用网格进行建模,而后设置网格中的物理参数,通过对网格中的基本单元——网格顶点或者网格面——进行基于物理参数的仿真来得到衣物的仿真效果。这其中有基于网格有限元(finite element)的方法和基于质点弹簧模型(mass-spring model)的方法。这种方法尽量真实的使用衣物材质的各种物理参数,代入基于牛顿定律的运动方程中,求解出每一帧的系统的运动状态。由于对时间的积分是离散的,系统的准确性和计算敛散性需要认真考量。对于运动方程的使用,有显式和隐式两种方式,显式运动方程对下一帧的计算全部使用上一帧的数据,计算量小,但是随着时间步长的增加会出现系统运动状态发散的情况;隐式方程将上一帧已知数据和下一帧待求数据列入方程,确保了系统的收敛性,但是在解方程中会消耗大量计算量,不容易达到实时性的要求。
基于位置的(position based)仿真方法是一种快速的近似的仿真方法,可以用于刚体、柔性物体、水等多种场景下。传统仿真主要是基于力以及力产生的能量,通过力驱动系统运动进行仿真计算。求解过程可以视作是寻找使得系统中的总势能最小的系统要疼状态。在基于位置的仿真方法中,整个系统离散化为一个粒子系统,所有的物体都看作是由粒子组成的粒子集合。系统中所有势能都定义为粒子位置的标量函数,通常随着系统运动,这些势能函数都趋向于0。将这些势能函数需要满足的条件直接定义成约束条件,通过求解这些约束条件就可以求得满足势能要求的系统状态(粒子位置)。并且基于位置的仿真方法可以等价于一类传统隐式运动方程的物理仿真方法,收敛性很好。并且使用对粒子位置的直接求解方法,省去了速度项,求解的稳定性不会受到时间步长的直接影响,求解效率也高。
综上所述,这些方法各有优劣。基于数据驱动的仿真方法可以产生对应材质在一般状态下非常逼真的结果,并且能够满足实时性的要求。但是首先需要大量的待仿真的材质在各种情况下的状态数据,这些数据需要通过精确的测量,并使用仿真方法对这些数据下的衣物进行仿真,实际情况中数据难以获取;基于物理的网格离散化仿真方法通过物理参数真实的对运动进行建模,不考虑实时性的情况下可以获得非常高的准确性,但是由于网格离散化以及时间离散化的影响,追求实时的方法通常对物理模型做了很大简化,这对系统运行的敛散性有很大影响;基于位置的仿真方法是一种快速的近似仿真方法,等价于一类传统的隐式运动方程的物理仿真方法,它跨过了速度层直接对位置进行计算,保证了系统的收敛性,但是由于其求解并不考察速度和时间步长,省去了力和运动方程求解,不能很好的对各种物理参数进行准确的刻画,因此在仿真的准确性上有所欠缺。
发明内容
发明目的:本发明的目的是是针对以上技术问题,综合考虑了数据获取的难易程度,仿真实时性或者近实时性的要求,实际应用环境下稳定性和鲁棒性的要求,以及仿真效果的逼真程度,提出一种三维服装的粒子化计算机动态仿真方法。
为了解决上述我技术问题,本发明公开了一种三维服装的粒子化计算机动态仿真方法,包括如下步骤:
步骤1,进行参数化的人体建模
步骤2,载入衣物模型并构建对应的层次化网格模型;
步骤3,粒子化人体表面网格模型
步骤4,粒子化模型自由运动;
步骤5,进行衣物自碰撞、多层衣物和人体间的碰撞检测;
步骤6,进行约束求解并更新粒子模型状态。
其中,步骤1包括如下步骤:
步骤1-1,获取人体表面的特征点和特征尺寸;
步骤1-2,根据获取的特征点和特征尺寸,以特征点为基准,根据特征尺寸和一定的比例关系(比例关系因人而异),如已知左膝特征点和小腿围这一特征尺寸,以特征点为中心,小腿围乘以一定的比例作为半径,即可求出周围一圈型值点,此处比例根据需要改变,因此该圈型值点不是规则圆形,通过这种方法求出每圈型值点,从而可得所有表面型值点,文献1:陈淼.参数化三维人体建模与系统实现[D].南京大学,2014对型值点做了详细介绍;
步骤1-3,对人体部位进行分块表面重建,采用插值样条曲面建立每个分块部位的曲面构成曲面模型,获得人体部位生成点的法向量,曲面模型较之实体模型和线框模型,可以兼顾真实性和效率;
步骤1-4,对各个人体分块部位的曲面进行光顺拼接;
步骤1-5,通过改变骨架点坐标以驱动人体动作实现人体动画,通过改变特征尺寸实现人体体型的改变,骨架点是特征点中人体每个部位接合处的点,是与运动相关的,如膝盖点,而有些特征点如乳高则不是骨架点。
对于每个人体部位,步骤1-3包括如下步骤:
步骤1-3-1,将该部位分层,每层都是一条闭合曲线,由于使用插值样条建模,因此曲线通过控制点,可以得到每层曲线的控制点,形成该部位的控制点矩阵,控制点可以方便地控制曲线形状;
求取插值样条曲线的一组基函数,公式如下:
其中x是曲线所在局部坐标系的横坐标,e是自然对数的底数,a是一个大于零的常数,从误差角度以及最终生成曲线(曲面)的圆滑程度考虑,通常选择插值样条曲线(曲面)中改变任何一个型值点,对曲线形状的影响限制在局部作用域中,且能保证最终生成的曲线(曲面)精确通过每一个型值点。
插值样条曲面的计算公式为:
其中,φ是提到的插值样条曲线的一组基函数φ(x,a),参见文献1,u,v分别是水平面平行方向和人体竖直方向上的坐标,i和j是控制点的序号,取值范围为i=0,1,…,m-1,j=0,1,…,n-1,m、n分别表示两个方向上控制点的个数,Pi,j为一控制点的坐标,Am×n=(Pi,j)m×n是控制点矩阵;
步骤1-3-2,控制点矩阵中的一个元素即为控制点的坐标,将该坐标与一组基函数的值代入插值样条曲面表达式中,通过调整参数方程中u,v的变化率,求得该人体部位表面任意一个表面点的坐标,表面点坐标用于与服装质点进行碰撞检测;
步骤1-3-3,对该人体部位生成的表面点进行三角网格化得到人体模型的三角面片,并计算各点法向量。
步骤1-4包括:通过重复型值点法实现插值样条曲面的光顺拼接:
对于一段曲线的光顺拼接,在一段曲线的首尾接合处各重复两个型值点作为辅助控制点从而实现该段曲线的光顺拼接;对于两段首尾接合的曲线的光顺拼接,则在两条曲线接合处各增加两个辅助控制点,辅助控制点选取与首尾接合处几何距离最近的型值点;
对于一块曲面的光顺拼接,将曲面表面法线作为w轴,曲面表面同时垂直于分层闭合曲线和垂直于w轴的方向作为u轴,同时垂直于u轴和w轴的方向为v轴,确定曲面切线空间中u轴、v轴和w轴方向,并通过以下步骤实现在u轴方向上的首尾光顺拼接:在曲面片u轴方向首尾各重复两层v轴方向的型值点作为辅助控制点,将辅助控制点矩阵代入插值样条曲面计算公式;对于有公共交点的不同曲面片的光顺拼接,则取与曲面片交接线的所有点间平均几何距离最近的两层点作为辅助控制点。
相对于基于点云重建人体模型的方法,这种建模方法效率更高且具有更高的灵活性,参为更加方便地控制和改变人体提供了可能,通过特征尺寸的改变可以改变体型,而通过特征点的位置改变可以快捷地实现人体动画效果。
步骤2包括如下步骤:
步骤2-1,载入衣物模型,衣物仿真程序对模型的要求,对载入模型有以下限定:模型为三角面片组成的网格,如果不是需要进行三角化操作;模型网格是一个流形;三角面片的卷绕顺序严格满足右手定则,法线指向模型表面外侧。导入的模型称为基本网格模型;
步骤2-2,使用网格重构(remesh)方法对衣物网格进行预处理,对网格表面做多次重构迭代,最大迭代次数为参数,取值范围为[0,7]之间的整数。在每次迭代过程中,依次查看所有的边,如果边的邻接面中与边对应的两个角度和超过180°,就翻转(flip)该边;如果边长长于网格中所有边长的均值的150%,则将边从中点处进行划分(split);如果边长短于网格中所有边长的均值的50%,,则将该边坍缩(collapse)成一个顶点。达到最大迭代次数,衣物网格趋向于一个均匀三角网格,拥有更好的仿真计算的性质;
步骤2-3,依据衣物模型的特征,初始化衣物顶点的属性。其中,顶点的属性有:上一位置(lastPosition),当前位置(currentPosition),预计位置(predictPosition),当前速度(velocity),位移(displacement);
步骤2-4,根据衣物网格表示,加载基于位置的仿真方法所需的约束,从仿真开始起这些约束就一直存在,因此称为固有约束。加载这些约束的步骤主要有:
步骤2-4-1,加载衣物基本网格的平面内约束,由于衣物网格均为三角网格,根据每个三角面片添加基于三角形有限元的约束:
C(x)=AΨ(F)=0
其中,x为顶点的位置向量,A是三角形的面积,Ψ为能量密度F是形变梯度u为位移场为顶点的位移场,X为衣物材料空间的点位置,∈为应变张量I为单位矩阵,E为衣物材料的弹性张量,作为物理参数设置。衣物模型的弹性张量通常使用五个参数确定,分别为纬向(kweft)、经向(kwrap)和剪切向(kshear)杨氏模量(Young’s modulus),以及纬向(vweft)、经向(vwrap)泊松系数(Poissonratios),弹性张量写作
其中,杨氏模量范围为[0,1],泊松系数范围为[0,0.5);
步骤2-4-2,加载衣物基本网格的弯曲约束,用于模拟衣物抵抗弯曲的能力,这种约束是衣物局部褶皱形态的关键所在。对于基本模型中的每一条边,即每一对相邻三角网格面,弯曲约束定义为两个相邻三角网格面的夹角,一共涉及一对相邻三角面的四个顶点x0,x1,x2,x3:
其中,Ai表示第i个三角面的面积,K=(c01+c04,c02+c03,-c01-c02,-c03-c04),这里cij表示第i,j条边ei和ej的夹角余切(cot)值cot<ei,ej。
步骤2-5,对于衣物上的所有顶点,视作粒子并设置粒子的相关属性,即粒子半径(radius)、粒子碰撞属性(v=f(x),x为空间中的三维位置坐标,v为该位置坐标处对应的向量,定义域为粒子内三维空间位置,值域为空间中的三维单位向量);
步骤2-6,基于现有的衣物的基本网格模型,使用网格细分方法进行网格细分,得出衣物的精细网格模型,具体细分的步骤主要有:
步骤2-6-1,将基本网格中所有的顶点以及顶点属性全部添加至新的网格模型中,作为精细网格的基础;
步骤2-6-2,对于基本网格中的每一个三角面,生成一组细分网格点,细分程度通过细分程度参数(dense)表示,每个网格点通过重心坐标(barycoord)与这个面的三个基本网格点相对应,
这三个基本网格顶点称为这个细分网格点的上层顶点,对于每一个生成的细分网格顶点,记录顶点的层次化信息,包括顶点的三个上层顶点标识符以及对应的重心坐标,这个过程中基本网格边也会被精细网格顶点细分,每次细分的过程中,记录基本网格边是否细分过,如果细分过则直接取细分的顶点即可;
步骤2-6-3,对于每一个细分过的基本网格三角面,根据细分顶点的顺序将细分面添加至精细网格中,添加时候需要按照基本网格三角面的卷绕顺序添加细分面,这样保证了细分网格面法线与基本网格面保持一致
步骤2-7,根据衣物的精细网格表示,加载生成精细褶皱所需的约束,这些约束也为固有约束,加载步骤主要有:
步骤2-7-1,由于精细网格顶点所在的位置不能太偏离他的原有位置,需要给每个精细网格顶点都添加位置约束,顶点原有位置(originPosition)应该是其在基本网格中的对应位置,根据该顶点的层次化属性,应该由上层顶点位置(x1,x2,x3)和对应的重心坐标(barycoord)计算得到,即
originPosition=(x1 x2 x3)*barycoord
实际得到的位置约束如下
C(x)=||x-originPosition||2=0
步骤2-7-2,精细网格本身作为衣物网格,相当于对衣物在小尺度的局部建模,因此也需要进行衣物属性的仿真,而且精细网格密度较大,计算开销大,并且其仿真影响局限于基本网格的一个面片尺度,因此为了简化计算,精细网格只使用基本的距离约束,即对于每一条精细网格边,对边的两个顶点x1,x2使用距离约束
C(x1,x2)=s*(||x1-x2||2-originDistance)=0
这里s表示网格的预拉伸系数,表示衣物本身的弹性属性,如果s<1,那么衣物倾向于绷紧,反之倾向于伸展,用于进行不同衣物材质的仿真,originDistance表示两个顶点之间边的原长;
步骤3包括如下步骤:
步骤3-1,根据人体表面网格模型以及三角面的卷绕顺序计算出面法线,并平均化求出顶点法线;
步骤3-2,将人体表面网格模型中的顶点作为人体的基本粒子模型,并设置碰撞属性;
步骤3-3,为了防止出现其他物体粒子在人体表面的镶嵌现象,对于人体表面网格中的每一个面,生成一组细分网格点,细分程度通过细分密度(dense)参数表示,每个点设置层次化属性,包含重心坐标,三个上层顶点,这样相当于是给人体网格致密的铺上许多碰撞相应点,增强碰撞检测的鲁棒性;
步骤3-4,由于参与碰撞检测的大多是表面网格模型,需要防止穿透效果的出现,即需要增加表面附近有效的碰撞检测的厚度,对于每个网格面上的细分粒子,可以通过对基本顶点法线的插值得出当前粒子的法线,将这些细分粒子沿各自的法线的反方向平移最大粒子的直径距离生成对应的一层新的表面内部细分粒子,设置表面内部细分粒子的碰撞属性为粒子内空间中的三维向量场v=f(x),x为空间中的三维位置坐标,v为该位置坐标处对应的向量,定义域为粒子内三维空间位置,值域为空间中的三维单位向量。给多层粒子层中的所有粒子分别设置大小和碰撞属性:表面粒子层中粒子的碰撞属性设置为
内部粒子层中的碰撞属性设置为
f(x)=n
其中,x为碰撞发生的位置,x0为粒子位置,r为粒子半径,n为粒子法线,I为单位向量;
设置层次化属性,存储该粒子对应的表面细分顶点粒子;对于比较容易穿透的物体,可以生成多层内部粒子层,增加防止穿透方法的鲁棒性。人体的表面细分粒子或者内部细分粒子的各类属性(位置、速度等)都可以通过层次化属性从人体基本网格顶点上直接计算出来;
步骤4包括如下步骤:
步骤4-1,根据三角面的三个顶点的位置,以及三个顶点的卷绕顺序,计算基本模型和精细模型中所有三角面的法线(normal),并使用顶点的所有邻接面法线平均化得出顶点法线,计算面法线的方法为normal=(x3-x1)×(x1-x2);
步骤4-2,根据牛顿运动学定律,对所有的基本网格顶点粒子进行只受外力fextern的自由运动,使用时间步长(Δt)、质量倒数和当前位置(currentPosition),更新速度(velocity)和预计位置(predictPosition)
predictPosition=currentPosition+Δt*velocity
并计算出这个时间步长中的预计位移;
步骤4-3,将基本网格中所有完全不自由运动(固定位置、粘连、人为拖动)的顶点粒子质量置为+∞,质量倒数置为0,并将这些顶点粒子的受迫运动后的位置记录在预计位置属性中;
步骤4-4,精细网格中的粒子的预计位移受到上层顶点的控制,即使用上层顶点的预计位移和对应的重心坐标计算出精细网格中的粒子位移,并使用该位移计算出精细顶点的预计位置;
步骤5包括如下步骤:
步骤5-1,统计所有需要进行碰撞检测的粒子,创建一个能够包含所有粒子的轴对称包围盒(axis-aligned bounding box,AABB);
步骤5-2,根据粒子的粒度大小以及大包围盒的大小,别对大包围盒在世界坐标系中的x轴、y轴和z轴方向上进行均等切割,将其切割成许多小长方体单元的子空间,每一个子空间在x轴、y轴和z轴上被切割出的序号分别为i,j,k,使用唯一的三元组(i,j,k)作为其标识符;
步骤5-3,选取合适的哈希函数hash(i,j,k),用子空间的标识符作为键,一个粒子容器作为值,建立哈希表,其中,如果不同子空间标识符计算出来的哈希值发生冲突,则直接把两个子空间的粒子容器合并,即并不区分发生冲突的不同子空间;
步骤5-4,对于每一个需要进行碰撞检测的粒子,根据其预计位置和粒子大小,计算其所在的所有子空间,将该粒子存入所有这些空间标识符对应的粒子容器中;
步骤5-5,对于每一个粒子,根据其预计位置和粒子大小,将其在空间哈希结构中涉及的所有子空间对应的粒子容器取出,依次与这些粒子容器中的所有粒子进行碰撞检测;
步骤5-6,对于所有发生碰撞的粒子对,根据粒子的自身碰撞属性确定碰撞向量,从而确定约束函数的形式,例如预计位置为x的粒子碰撞第j个粒子,定义约束为
C(x)=rj-(x-xj)Tfj(x)=0
其中,xj为第j个粒子的位置,rj为第j个粒子的半径,fj(x)为第j个粒子的碰撞属性。这种约束可以按照实际需求(例如是否允许浅层穿透)自行定义。这种为了进行碰撞处理而使用的约束,随着碰撞情况的变化而不断变化,称为暂时约束;
步骤6包括如下步骤:
步骤6-1,将所有的约束统一存储,并按照类型进行优先级进行多次迭代处理,迭代次数作为外部参数受人为控制。每一次求解约束都会对该约束涉及到的所有粒子计算出Δx,用这个值更新对应粒子的预计位置即可。每一次迭代处理中主要包括如下步骤:
步骤6-1-1,将基本模型的所有固有约束视作第一优先级即平面内的三角形有限元约束和弯曲约束,求解平面内的三角形有限元约束和弯曲约束,即优先计算出符合衣物内部物理模型的衣物顶点的预计位置,求解结果用于更新基本模型和精细模型的基本顶点的预计位置;
步骤6-1-2,将所有暂时约束视作第二优先级,即求解碰撞检测产生的约束,求解碰撞检测产生的约束,即优先满足基本模型的碰撞处理,使得衣物模型的总体框架正确,求解结果用于更新所有粒子的预计位置;
步骤6-1-3,将精细模型的所有固有约束视作第三优先级,即精细顶点的位置约束和精细网格边的距离约束,这样可以在基本衣物网格形态确定的情况下,通过求解精细模型的固有约束形成局部的褶皱效果;
步骤6-1-4,将所有暂时约束备份一份作为第四优先级,二次求解所述所有的碰撞检测产生的约束,完善碰撞处理过程;
步骤6-2,处理完毕后,更新所有顶点粒子属性,即上一位置等于当前位置,当前位置等于预计位置,当前速度等于当前位置减去上一位置的结果除以时间步长;
有益效果:
1)层次化的粒子结构中,将所有粒子都纳入基本网格的粒子的碰撞检测中,由于褶皱网格的存在填充了基本网格中间的空间,可以有效的防止衣物自碰撞的发生,并且没有额外的开销引入。
2)通过控制层次化的粒子结构中粒子的形状、大小,可以直接调整碰撞表面的厚度,使得这一过程并不十分依赖连续时段碰撞检测技术,所有碰撞检测只在时间步长结束的时候进行即可;
3)通过控制粒子在碰撞表面尤其是人体网格表面的平铺情况,可以避免镶嵌现象的发生。当粒子形状单一,并且没有完全覆盖整个碰撞表面时,很容易出现外部粒子嵌入碰撞表面的粒子模型中的镶嵌现象;对于非层次化的粒子模型来说,如果为了防止镶嵌现象而增加粒子的数量或者形态,又会对仿真效果和运行效率带来很大影响。
附图说明
下面结合附图和具体实施方式对本发明做更进一步的具体说明,本发明的上述和/或其他方面的优点将会变得更加清楚。
图1是本发明的整体步骤图。
图2是本发明的动态仿真方法流程图。
图3是本发明的约束迭代求解过程。
具体实施方式
本发明的方法可分为五大步骤,如图1所示,包括:
步骤1,进行参数化的人体建模;
步骤2,载入衣物模型并构建对应的层次化网格模型;
步骤3,粒子化人体表面网格模型;
步骤4,粒子化模型自由运动;
步骤5,进行衣物自碰撞、多层衣物和人体间的碰撞检测;
步骤6,进行约束求解并更新粒子模型状态。
本发明的具体步骤如下:
1)进行参数化的人体建模
1-1、获取人体表面的特征点和特征尺寸,具体获取方式可通过深度摄像头或手工设定
1-2、对获取的数据进行预处理;
1-3、每个人体部位通过分层建立表面网格,因此需要计算分层截面的型值点;
1-4、对人体进行分块表面重建,对每块部位曲面采用文献1提到的插值样条曲面建立,基于插值样条分块建模的大体步骤如下:
1-4-1,计算人体躯干各层控制点,形成人体躯干控制点矩阵;
1-4-2,求取插值样条曲面的一组基函数;
1-4-3,将控制点坐标与一组基函数的值代入插值样条曲面表达式中,可通过调整参数方程中u,v的变化率,求得人体表面任意个数点的坐标;
1-4-4,对躯干生成点进行三角网格化,并计算各点法向量,方便后续光照条件下观察人体。
1-5、使用插值样条曲面建立完每个部位的人体后,对各个人体分块曲面进行光顺拼接,使用“重复型值点”的方法以实现该部位的光顺拼接,即若要对一块曲面片u轴方向首尾光顺拼接,则需确定曲面片的切空间u轴、v轴和w轴,在u轴方向首尾各重复两层v轴方向的型值点作为辅助控制点作为控制点矩阵代入插值样条曲面计算公式。
1-6、人体动画的实现通过改变骨架点坐标以驱动人体动作改变,人体体型的改变通过改变特征尺寸实现。
2)载入衣物模型并构建对应的层次化网格模型
2-1使用开源模型导入库Assimp(Open Asset Import Library,http://assimp.org/)进行衣物模型的导入。Assimp支持obj、3ds等多种格式的模型文件。导入过程中选择反转纹理、模型三角化、合并相同顶点三个选项,并只保留顶点属性中顶点位置、顶点纹理坐标两个属性,移除边和面的属性。
2-2使用网格重构(remesh)方法对衣物网格进行预处理,对网格表面做多次重构迭代,迭代次数作为参数进行设置,一般取5以内的自然数。在每次迭代过程中,依次查看所有的边,如果边的邻接面中与边对应的两个角度和超过180°,就翻转(flip)该边;如果边长超过网格中所有边长的均值太多,则将边从中点处划分开(split);如果边长短于网格中所有边长的均值太多,则将该边坍缩(collapse)成一个顶点。多次迭代之后衣物网格趋向于一个均匀三角网格,拥有更好的仿真计算的性质;
2-3通过三角面的网格边卷绕顺序计算出网格法线,顶点的网格法线通过邻接面的法线平均化得到;顶点的设置三个位置属性:前序位置属性、当前位置属性和预计位置属性,均初始化为顶点当前位置;每个顶点添加质量和质量倒数属性,对于完全不自由运动的顶点,例如固定点或者拖曳点,质量初始化为+∞,质量倒数初始化为0;
2-4添加基本网格的固有约束;
2-4-1将基本网格的每个面的三个点x1,x2,x3为一组添加一个三角形有限元约束,定义约束函数为
其中,A是三角形的面积,∈为应变张量u为顶点的位移场,X为衣物材料空间的点位置,E为衣物材料的弹性张量,作为物理参数设置。衣物模型的弹性张量通常使用五个参数确定,分别为纬向(kweft)、经向(kwrap)和剪切向(kshear)杨氏模量(Young’s modulus),以及纬向(vweft)、经向(vwrap)泊松系数(Poisson ratios),弹性张量写作
其中,杨氏模量范围为[0,1],泊松系数范围为[0,0.5);
2-4-2将基本网格的每条边相邻的两个面的四个顶点x0,x1,x2,x3作为一组添加一个弯曲约束,约束函数为
其中,Ai,(i=1,2)表示第i个三角面的面积,K=(c01+c04,c02+c03,-c01-c02,-c03-c04),这里cij,(i,j=1,2,3,4)表示边ei和ej的夹角余切(cot)值cot<ei,ej;2-5对于基本网格上的所有顶点,都视作可以进行碰撞检测的粒子。如果粒子的位置为x0,设定粒子半径为r,单位向量为I,碰撞属性为,对球内任意一点x,即碰撞属性是一个粒子内的向量场,任意物体进入向量场会受到碰撞约束,碰撞约束以向量为参数设置;
2-6-1创建一个新网格,将基本网格中所有顶点依次添加至新网格中
2-6-2给基本网格每个边添加一个记录,用于记录该边上是否已经有细分网格。对于每一个基本网格三角面,生成所有细分网格点对应的重心坐标,如果顶点在面内或者在没有细分过的网格边上,将其添加进精细网格中,否则直接使用边的细分顶点。
2-6-3一个面上所有顶点生成之后,按照右手定则的卷绕方向将细分面添加进精细网格中。
2-7-1给精细网格中的细分顶点粒子(而非原有基本网格顶点)添加位置约束为
C(x)=||(x1 x2 x3)*barycoord||2-r=0
其中,x1,x2,x3为顶点的层次化属性中的三个上层顶点位置,barycoord为层次化属性中的重心坐标,r为当前粒子半径。
2-7-2对精细网格中的所有边添加距离约束
C(x1,x2)=s*(||x1-x2||2-originDistance)=0
x1,x2为边的两个顶点位置,s作为预拉伸系数,作为输入参数以供调整模型,取值范围为(0,+∞),originDistance为该边的原长;
3)粒子化人体表面网格模型
3-1根据人体表面网格模型以及三角面的卷绕顺序计算出面法线,并平均化求出顶点法线;
3-2,将人体表面网格模型中的顶点作为人体的基本粒子模型,并设置碰撞属性
3-3对于人体表面网格模型的每一个面,生成一组平铺粒子,每个粒子设置半径属性,在不显著增加粒子个数并贴合表面的情况下尽量覆盖这个面。设置碰撞属性为
其中,x为碰撞发生的位置,x0为粒子位置,r为粒子半径,n为粒子法线,I为单位向量。每次人体模型发生变化的时候,通过表面细分粒子的层次化属性中取出重心坐标和三个上层顶点的位移量,插值计算得出自己的位移量;
3-4对于每一个表面粒子,包括模型顶点粒子和平铺粒子,均沿法线反方向移动一段,生成一层新的内部粒子,给其设置碰撞属性为f(x)=n。每次人体模型发生变化的时候,从内部粒子的层次化属性中取出对应的表面细分粒子的位移量即为自己的位移量;
4)粒子化模型自由运动
4-1,根据三角面的三个顶点的位置,以及三个顶点的卷绕顺序,计算基本模型和精细模型中所有三角面的法线(normal),并使用顶点的所有邻接面法线平均化得出顶点法线,面法线计算公式为normal=(x3-x1)×(x1-x2);
4-2,根据牛顿运动学定律,对所有的基本网格顶点粒子进行只受外力fextern的自由运动,使用时间步长(Δt)、质量倒数和当前位置(currentPosition),更新速度(velocity)和预计位置(predictPosition)
predictPosition=currentPosition+Δt*velocity
运动位置记录在预计位置(predictPosition)属性中,并根据粒子的当前位置(currentPosition)属性计算出这个时间步长中的预计位移(displacement=predictPosition-currentPosition);
4-3,将基本网格中所有完全不自由运动(固定位置、粘连、人为拖动)的顶点粒子质量置为+∞,质量倒数置为0,并将这些顶点粒子的受迫运动后的位置记录在预计位置(predictPosition)属性中;
4-4,对于精细网格中的顶点,使用其上层顶点x1,x2,x3的位移通过重心坐标计算自己的预计位置为
5)进行衣物自碰撞、多层衣物和人体间的碰撞检测;
5-1,对于所有需要进行碰撞检测的粒子,取能够到达的最大和最小坐标,创建一个能够包含所有粒子的轴对称包围盒(axis-aligned bounding box,AABB);
5-2,根据粒子的粒度大小以及大包围盒的大小,分别对大包围盒的x轴、y轴、z轴方向上进行均等切割,将其切割成许多小长方体单元的子空间,x、y、z轴上有对应序号i、j、k,使用三元组(i,j,k)作为该子空间的标识符;
5-3,选取合适的哈希函数hash(i,j,k),用子空间的标识符作为键,空粒子容器作为值,建立哈希表,发生冲突的子空间不加以区分,即直接按照哈希值查找粒子容器;
5-4,对于每一个需要进行碰撞检测的粒子,根据其预计位置和粒子大小,计算其所在的所有子空间,将该粒子存入所有这些空间标识符对应的粒子容器中;
5-5,对于每一个粒子,根据其预计位置和粒子大小,取出其在空间哈希结构中覆盖到的所有子空间,将这些子空间对应的粒子容器取出,依次与这些粒子容器中的所有粒子进行碰撞检测;
5-6,对于所有发生碰撞的粒子对,根据粒子的自身碰撞属性确定约束函数的形式,这种约束随着时间变化而不断变化,称为暂时约束;
6)进行约束求解并更新粒子模型状态
6-1,将所有的约束统一存储,并按照类型进行优先级进行多次迭代处理,迭代次数作为外部参数受人为控制。
其中,约束已经由程序得到,所有的约束函数均是关于一个或多个粒子位置(如第i,…,j个粒子位置xi,…,xj)的函数,约束是使用约束函数构造的等式或者不等式C(xi,…,xj)=0或者C(xi,…,xj)≥0。约束的求解过程即是求出位置修正量Δxi,…,Δxj,使得给出粒子的预计位置pi,…,pj,修正过的预计位置满足约束条件,即C(pi+Δxi,…,pj+Δxj)满足等于或不等于条件,写成向量形式即C(P+ΔX)>0。因此,满足约束的所有位置可以看作是空间中的一个流形,首先让粒子自由运动,再将自由运动后的预计位置代入约束,求解出预计位置修正量Δx,即相当于找到一个最可能的粒子在满足约束的情况下运动将要到达的下一帧的位置,因此用这个Δx更新预计位置即可。
根据基于位置的方法的基本思想,对于约束条件C(X)=0,X是维数为3n的向量,为系统中所有n个粒子的总预计位置向量,为约束函数C(X)对第i个粒子位置xi的梯度,如果该约束函数与第k个粒子无关,那么因此对于每一个顶点的预计位置pi以及质量mi,满足约束条件C(X)=0的解为
其中,mi为第i个粒子的质量,为约束函数C(X)对第i个粒子位置xi的梯度,Δxi为求解结果,是对第i个粒子预计位置pi的位置修正量。因此对于任意的约束函数和任意第i个粒子,只需要将约束函数的梯度求解出来,即可解得Δxi,而后用Δxi修正pi即可。
6-1-1,将基本模型的所有固有约束视作第一优先级,即求解平面内的三角形有限元约束和弯曲约束,即优先计算出符合衣物内部物理模型的衣物顶点的预计位置。其中,三角形有限元约束函数C对三个相关粒子x1,x2,x3的梯度为
其中,P(F)为应力张量(P(F)=FE∈),F,E,∈分别为衣物顶点的形变梯度、衣物材料的弹性张量和应变张量,Dm为固定形态矩阵(Dm=(X1-X4,X2-X4,X3-X4));
弯曲约束函数C对四个相关粒子的x1,x2,x3,x4的梯度为
其中,Ai为第i个三角面片面积,K=(c01+c04,c02+c03,-c01-c02,-c03-c04)为边边夹角余切值矩阵,这里cij表示第i,j条边ei和ej的夹角余切(cot)值cot<ei,ej;
6-1-2,将所有暂时约束视作第二优先级,即求解碰撞检测产生的约束,即优先满足基本模型的碰撞处理,使得衣物模型的总体框架正确,求解结果用于更新所有粒子的预计位置;
6-1-3,将精细模型的所有固有约束视作第三优先级,即精细顶点的位置约束和精细网格边的距离约束,这样可以在基本衣物网格形态确定的情况下,通过求解精细模型的固有约束形成局部的褶皱效果。其中,位置约束函数C对顶点位置x的梯度为
其中,originPosition为顶点原有位置。
距离约束函数的梯度为
6-1-4,求解所有暂时约束,即碰撞检测产生的约束,求解结果用于更新所有粒子的预计位置。碰撞检测产生的约束函数对碰撞粒子位置x的梯度为
其中,预计位置为x的粒子碰撞第j个粒子,xj为第j个粒子的位置,fj(x)为第j个粒子的碰撞属性。
6-2,处理完毕后,根据系统的时间步长(Δt)更新所有顶点粒子属性,包括上一位置(lastPosition),当前位置(currentPosition),和速度(velocity),即
lastPosition=currentPosition
currentPosition=predictPosition
Claims (8)
1.一种三维服装的粒子化计算机动态仿真方法,其特征在于,包括如下步骤:
步骤1,进行参数化的人体建模;
步骤2,载入衣物模型并构建对应的层次化网格模型;
步骤3,粒子化人体表面网格模型;
步骤4,粒子模型自由运动;
步骤5,进行衣物自碰撞、多层衣物和人体间的碰撞检测;
步骤6,进行约束求解并更新粒子模型状态。
2.如权利要求1所述的一种三维服装的粒子化计算机动态仿真方法,其特征在于,步骤1包括如下步骤:
步骤1-1,获取人体表面的特征点和特征尺寸;
步骤1-2,根据获取的特征点和特征尺寸,求出表面型值点;
步骤1-3,对每个人体部位进行分块表面重建,采用插值样条曲面建立每个人体分块部位的曲面构成曲面模型,获得人体部位生成点的法向量;
步骤1-4,通过分块之间的共用控制点,实现各个人体分块部位的曲面模型之间的光顺拼接;
步骤1-5,通过改变骨架点坐标以驱动人体动作实现人体动画,通过改变特征尺寸实现人体体型的改变,骨架点是特征点中人体每个分块部位接合处的点;
步骤1-3包括如下步骤:
步骤1-3-1,将该人体部位分层,每层都是一条闭合曲线,通过使用插值样条建模,得到每层曲线的控制点,形成该人体部位的控制点矩阵;
步骤1-3-2,控制点矩阵中的一个元素即为控制点的坐标,将该坐标与一组基函数的值代入插值样条曲面表达式中,求得该人体部位表面任意一个表面点的坐标;
步骤1-3-3,对该人体部位生成的表面点进行三角网格化得到人体模型的三角面片;
步骤1-4通过重复型值点法实现插值样条曲面的光顺拼接,包括:
对于一段曲线的光顺拼接,在一段曲线的首尾接合处各重复两个型值点作为辅助控制点从而实现该段曲线的光顺拼接;对于两段首尾接合的曲线的光顺拼接,则在两条曲线接合处各增加两个辅助控制点,辅助控制点选取与首尾接合处几何距离最近的型值点;
对于一块曲面的光顺拼接,将曲面表面法线作为w轴,曲面表面同时垂直于分层闭合曲线和垂直于w轴的方向作为u轴,同时垂直于u轴和w轴的方向为v轴,确定曲面切线空间中u轴、v轴和w轴方向,并通过以下步骤实现在u轴方向上的首尾光顺拼接:在曲面片u轴方向首尾各重复两层v轴方向的型值点作为辅助控制点,将辅助控制点矩阵代入插值样条曲面计算公式;对于有公共交点的不同曲面片的光顺拼接,则取与曲面片交接线的所有点间平均几何距离最近的两层点作为辅助控制点;
拼接完成的人体模型即为人体表面网格模型。
3.如权利要求1所述的一种三维服装的粒子化计算机动态仿真方法,其特征在于,步骤2包括如下步骤:
步骤2-1,载入衣物模型,所述衣物模型为三角面片组成的网格,模型网格是一个流形,三角面片的卷绕顺序严格满足右手定则,法线指向模型表面外侧,所述衣物模型称为基本网格模型;
步骤2-2,使用网格重构方法对衣物基本网格模型进行预处理,对网格表面重构迭代;在每次迭代过程中,依次查看所有的边,如果边的邻接面中与边对应的两个角度和超过180°,就翻转该边;如果边长长于网格中所有边长的均值的150%,则将边从中点处进行划分;如果边长短于网格中所有边长的均值的50%,则将该边坍缩成一个顶点;达到最大迭代次数后衣物基本网格模型的网格趋向于一个均匀三角网格;
步骤2-3,依据衣物模型的特征,初始化衣物顶点的物理状态;
步骤2-4,根据衣物模型网格表示,加载基于位置的仿真方法所需的约束,这些约束均为固有约束;
步骤2-5,对于衣物上的所有顶点均视作粒子,并设置粒子大小和碰撞属性参数;
步骤2-6,基于现有的衣物的基本网格模型,使用网格细分方法进行网格细分,得出衣物的精细网格模型;
步骤2-7,根据衣物的精细网格表示,加载生成精细褶皱所需的约束,这些约束均为固有约束;
步骤2-3加载基于位置的仿真方法所需的约束,包括:
步骤2-4-1,加载衣物基本网格的平面内约束,根据每个三角面片添加基于三角形有限元的约束;
步骤2-4-2,加载衣物基本网格的弯曲约束,用于模拟衣物抵抗弯曲的能力,对于基本模型中的每一条边,即每一对相邻三角网格面,弯曲约束定义为两个相邻三角网格面的夹角,一共包括一对相邻三角面的四个顶点;
步骤2-6对现有的基本网格模型进行网格细分,得出衣物的精细网格模型,包括:
步骤2-6-1,将基本网格中所有的顶点以及顶点属性全部添加至新的网格模型中;
步骤2-6-2,对于基本网格中的每一个三角面,生成一组细分网格点,每个网格点通过重心坐标与这个面的三个基本网格点相对应,这三个基本网格顶点称为这个细分网格点的上层顶点;对于每一个生成的细分网格顶点,记录顶点的层次信息,包括顶点的三个上层顶点标识符以及对应的重心坐标;
步骤2-6-3,对于每一个细分过的基本网格三角面,根据细分顶点的顺序将细分面添加至精细网格中,添加时按照基本网格三角面的卷绕顺序添加细分面,保证细分网格面法线与基本网格面保持一致;
步骤2-6加载生成精细褶皱所需的所约束,包括:
步骤2-7-1,对每个精细网格顶点添加位置约束,使得顶点只在原有位置附近运动;
步骤2-7-2,对精细网格使用基本的距离约束,即对于每一条精细网格边,对边的两个顶点使用距离约束。
4.如权利要求3所述的一种三维服装的粒子化计算机动态仿真方法,其特征在于,步骤3包括如下步骤:
步骤3-1,根据人体表面网格模型以及三角面的卷绕顺序计算出面法线,并平均化求出顶点法线;
步骤3-2,将人体表面网格模型中的顶点作为人体的基本粒子模型,并设置粒子的大小和碰撞属性,其中粒子的碰撞属性是粒子内空间中的三维向量场v=f(x),x为空间中的三维位置坐标,v为该位置坐标处对应的向量,定义域为粒子内三维空间位置,值域为空间中的三维单位向量;
步骤3-3,对于人体表面网格中的每一个面,生成一组细分网格点,细分程度用细分密度参数表示,每个点通过重心坐标与这个面的三个顶点对应;
步骤3-4,对于每个人体表面网格面上的细分顶点粒子,通过对基本顶点法线的重心坐标插值得出所有粒子的法线,所述粒子组成了人体表面的粒子层;将这个表面粒子层中每一个粒子沿各自的法线的反方向平移一段距离生成对应的新的粒子,所述粒子组成了表面内部的粒子层;不断迭代重复生成粒子层形成人体表面网格模型内部的多层粒子层;给多层粒子层中的所有粒子分别设置大小和碰撞属性:表面粒子层中粒子的碰撞属性设置为:
内部粒子层中的碰撞属性设置为
f(x)=n
其中,x为空间中发生碰撞的位置,x0为粒子位置,r为粒子半径,n为粒子法线,I为单位向量。
5.如权利要求4所述的一种三维服装的粒子化计算机动态仿真方法,其特征在于,步骤4包括如下步骤:
步骤4-1,根据三角面的三个顶点的位置,以及三个顶点的卷绕顺序,计算基本模型和精细模型中所有三角面的法线,并使用顶点的所有邻接面法线平均化得出顶点法线;
步骤4-2,对所有的基本网格顶点粒子进行只受外力的自由运动,运动位置记录在预计位置属性中,并计算出这个时间步长中的预计位移;
步骤4-3,将基本网格中所有完全不自由运动的顶点粒子质量倒数置为0,并将这些顶点粒子的受迫运动后的位置记录在预计位置属性中;
步骤4-4,使用上层顶点的预计位移和对应的重心坐标计算出精细网格中的粒子位移,并使用该位移计算出精细顶点的预计位置。
6.如权利要求5所述的一种三维服装的粒子化计算机动态仿真方法,其特征在于,步骤5包括如下步骤:
步骤5-1,统计所有需要进行碰撞检测的粒子,创建一个能够包含所有粒子的轴对称包围盒;
步骤5-2,根据粒子的粒度大小以及大包围盒的大小,分别对大包围盒在世界坐标系中的x轴、y轴和z轴方向上进行均等切割,将其切割成许多小长方体单元的子空间,每一个子空间在x轴、y轴和z轴上被切割出的序号分别为i,j,k,使用唯一的三元组(i,j,k)作为其标识符;
步骤5-3,选取合适的哈希函数hash(i,j,k),用子空间的标识符作为键,一个粒子容器作为值,建立哈希表,其中,如果不同子空间标识符计算出来的哈希值发生冲突,则直接把两个子空间的粒子容器合并,即并不区分发生冲突的不同子空间;
步骤5-4,对于每一个需要进行碰撞检测的粒子,根据其预计位置和粒子大小,计算其所在的所有子空间,将该粒子存入所有这些空间标识符对应的粒子容器中;
步骤5-5,对于每一个粒子,根据其预计位置和粒子大小,将其在空间哈希结构中涉及的所有子空间对应的粒子容器取出,依次与这些粒子容器中的所有粒子进行碰撞检测;
步骤5-6,对于所有发生碰撞的粒子对,根据粒子的碰撞属性得出碰撞向量,根据碰撞向量确定约束函数,称为暂时约束。
7.如权利要求6所述的一种三维服装的粒子化计算机动态仿真方法,其特征在于,步骤6包括如下步骤:
步骤6-1,将所有的约束统一存储,所有的约束包括基本网格和精细网格中的各类固有约束以及碰撞产生的临时约束,并按照类型进行优先级进行迭代处理迭代次数为参数,一般取[4,20]中的整数;
步骤6-2,处理完毕后,更新所有顶点粒子属性,即上一位置等于当前位置,当前位置等于预计位置,当前速度等于当前位置减去上一位置的结果除以时间步长。
8.如权利要求7所述的一种三维服装的粒子化计算机动态仿真方法,其特征在于,步骤6-1包括如下步骤:
步骤6-1-1,将基本模型的所有固有约束视作第一优先级,即平面内的三角形有限元约束和弯曲约束,求解平面内的三角形有限元约束和弯曲约束,求解结果用于更新基本模型和精细模型的基本顶点的预计位置;
步骤6-1-2,将所有暂时约束视作第二优先级,即碰撞检测产生的约束,求解碰撞检测产生的约束,求解结果用于更新所有粒子的预计位置;
步骤6-1-3,将精细网格中的所有固有约束视作第三优先级,即精细顶点的位置约束和精细网格边的距离约束,求解结果只用于更新精细模型中精细顶点的预计位置;
步骤6-1-4,将所有暂时约束备份一份作为第四优先级,二次求解所有的暂时约束,求解结果用于更新所有粒子的预计位置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610936246.9A CN106407605B (zh) | 2016-11-01 | 2016-11-01 | 一种三维服装的粒子化计算机动态仿真方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610936246.9A CN106407605B (zh) | 2016-11-01 | 2016-11-01 | 一种三维服装的粒子化计算机动态仿真方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106407605A true CN106407605A (zh) | 2017-02-15 |
CN106407605B CN106407605B (zh) | 2019-06-25 |
Family
ID=58012649
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610936246.9A Active CN106407605B (zh) | 2016-11-01 | 2016-11-01 | 一种三维服装的粒子化计算机动态仿真方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106407605B (zh) |
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106920146A (zh) * | 2017-02-20 | 2017-07-04 | 宁波大学 | 基于体感特征参数提取的立体试衣方法 |
CN108629837A (zh) * | 2018-01-09 | 2018-10-09 | 南京大学 | 一种用于虚拟试衣的布料实时仿真方法 |
CN108765525A (zh) * | 2018-04-24 | 2018-11-06 | 阿里巴巴集团控股有限公司 | 一种图片转换方法和装置 |
CN109002630A (zh) * | 2018-08-01 | 2018-12-14 | 北京大学 | 一种超弹性材料的快速仿真方法 |
CN109523634A (zh) * | 2018-09-30 | 2019-03-26 | 先临三维科技股份有限公司 | 优化网格的方法及装置 |
CN109543231A (zh) * | 2018-10-25 | 2019-03-29 | 武汉亘星智能技术有限公司 | 一种服装参数化推版方法及系统 |
CN109580649A (zh) * | 2018-12-18 | 2019-04-05 | 清华大学 | 一种工程结构表面裂缝识别与投影修正方法及系统 |
CN109829232A (zh) * | 2019-01-30 | 2019-05-31 | 中北大学 | 基于随机森林算法的分层布料模拟方法 |
CN109857259A (zh) * | 2019-02-26 | 2019-06-07 | 网易(杭州)网络有限公司 | 碰撞体交互控制方法及装置、电子设备和存储介质 |
CN110060779A (zh) * | 2019-04-10 | 2019-07-26 | 福建师范大学福清分校 | 一种软组织表面刺穿仿真方法及装置 |
CN111062136A (zh) * | 2019-12-20 | 2020-04-24 | 南京大学 | 一种实时的衣物形态确定方法及系统 |
CN111145236A (zh) * | 2019-12-04 | 2020-05-12 | 东南大学 | 一种基于数字孪生的产品拟实物装配模型生成方法及实现框架 |
CN112100939A (zh) * | 2020-09-14 | 2020-12-18 | 福建天晴在线互动科技有限公司 | 一种基于Compute Shader的实时流体仿真方法及其系统 |
CN112581602A (zh) * | 2020-12-09 | 2021-03-30 | 北京维盛视通科技有限公司 | 服装动态模拟方法、装置、电子设备及存储介质 |
CN112802203A (zh) * | 2021-01-18 | 2021-05-14 | 华中科技大学鄂州工业技术研究院 | 一种基于特征的空间哈希连续碰撞检测方法 |
CN112862957A (zh) * | 2021-02-19 | 2021-05-28 | 南京大学 | 一种基于约束投影的gpu并行试衣仿真方法 |
CN114925552A (zh) * | 2022-07-19 | 2022-08-19 | 武汉亘星智能技术有限公司 | 基于hpbd的布料仿真方法及系统 |
CN115659769A (zh) * | 2022-09-15 | 2023-01-31 | 深圳十沣科技有限公司 | 模型粒子生成方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942376A (zh) * | 2014-04-11 | 2014-07-23 | 浙江大学 | 一种应用于实时头发运动仿真的碰撞修正方法 |
CN104637084A (zh) * | 2015-01-29 | 2015-05-20 | 吴宇晖 | 一种建立服装虚拟三维模型的方法及虚拟试衣系统 |
CN104881557A (zh) * | 2015-06-19 | 2015-09-02 | 南京大学 | 一种计算机中人体服装动态仿真实现方法 |
-
2016
- 2016-11-01 CN CN201610936246.9A patent/CN106407605B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103942376A (zh) * | 2014-04-11 | 2014-07-23 | 浙江大学 | 一种应用于实时头发运动仿真的碰撞修正方法 |
CN104637084A (zh) * | 2015-01-29 | 2015-05-20 | 吴宇晖 | 一种建立服装虚拟三维模型的方法及虚拟试衣系统 |
CN104881557A (zh) * | 2015-06-19 | 2015-09-02 | 南京大学 | 一种计算机中人体服装动态仿真实现方法 |
Non-Patent Citations (2)
Title |
---|
薛原等: "不同材质服装的实时动态仿真", 《图学学报》 * |
褚励耘: "三维柔性织物动态模拟的研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106920146A (zh) * | 2017-02-20 | 2017-07-04 | 宁波大学 | 基于体感特征参数提取的立体试衣方法 |
CN106920146B (zh) * | 2017-02-20 | 2020-12-11 | 宁波大学 | 基于体感特征参数提取的立体试衣方法 |
CN108629837A (zh) * | 2018-01-09 | 2018-10-09 | 南京大学 | 一种用于虚拟试衣的布料实时仿真方法 |
CN108765525A (zh) * | 2018-04-24 | 2018-11-06 | 阿里巴巴集团控股有限公司 | 一种图片转换方法和装置 |
CN109002630A (zh) * | 2018-08-01 | 2018-12-14 | 北京大学 | 一种超弹性材料的快速仿真方法 |
CN109002630B (zh) * | 2018-08-01 | 2023-06-06 | 北京大学 | 一种超弹性材料的快速仿真方法 |
CN109523634B (zh) * | 2018-09-30 | 2024-04-19 | 先临三维科技股份有限公司 | 优化网格的方法及装置 |
CN109523634A (zh) * | 2018-09-30 | 2019-03-26 | 先临三维科技股份有限公司 | 优化网格的方法及装置 |
CN109543231B (zh) * | 2018-10-25 | 2023-06-20 | 武汉亘星智能技术有限公司 | 一种服装参数化推版方法及系统 |
CN109543231A (zh) * | 2018-10-25 | 2019-03-29 | 武汉亘星智能技术有限公司 | 一种服装参数化推版方法及系统 |
CN109580649A (zh) * | 2018-12-18 | 2019-04-05 | 清华大学 | 一种工程结构表面裂缝识别与投影修正方法及系统 |
CN109580649B (zh) * | 2018-12-18 | 2020-11-27 | 清华大学 | 一种工程结构表面裂缝识别与投影修正方法及系统 |
CN109829232A (zh) * | 2019-01-30 | 2019-05-31 | 中北大学 | 基于随机森林算法的分层布料模拟方法 |
CN109829232B (zh) * | 2019-01-30 | 2022-11-25 | 中北大学 | 基于随机森林算法的分层布料模拟方法 |
CN109857259A (zh) * | 2019-02-26 | 2019-06-07 | 网易(杭州)网络有限公司 | 碰撞体交互控制方法及装置、电子设备和存储介质 |
CN109857259B (zh) * | 2019-02-26 | 2022-09-30 | 网易(杭州)网络有限公司 | 碰撞体交互控制方法及装置、电子设备和存储介质 |
CN110060779A (zh) * | 2019-04-10 | 2019-07-26 | 福建师范大学福清分校 | 一种软组织表面刺穿仿真方法及装置 |
CN110060779B (zh) * | 2019-04-10 | 2022-06-17 | 福建师范大学福清分校 | 一种软组织表面刺穿仿真方法及装置 |
CN111145236A (zh) * | 2019-12-04 | 2020-05-12 | 东南大学 | 一种基于数字孪生的产品拟实物装配模型生成方法及实现框架 |
CN111062136B (zh) * | 2019-12-20 | 2024-02-09 | 南京大学 | 一种实时的衣物形态确定方法及系统 |
CN111062136A (zh) * | 2019-12-20 | 2020-04-24 | 南京大学 | 一种实时的衣物形态确定方法及系统 |
CN112100939B (zh) * | 2020-09-14 | 2023-06-16 | 福建天晴在线互动科技有限公司 | 一种基于Compute Shader的实时流体仿真方法及其系统 |
CN112100939A (zh) * | 2020-09-14 | 2020-12-18 | 福建天晴在线互动科技有限公司 | 一种基于Compute Shader的实时流体仿真方法及其系统 |
CN112581602B (zh) * | 2020-12-09 | 2023-07-07 | 北京维盛视通科技有限公司 | 服装动态模拟方法、装置、电子设备及存储介质 |
CN112581602A (zh) * | 2020-12-09 | 2021-03-30 | 北京维盛视通科技有限公司 | 服装动态模拟方法、装置、电子设备及存储介质 |
CN112802203B (zh) * | 2021-01-18 | 2023-02-28 | 华中科技大学鄂州工业技术研究院 | 一种基于特征的空间哈希连续碰撞检测方法 |
CN112802203A (zh) * | 2021-01-18 | 2021-05-14 | 华中科技大学鄂州工业技术研究院 | 一种基于特征的空间哈希连续碰撞检测方法 |
CN112862957A (zh) * | 2021-02-19 | 2021-05-28 | 南京大学 | 一种基于约束投影的gpu并行试衣仿真方法 |
CN112862957B (zh) * | 2021-02-19 | 2024-04-19 | 南京大学 | 一种基于约束投影的gpu并行试衣仿真方法 |
CN114925552A (zh) * | 2022-07-19 | 2022-08-19 | 武汉亘星智能技术有限公司 | 基于hpbd的布料仿真方法及系统 |
CN115659769A (zh) * | 2022-09-15 | 2023-01-31 | 深圳十沣科技有限公司 | 模型粒子生成方法、装置、设备及存储介质 |
CN115659769B (zh) * | 2022-09-15 | 2023-11-03 | 深圳十沣科技有限公司 | 模型粒子生成方法、装置、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106407605B (zh) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106407605B (zh) | 一种三维服装的粒子化计算机动态仿真方法 | |
Nealen et al. | Physically based deformable models in computer graphics | |
Müller et al. | Solid simulation with oriented particles | |
Moore et al. | A survey of computer-based deformable models | |
US11763048B2 (en) | Computer simulation of physical fluids on a mesh in an arbitrary coordinate system | |
Schafhitzel et al. | Point-based stream surfaces and path surfaces | |
Fadel et al. | Packing optimization of free-form objects in engineering design | |
Fratarcangeli | Position‐based facial animation synthesis | |
CN101889753B (zh) | 非刚性肢体手工围度测量的交互式变形与测量仿真方法 | |
Liu et al. | Automatic sizing functions for unstructured mesh generation revisited | |
Fairbairn | Fermions in three-dimensional spinfoam quantum gravity | |
KR20100088081A (ko) | 의상 시뮬레이션을 위한 물리법칙에 기반한 멀티그리드 방법 및 그 프로그램이 기록된 컴퓨터가 판독가능한 기록매체 | |
Weier et al. | Generating and rendering large scale tiled plant populations | |
Steinbrenner et al. | Gridgen's Implementation of Partial Differential Equation Based Structured Grid Generation Methods. | |
Yu et al. | Realistic emotion visualization by combining facial animation and hairstyle synthesis | |
Ovreiu | Accurate 3D mesh simplification | |
Beer | Algorithms for geometrical operations with NURBS surfaces | |
Kuang et al. | Masked 3D conditional generative adversarial network for rock mesh generation | |
McDonnell et al. | Dynamic subdivision-based solid modeling | |
Adams | Point-based modeling, animation and rendering of dynamic objects | |
Orell | Position Based Dynamics for Character Effects | |
MacLean | Unstructured Anisotropic All-Quad Mesh Adaptation Based on a Continuous Local Error Model for the Discontinuous Galerkin Method | |
Palmer et al. | Stability and complexity study of animated elastically deformable objects | |
Zheng et al. | Hierarchical Bayesian Network Modeling and Layout of Huizhou Traditional Villages in Geographic Environment | |
Mullan et al. | Procedural level sets |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |