一种基于层次模型的虚拟人皮肤物理变形方法

文档序号:6585338阅读:188来源:国知局
专利名称:一种基于层次模型的虚拟人皮肤物理变形方法
技术领域
本发明属于计算机虚拟现实和计算机图形学技术领域,特别是涉及虚拟人体仿
真、虚拟人运动模拟技术中的人体皮肤变形方法。
背景技术
随着计算机软硬件技术的不断发展,数据获取及表现的能力越来越强。尤其是虚拟人仿真与模拟,在影视娱乐、虚拟现实、远程医疗等诸多领域得到广泛应用。但如何更真实地呈现虚拟人形态并提高实时性以拓宽应用范围,仍需要深入研究以期满足不同领域的需求。其中,人体皮肤作为虚拟人最外在的表现形式,得到了更多的关注。人体皮肤变形技术一般可分为基于表面模型的皮肤变形和基于层次模型的皮肤变形。基于表面模型的皮肤变形技术计算过程简单、运算速度较快,但视觉、物理真实感比较差;基于层次模型的皮肤变形技术能够很好地和人体解剖学、弹性力学、生物力学等相关理论结合,通过加入生物模型或物理模型,可显著提高变形效果的真实感,但往往存在计算量庞大、不能满足实时要求的问题。因此,如何更好地平衡真实感和实时性,成为了人体皮肤变形重点研究的问题之 基于表面模型的皮肤变形技术主要采用了几何变形理论。比如基本的刚性变形法采用局部皮肤对应局部骨骼的方式,以驱动局部骨骼的运动来产生皮肤变形效果;局部表面算子法将人体皮肤定义为多个连续函数,每个函数对应一块局部皮肤,以此保证各块局部皮肤之间的连续性;蒙皮法将皮肤网格顶点和多段骨骼相关联,每个皮肤顶点将受到多段骨骼的影响,经过一定的插值策略得到更加全面而准确的变形结果;截面轮廓线变形法将皮肤拟合成一系列椭圆形截面,通过处理数量远小于顶点的椭圆截面来快速得到变形结果。基于表面的皮肤变形技术本质上是种简化模型,忽略了人体内部组织,其主要存在问题是变形效果较差,很难准确刻画大幅度变形、关节皮肤细节变化等,虽然运行速度快但需要复杂的前期设计,并且变形过程需要一定的人为控制。 基于层次模型的皮肤变形技术即是针对人体的真实结构,参考人体解剖学理论,建立多层次模型以对应人体不同组织,并设计各层次之间的映射关系,变形过程中由里至外逐层分析、递进处理,最终驱动表面皮肤获得变形效果。基于层次模型的皮肤变形技术主要研究内容是如何构建各层次的模型结构和各层次模型之间的映射关系及驱动方法。从实施方式来看,可大致分为基于几何的方法和基于物理的方法。基于几何的方法关注于人体组织的几何形状,构建各层次几何模型并运用几何约束关系驱动皮肤变形;基于物理的方法考虑了人体组织的物理属性,使用质点弹簧、有限元等物理模型构建各层次模型,进一步提高了变形效果的真实感。基于层次模型的皮肤变形技术的难点在于模型本身的复杂度、物理属性的参数设置、计算量和运算时间的控制等。

