[发明专利]三维虚拟服装快速姿态同步方法无效
申请号: | 200910194537.5 | 申请日: | 2009-08-25 |
公开(公告)号: | CN101630417A | 公开(公告)日: | 2010-01-20 |
发明(设计)人: | 钟跃崎 | 申请(专利权)人: | 东华大学 |
主分类号: | G06T15/70 | 分类号: | G06T15/70 |
代理公司: | 上海申汇专利代理有限公司 | 代理人: | 翁若莹 |
地址: | 201620上*** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明提供了一种三维虚拟服装快速姿态同步方法,其特征在于,具体步骤为:第一步:建立三维人体模型以及虚拟服装模型,第二步:计算虚拟服装模型的受力情况;第三步:姿态同步。本发明的优点是当人体的姿态改变时,服装的姿态实时地随之改变,从而实现各种着装姿态下的人-衣姿态同步。 | ||
搜索关键词: | 三维 虚拟 服装 快速 姿态 同步 方法 | ||
【主权项】:
1、一种三维虚拟服装快速姿态同步方法,其特征在于,具体步骤为:第一步:分别建立由三角形集合构成的三维人体模型以及虚拟服装模型,虚拟服装模型设于三维人体模型外侧,三维人体模型的三角形的密度为10000个/人,虚拟服装模型的三角形的密度为3000-4000个/件;第二步:第一步建立的虚拟服装模型中每个三角形的顶点为一个质点,三角形的三个边代表一根非线性弹簧,其中第i个顶点Pi的受力方程为:f = f i + d i = - k ∂ C ( x ) ∂ x i C ( x ) - k d ∂ C ( x ) ∂ x i C ( x ) - - - ( 1 ) ]]> 其中,f为第i个顶点Pi所受内力的合力;fi和di分别为作用在第i个顶点Pi上的弹性力和粘性力;i=0,1,2,…n;n为三角形的顶点总数;k为弹簧的虎克常数;kd为弹簧的粘性系数;C(x)为与变形能相关的条件函数,C(x)=|x|-L;x为弹簧的瞬时长度;L为弹簧的原长;第三步:姿态同步:步骤3.1、以Sb表示三维人体模型的表面,以Sg表示虚拟服装模型的表面,计算在默认姿势下Sg与三维人体模型间的最短距离矢量集{D},即对于{P|P∈Sg},找出三维人体模型上的一点Q,满足:{ Q | Q ∈ S b , Q = arg min Q i ( | PQ i | ) } , i = 0,1,2 , . . . , m ; - - - ( 2 ) ]]> 其中m为三维人体模型的三角形顶点总数,即Q点为Sb上到P点距离最近的点;步骤3.2、获得三维人体模型的动画,将动画按照每秒25帧的速度播放,对于每个三维人体模型的新姿态,计算Sb上的顶点的初步同步位置Pnew如下:Pnew=Q′+R·|PQ| (3)其中Q′是Q点在新姿态下的位置,R是旋转矩阵,代表Q点的法向从nold到nnew的旋转,计算如下:令旋转角θ=arccos(nold·nnew),r=nold×nnew,则R = x 2 ( 1 - c ) + c yx ( 1 - c ) + zs xz ( 1 - c ) - ys 0 xy ( 1 - c ) - zs y 2 ( 1 - c ) + c yz ( 1 - c ) + xs 0 xz ( 1 - c ) + ys yz ( 1 - c ) - xs z 2 ( 1 - c ) + c 0 0 0 0 1 - - - ( 4 ) ]]> 其中c=cosθ,s=sinθ;x,y,z分别为旋转向量r的x,y,z分量坐标值,此时新姿态下的虚拟服装模型的表面记为Sg-new,将新姿态下的三维人体模型的表面记为Sb-new;步骤3.3、对于{Pnew|Pnew∈Sg-new},寻找三维人体模型上的一点Qnew,满足:{ Q new | Q new ∈ S b - new , Q new = arg min Q i - new ( | P new Q i - new | ) } , i = 0,1,2 , . . . , m , - - - ( 5 ) ]]> 其中,m为Sb-new上的三角形顶点总数,即Qnew为Sb-new上距离Pnew最近的点;当Pnew位于Sb内部,即发生穿透时,将Pnew沿着靠近n的方向旋转90度,即:令d = P new Q new × n | P new Q new × n | , ]]> 则P′new=R′·Pnew,R′为旋转矩阵:R ′ = x 2 yx + z xz - y 0 xy - z y 2 yz + x 0 xz + y yz - x z 2 0 0 0 0 1 - - - ( 6 ) ]]> 其中x,y,z分别为旋转向量d的x,y,z分量坐标值;步骤3.4、将虚拟服装模型进行悬垂以及平滑处理:计算在已知时间t0下位置x(t0)和速度
时,求解时刻t0+Δt时的位置x(t0+Δt)和速度
Δt为时间步长,即求解下述微分方程:d dt x · x = d dt x v = v M - 1 f ( x , v ) - - - ( 7 ) ]]> 其中,M为服装模型质量矩阵,f为服装模型的合力矩阵,x0=x(t0),v0=v(t0),位移增量Δx=x(t0+Δt)和速度增量Δv=v(t0+Δt)-v(t0),对上述微分方程采用一阶向后欧拉积分:Δx Δv = Δt v 0 + Δv M - 1 f ( x 0 + Δx , v 0 + Δv ) - - - ( 8 ) ]]> 对于式(8)所给出的非线性方程,将f以泰勒级数方式展开得到其一阶近似:f ( x 0 + Δx , v 0 + Δv ) = f 0 + ∂ f ∂ x Δx + ∂ f ∂ v Δv - - - ( 9 ) ]]> 将(9)式代入(8)式整理可得:( I - Δt M - 1 ∂ f ∂ v - Δ t 2 M - 1 ∂ f ∂ x ) Δv = Δt M - 1 ( f 0 + Δt ∂ f ∂ x v 0 ) - - - ( 10 ) ]]> Δx=Δt(v0+Δv) (11)其中,I为单位阵,采用共轭梯度法首先求解式(10)中的f0,
以及
从而得到Δv,然后更新x和v,即可得到服装在时刻t0+Δt时的位置和速度,这个位置即为该边上两个顶点经悬垂处理后的位置,在求解过程中,初始速度v0为0,初始位置x0即为步骤3.3完成后的位置;若在一个时间步长Δt过后,|x0(t+Δt)-x1(t+Δt)|>ε|x0(t)-x1(t)|,εa=1%,εa为允许应变的阈值,采用速度过滤的方法进行纠正如下:在时刻t时,用欧拉积分预先计算Δt后三角形顶点的位置:x0(t+Δt)=x0(t)+v0(t)·Δt (12)x1(t+Δt)=x1(t)+v1(t)·Δt (13)其中x0和x1分别是三角形一条边上两个顶点的位置,在时刻t+Δt时,如果应变ϵ = | x 0 ( t + Δt ) - x 1 ( t + Δt ) | | x 0 ( t ) - x 1 ( t ) | > 1 % , ]]> 则这两个三角形顶点的速度在t时刻应被调节如下:v 0 new ( t ) = [ x 0 new ( t + Δt ) - x 0 ( t ) ] / Δt - - - ( 14 ) ]]>v 1 new ( t ) = [ x 1 new ( t + Δt ) - x 1 ( t ) ] / Δt - - - ( 15 ) ]]> 其中x0new(t+Δt)和x1new(t+Δt)是满足ε=1%时的新位置,这个位置即为该边上两个顶点经平滑处理后的位置,x 0 new ( t + Δt ) = x 0 ( t ) + x 0 ( t ) - x 1 ( t ) | x 0 ( t ) - x 1 ( t ) | ( 1 ± ϵ s ) , ]]>x 1 new ( t + Δt ) = x 1 ( t ) + x 1 ( t ) - x 0 ( t ) | x 1 ( t ) - x 0 ( t ) | ( 1 ± ϵ s ) , ]]> 其中的±在过度伸长时取+,过度压缩时取-。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于东华大学,未经东华大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/200910194537.5/,转载请声明来源钻瓜专利网。