发明内容
本发明要解决的技术问题克服现有技术的不足,综合运用几何方法和物理方法,提供一种基于层次模型的虚拟人皮肤物理变形方法,在保留物理变形真实感优势的基础 上,结合层次模型数据组织灵活的特点,分别构建了用于虚拟人皮肤绘制的精细网格和用 于变形控制及物理计算的简化网格,在保证虚拟人精确变形过程与真实绘制效果的前提 下,极大减少计算开销,形成了一种有效的虚拟人皮肤变形方法。
本发明采用的技术方案一种基于层次模型的虚拟人皮肤物理变形方法,其特征
在于步骤如下 (1)构造层次模型 进行虚拟人层次模型的构造,形成用于控制运动的骨骼层模型、用于物理变形的 物理层模型和用于最终绘制的表面层模型,并建立骨骼层模型与物理层模型、物理层模型 与表面层模型的映射关系;(2)物理变形 依据用户设定的运动方式,骨骼层模型产生运动趋势并带动物理层模型进行物理 变形; (3)驱动皮肤 在物理变形过程中,按照物理层模型和表面层模型的映射关系,驱动表面层模型
随之运动和变化,生成变形的动态效果。 所述步骤(1)中构造层次模型的步骤如下 (1. 1)通过三维扫描仪获取并生成人体表面三维网格数据,所述网格数据即为用 于绘制的表面层模型; (1. 2)确定表面层中各关节截面并获取截面中心点;两两直线连接相邻的关节截 面中心点,形成的线段即为骨骼;若干相连骨骼构成骨骼层模型; (1. 3)对表面层模型采取半边折叠化简操作,得到简化网格;对简化网格每条边 设置面弹簧参数;对简化网格每个顶点设置物理参数;连接顶点和该顶点在骨骼上的垂直 映射点,设置体弹簧参数;中间层顶点、面弹簧、体弹簧所构成的质点弹簧模型,即为物理层 模型。 所述步骤(1)中建立各层模型之间映射关系的步骤如下 (1. 1)建立骨骼层模型与物理层模型之间的映射关系通过体弹簧建立物理映 射,体弹簧的弹力作用将骨骼层模型的运动状态传递到物理层模型,驱动物理层模型的顶 点发生位移; (1. 2)建立物理层模型与表面层模型之间的映射关系物理层模型顶点的位移变 化量由体弹簧和面弹簧的弹力作用共同确定;物理层模型的顶点为表面层模型顶点的一个 子集,表面层模型其余顶点由临近的若干物理层模型顶点位移向量插值得到。
所述步骤(1. 3)中得到简化网格的步骤如下 (1. 3. 1)读入表面层模型,计算每个顶点的误差矩阵和误差值,将顶点按误差值从 小到大排序; (1. 3. 2)依次取出每个顶点,计算其折叠顶点,传递折叠误差到相关三角形中需要 改变的顶点上,执行半边折叠操作,并保存折叠信息; (1. 3. 3)判断折叠有效性,继续进行折叠操作,直到顶点序列为空或达到初始阈值。
5
所述步骤(2)中物理变形的步骤如下
(2. 1)接收用户设定的虚拟人运动指令; (2. 2)依据用户运动指令,骨骼层模型开始运动,并通过体弹簧向物理层模型顶点 施力; (2. 3)物理层模型顶点发生位移变化,面弹簧、体弹簧发生长度变化而产生弹力, 再反馈到顶点改变顶点的位置; (2. 4)在达到运动终态前,迭代步骤2. 2和步骤2. 3 ; (2. 5)达到运动终态后,弹力计算继续运行,直到物理层模型中各个顶点达到平衡 的稳定状态,物理变形结束。 所述步骤(3)中驱动皮肤的步骤如下 (3. 1)表面顶点确定与之邻接的物理层模型顶点,保存距离、方向信息; (3. 2)对邻接的物理层模型中的顶点进行向量插值,得到表面层模型的顶点位
移; (3. 3)更新表面层模型顶点位置,进行细节修正。 本发明与现有技术相比的有益效果在于通过构建层次模型,将物理变形方法和 几何变形方法结合起来,发挥出各自的优点,得到运行效率和处理结果的良好平衡;预处理 阶段采用了模型化简技术,降低了物理计算的数据量和处理时间,达到了实时性;采用了质 点弹簧模型来模拟人体运动,变形过程及结果真实感强;对变形结果进行几何处理,保证皮 肤细节的正确呈现。


图1为本发明的整体过程示意图; 图2为本发明的物理层网格化简过程示意图; 图3为本发明的半边折叠化简方法示意图; 图4为本发明的虚拟人手臂骨骼关节链模型示意图; 图5为本发明的物理层顶点到表面层顶点的向量插值示意图。
具体实施例方式
下面结合附图与实施例对本发明作进一步详细描述 本发明实施过程包括三个主要步骤构建层次模型,物理变形,驱动皮肤。如图1 所示。
步骤一即构建层次模型,主要分成二个阶段构建骨骼层和构建物理层。
第一个阶段构建骨骼层 骨骼层位于表面层内部中轴线处。先通过三维模型编辑软件确定表面层中各关节 截面(如肩关节截面、肘关节截面、腕关节截面)并获取截面中心点;再两两直连相邻的关 节截面中心点(腕关节和肘关节的截面中心点相连、肘关节和肩关节的截面中心点相连), 形成的线段序列即为用于手臂运动驱动和控制的骨骼层模型。
第二个阶段构建物理层 本发明对表面层几何网格采用半边折叠化简算法,生成用于物理计算的简化网
6格。半边折叠化简算法的基本思想是对于一个相邻顶点的有序顶点对(U, V) , U被移动到 v的位置,原本和u相连的顶点,改变为与v相连。该过程中(u — v)和(v — u)是两个不 同的删除操作,要分别估计误差度量值,存储到候选堆中。半边折叠操作过程中,不会产生 新的顶点和新的三角形,提供了一种减小模型存储量的化简途径,它适用于本发明的一个 重要特点是仅对原始模型的顶点进行子集采样,生成的简化网格顶点均来自原始模型的顶 点集,存储和运算开销少,便于映射到原始的精细网格,适于快速渲染。它的另一优点是度 量准则仅仅用来确定折叠顺序,不影响折叠后的更新操作,所以简化算法的设计和实现更 加简单。 如图3所示,对于左图中的边EF执行半边折叠,边EF折叠到它其中一个顶点F,并 且丢弃另一个顶点E,原有的三角形网格就化简为右图。每折叠一条边,就可以移除一个顶 点、三条边和两个三角形,从而达到简化模型的目的。 通过计算顶点的误差和边的折叠代价,来确定需折叠的边和被删除的顶点。对于 一个顶点,设它所在是三角形为Ti,各自面积为Si,其平面方程为
ax+by+cz+d = O,其中a2+b2+c2 = 1
再构造误差矩阵 则该顶点的误差矩阵为 2 = SS (n为与顶点相关的三角形个数)根据每个顶点Vi的三维坐标,构造向量p = (x, y, z),顶点的误差矩阵为Q,则顶
点误差为 <formula>formula see original document page 7</formula> 其中Qi为顶点Vi某个所在三角形的误差矩阵。则边(Vi, vk)的折叠代价为
e i = Vi+vk 根据面积加权的半边折叠算法流程如图2所示。其中保存折叠操作的过程信息, 是为了当不合理的简化结果出现时,可实现回滚和恢复。主要的不合理化简结果是出现狭 长状三角面片。在顶点替换中,部分三角形的形状会发生变化。为避免这种情况的发生,需 要对简化后的三角面片进行判断,如果三角形的某一内角接近180。或0° ,则不合并之前
的顶点,也不进行半边折叠。狭长三角形的判定公式为
<formula>formula see original document page 7</formula> 其中S为三角形的面积,li为各边长度。当三角形为等边三角形时,^为1 ;当^的 值等于或接近0时,则判断为出现狭长三角形。 步骤二即物理变形,主要分为两个阶段基于逆向运动学的骨骼层运动控制和基 于质点弹簧模型的物理变形。
第一个阶段基于逆向运动学的骨骼层运动控制 逆向运动学是指对一条拥有众多关节的运动链,计算出一组所有关节的状态值, 以满足指定的末端效应器状态。逆向运动学预先知道末端效应器的位置和方向,反向推出 在各个子关节空间中各连接杆的结构参数。即只需给定末端关节(如人手腕关节)的位置 和方向,计算机就可自动计算出各中间关节的位置和方向,简化了虚拟人的控制问题。下面 以图4所示的虚拟人体手臂骨骼关节链为例,说明本发明采用的驱动方法。
图4中S工为肩关节,F为肘关节,S2为腕关节。其中肩关节和腕关节都是三个自 由度的关节,其自由度分别用角度a" !^, L和a2, P2, ^表示,肘关节为一个自由度的 关节,其角度记为03,则手臂的关节运动链可表示为
l\ATyBT2 = G 其中l\、Ty、T2为肩、肘、腕关节的旋转矩阵,G为目标矩阵,A为从F到S工的变换矩 阵,B为从S2到F的变换矩阵,它们可分别表示为 <formula>formula see original document page 8</formula> <formula>formula see original document page 8</formula><formula>formula see original document page 8</formula><formula>formula see original document page 8</formula>




当用户通过鼠标指定末端效应器的新位置,即赋值给G,对上式进行简化运算可
丁 2
1 = RARyWa = tg
将上式两边分别与自身点积,根据旋转矩阵的正交特性,可得
2taTRaRytb = tgTtg_taTta_tbTtb
因为Ry中的项均为^3的三角函数,则上式可化解为以^3三角函数为变量的多
项式形式,进而得到两个03的解,去除其中的不合理解,就是给定末瑞效应器下%的值。
即用户指定了新的腕关节位置后,就能求解出对应的肘关节角度和位置。
第二个阶段基于质点弹簧模型的物理变形 质点弹簧模型中的质点由不同的弹簧连接在一起,一般来说,质点所受的重力与
空气阻力称为质点所受的外力,质点所受的各个弹簧力与弹簧阻尼力为质点所受的内力。
则质点所受合力可表示为 F (x, y, z) = Fext (x, y, z) +Fint (x, y, z) 其中F(x,y,z)是质点p(x,y,z)所受的合力,Fext (x, y, z)是质点p(x,y,z)所受 的外力和,Fint(x, y, z)是质点p(x, y, z)所受的内力和。下面分别介绍这两类力的求解过 程。 外力在物理层物理计算中可考虑的外力包括重力和空气阻力。
(1)重力 本发明将每个质点视为具有相同的质量,该质量等于虚拟人体模型总质量除以物 理层质点的总数。
在物理计算过程中,作用在每个质点的重力是常数。重力表达式为
G(x, y, z) = mg 其中m为质点p (x, y, z)的质量,g为质点p (x, y, z)的重力加速度。
(2)空气阻力 根据Stocke的阻力定律,空气阻力Fair和质点速度的n次幂成正比。这个定律可 近似表示为(x, 乂 z) = -m^ ||v(x,;;, "x, 其中m为质点p (x, y, z)的质量,、是定义的空气阻力常数,v (x, y, z)为质点p (x, y, z)的速度矢量,它的大小为II v(x, y, z) II ,方向为^(x,;^)。在物理计算中,将指数n设 为l,则空气阻力可表示为
Fair(x, y, z) = -mkrv(x, y, z) 实际计算中,由于空气阻力常数、非常小,空气阻力F&对质点的影响也非常小。
但考虑到模型的普适性,比如今后可能模拟在水中的人体运动,水的阻力就会对运动产生
显著的影响。因此,本发明在模型中保留了该外力带来的影响。 综合考虑重力和空气阻力后,作用在质点p(x, y, z)上的外力可表示为 Fext(x, y, z) = G(x, y, z)+Fair(x, y, z) = mg-mkrv(x, y, z) 内力质点所受的内力主要包括弹簧力和阻尼力。 (1)弹簧力 若弹簧的两端点自由长度为l,弹簧的弹性系数为k,根据胡克定律,在三维空间 中端点受到的弹力可表示为 /s = A:
一 I 其中Xl和x2是弹簧两端点的位置矢量。 对于质点p (x, y, z)来说,它所受的弹力合力应该是与它有弹簧连接关系的n个质 点相互作用的面弹簧力和1个体弹簧力,可表示为
(x。 — X。 ) — Z
乂o — 乂o
+
2>,
O0—x,)-/
X。—; 其中fsb是体弹簧力,kb为体弹簧的弹性系数,X'。为质点X。在骨骼上的映射点; fsf是面弹簧力,kf为面弹簧的弹性系数。
(2)阻尼力 在动态的质点弹簧模型中,适当的弹簧阻尼力有助于维持系统的稳定性。例如,为 了防止两质点间出现不规则的振动,一个强张力必须伴随一个稳定的强阻尼力。在我们的 质点弹簧模型中,阻尼力和两个相连质点的速度差成正比,可表示为
fd = kd(Vl-V2) 其中,fd为阻尼常数,Vl和v2是弹簧两端点Pl和p2的速度矢量。参照质点弹簧力 的分析方式,同样可确定质点弹簧模型中不同位置的质点所受弹簧阻尼合力fd(x, y, z)。 [O105] 综合考虑弹簧力和阻尼力,作用在质点p(x, y, z)上的内力可表示为
F嵌=F+Frf
9
当骨骼层发生运动时,促使附着在骨骼上的体弹簧发生长度变化,进而产生弹力。 该弹力传递到物理层顶点后,促使物理层顶点发生位移变化。在体弹簧和面弹簧弹力、重力 和空气阻力的共同作用下,物理层顶点不断更新状态,产生连续的位移变化,直到骨骼达到 运动终态,体弹簧不再产生新的弹力为止。最后,当各个物理层顶点受到的合力为零时,物 理变形结束。 步骤三即驱动皮肤,主要包括两个阶段顶点位移插值和表面层细节修正。
第一个阶段顶点位移插值 表面层模型是最终绘制显示的数据,该层的顶点分为两种类型一类是物理层顶 点,该类型顶点位移直接由物理计算得到;另一类是在化简中被丢弃的顶点,该类型顶点位 移通过物理层顶点位移插值计算得到。
如图5所示,下层网格为物理层的简化网格,上层网格为表面层的精细网格。Pl, P2, P3分别为物理层三个顶点的位移向量,r为该三个顶点组成的三角形中一点的位移向 量,与其对应的精细网格中顶点的位移向量为V。插值计算过程如下
(1)在发生变形之前,计算r顶点与组成它所在三角形的三个顶点的位移向量权 值(wn w2, w3): £ A w; = r '且有2 W = 1 (2)计算并保存物理层顶点与表面层顶点的位移向量偏移值^ :
(3)当发生变形时,ppp^p3在物理计算下得到新的值p' pp' 2,p' 3,则有
》,=worma/fee — / 〖)
f = — A') 々=:fx》,
S =々x:f = ((5. f, ( .々,. v'=ry 由此得到表面层顶点的新位移向量vt。
第二个阶段表面层细节修正 表面层的细节修正主要是针对位移插值后的顶点位移进行必要的检查和几何修 正。本发明提供了以下两类细节修正操作 (1)修正位移插值导致网格边长度小于零而出现边的反折情况。为避免其发生,需 设置以边长为约束的插值判断条件。如果插值后某边长度小于零,则将其相关顶点位移限 制到边长为零时的位置上,避免出现边的反折。 (2)修正物理变形或者位移插值导致的顶点穿透情况。褶皱和挤压是皮肤变形中 经常出现的状态,因此在物理变形和位移插值计算中,可能会出现某个顶点穿透到其他三 角面片中。可分两步修正该误差在物理层的简化网格为每个三角面片设置穿透标志符,当物理变形中的可能发生物理层顶点穿透面片时,将该顶点的位移值限制在面片之外,并将 该面片三个顶点的穿透标识符赋值;表面层的精细网格只需处理插值数据来自于穿透标识 符已赋值的那些顶点,在对它们的插值过程中进行穿透检查即可。
权利要求
一种基于层次模型的虚拟人皮肤物理变形方法,其特征在于步骤如下(1)构造层次模型进行虚拟人层次模型的构造,形成用于控制运动的骨骼层模型、用于物理变形的物理层模型和用于最终绘制的表面层模型,并建立骨骼层模型与物理层模型、物理层模型与表面层模型的映射关系;(2)物理变形依据用户设定的运动方式,骨骼层模型产生运动趋势并带动物理层模型进行物理变形;(3)驱动皮肤在物理变形过程中,按照物理层模型和表面层模型的映射关系,驱动表面层模型随之运动和变化,生成变形的动态效果。
2. 根据权利要求1所述的基于层次模型的虚拟人皮肤物理变形方法,其特征在于所 述步骤(1)中构造层次模型的步骤如下(1. 1)通过三维扫描仪获取并生成人体表面三维网格数据,所述网格数据即为用于绘 制的表面层模型;(1.2)确定表面层中各关节截面并获取截面中心点;两两直线连接相邻的关节截面中 心点,形成的线段即为骨骼;若干相连骨骼构成骨骼层模型;(1. 3)对表面层模型采取半边折叠化简操作,得到简化网格;对简化网格每条边设置 面弹簧参数;对简化网格每个顶点设置物理参数;连接顶点和该顶点在骨骼上的垂直映射 点,设置体弹簧参数;中间层顶点、面弹簧、体弹簧所构成的质点弹簧模型,即为物理层模 型。
3. 根据权利要求1所述的基于层次模型的虚拟人皮肤物理变形方法,其特征在于所 述步骤(1)中建立各层模型之间映射关系的步骤如下(1. 1)建立骨骼层模型与物理层模型之间的映射关系通过体弹簧建立物理映射,体 弹簧的弹力作用将骨骼层模型的运动状态传递到物理层模型,驱动物理层模型的顶点发生 位移;(1.2)建立物理层模型与表面层模型之间的映射关系物理层模型顶点的位移变化量 由体弹簧和面弹簧的弹力作用共同确定;物理层模型的顶点为表面层模型顶点的一个子 集,表面层模型其余顶点由临近的若干物理层模型顶点位移向量插值得到。
4. 根据权利要求2所述的基于层次模型的虚拟人皮肤物理变形方法,其特征在于所 述步骤(1. 3)中得到简化网格的步骤如下(1.3. 1)读入表面层模型,计算每个顶点的误差矩阵和误差值,将顶点按误差值从小到 大排序;(1. 3. 2)依次取出每个顶点,计算其折叠顶点,传递折叠误差到相关三角形中需要改变 的顶点上,执行半边折叠操作,并保存折叠信息;(1. 3. 3)判断折叠有效性,继续进行折叠操作,直到顶点序列为空或达到初始阈值。
5. 根据权利要求1所述的基于层次模型的虚拟人皮肤物理变形方法,其特征在于所 述步骤(2)中物理变形的步骤如下(2. 1)接收用户设定的虚拟人运动指令;(2. 2)依据用户运动指令,骨骼层模型开始运动,并通过体弹簧向物理层模型顶点施力;(2. 3)物理层模型顶点发生位移变化,面弹簧、体弹簧发生长度变化而产生弹力,再反 馈到顶点改变顶点的位置;(2. 4)在达到运动终态前,迭代步骤2. 2和步骤2. 3 ;(2. 5)达到运动终态后,弹力计算继续运行,直到物理层模型中各个顶点达到平衡的稳 定状态,物理变形结束。
6.根据权利要求1所述的基于层次模型的虚拟人皮肤物理变形方法,其特点在于所 述步骤(3)中驱动皮肤的步骤如下(3. 1)表面顶点确定与之邻接的物理层模型顶点,保存距离、方向信息;(3. 2)对邻接的物理层模型中的顶点进行向量插值,得到表面层模型的顶点位移;(3. 3)更新表面层模型顶点位置,进行细节修正。
全文摘要
一种基于层次模型的虚拟人皮肤物理变形方法,步骤为(1)构造层次模型首先处理原始模型生成用于控制运动的骨骼层模型、用于物理变形的物理层模型和用于最终绘制的表面层模型,并建立骨骼层与物理层、物理层与表面层的映射关系;(2)物理变形层次模型构造完成后,依据用户设定的运动方式,骨骼层产生运动趋势并带动物理层进行物理变形;(3)驱动皮肤在物理变形过程中,按照物理层和表面层的映射关系,驱动表面层随之运动和变化,生成皮肤变形的动态效果。本发明在保留物理变形真实感优势的基础上,结合层次模型数据组织灵活的特点,分别构建了用于虚拟人皮肤绘制的精细网格和用于变形控制及物理计算的简化网格,在保证虚拟人精确变形过程与真实绘制效果的前提下,减少了计算开销。
文档编号G06T15/70GK101719284SQ20091024353
公开日2010年6月2日 申请日期2009年12月25日 优先权日2009年12月25日
发明者曹远, 梁晓辉, 沈旭昆, 赵沁平 申请人:北京航空航天大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1