当前位置: 首页 > 专利查询>东华大学专利>正文

三维虚拟服装快速姿态同步方法技术

技术编号:4167987 阅读:301 留言:0更新日期:2012-04-11 18:40
本发明专利技术提供了一种三维虚拟服装快速姿态同步方法,其特征在于,具体步骤为:第一步:建立三维人体模型以及虚拟服装模型,第二步:计算虚拟服装模型的受力情况;第三步:姿态同步。本发明专利技术的优点是当人体的姿态改变时,服装的姿态实时地随之改变,从而实现各种着装姿态下的人-衣姿态同步。

Three dimensional virtual garment rapid attitude synchronization method

The present invention provides a 3D virtual garment fast attitude synchronization method, which is characterized in that the method comprises the following steps: the first step: the establishment of 3D human body model and virtual clothing model, the second step: the force calculation of virtual clothing model; the third step: attitude synchronization. The advantage of the invention is that when the posture of the human body changes, the posture of the garment is changed in real time, so as to realize the synchronization of the human clothing posture under all kinds of dressing postures.

【技术实现步骤摘要】

本专利技术涉及一种,用于服装企业网络销售服装时展示 三维服装动态着装效果,属于计算机科学中的虚拟现实

技术介绍
现有的三维服装的着装效果的展示方法中,皆是将服装应用在特定的人体姿态上,为 了更好的展示三维服装的着装效果,需要着装人体做出各种姿态,因此需要一种三维虚拟 服装快速姿态同步方法,现有技术中没有这种方法。
技术实现思路
本专利技术的目的是提供一种。为了达到上述目的,本专利技术的技术方案是提供一种, 其特征在于,具体步骤为第一步分别建立由三角形集合构成的三维人体模型以及虚拟服装模型,虚拟服装模 型设于三维人体模型外侧,三维人体模型的三角形的密度为10000个/人,虚拟服装模型的三角形的密度为3000-4000个/件;第二步第一步建立的虚拟服装模型中每个三角形的顶点为一个质点,三角形的三个 边代表一根非线性弹簧,其中第i个顶点尸i的受力方程为f = f, + d, = —A,c(x) — &懇C(x) (1)5x, 5x,其中,f为第i个顶点尸i所受内力的合力;f,和d,分别为作用在第i个顶点尸i上的弹性力 和粘性力;ii,l,2,…n; n为三角形的顶点总数;A为弹簧的虎克常数;、为弹簧的粘性系数;C(X)为与变形能相关的条件函数,C(;c) — X卜i:; X为弹簧的瞬时长度;Z为弹簧的原长;第三步姿态同步步骤3.1、以^表示三维人体模型的表面,以Sg表示虚拟服装模型的表面,计算在默 认姿势下^与三维人体模型间的最短距离矢量集(D),即对于(PIPeSJ,找出三维人体模型上的一点Q,满足{QIQe&,Q = argmin(|PQ,|)} , z = 0,1,2,…,w ; (2)Q,其中m为三维人体模型的三角形顶点总数,即Q点为&上到P点距离最近的点;步骤3.2、获得三维人体模型的动画,将动画按照每秒25帧的速度播放,对于每个三维人体模型的新姿态,计算^上的顶点的初步同步位置P^如下(3)其中Q'是Q点在新姿态下的位置,R是旋转矩阵,代表Q点的法向从n。到n,的旋转,计算如下令旋转角e-arccos(n。w.n磨),r = n。wxii_,则及=0 0 0 1(4)其中c = cosP, s = sinS;x, y, z分别为旋转向量r的x, y, z分量坐标值,此时新姿态下的虚拟服装模型的表面记为,将新姿态下的三维人体模型的表面记为;步骤3.3、对于(P^IP,eSg—^J,寻找三维人体模型上的一点Q^,满足{Q, I Q, e = argmin(l P^Q,— ew |)} , / = 0,1,2,…,w ,其中,m为S^上的三角形顶点总数,即Q^为^^上距离P^最近的点;(5)当P^位于&内部,即发生穿透时,将P一沿着靠近n的方向旋转90度,gp:令d =P Q xnP Q xn|则(^i 'P^, i '为旋转矩阵:xjV - z y + a: 0;cz + _y_yz - x z2 00 0 0 1(6)其中x, y, z分别为旋转向量d的x, y, z分量坐标值;步骤3.4、将虚拟服装模型进行悬垂以及平滑处理计算在己知时间/。下位置x(f。)和速度x(/。)时,求解时刻/。 + A/时的位置x( 。 + A/)和速度X(Z。+A/), Af为时间步长,即求解下述微分方程:「x、_ d「x、「 v 、、x乂、v>、M—if(x,v),(7)其中,M为服装模型质量矩阵,f为服装模型的合力矩阵,x。=x(, v。=v(/。),位移增量Ax = x(Z。 + 和速度增量Av = v(f。 + Af)- v(O ,对上述微分方程采用一阶向后欧拉积分、x) fAvv0 + AvM_1f(x。 + Ax,v。+Av(8)对于式(8)所给出的非线性方程,将f以泰勒级数方式展开得到其一阶近似:f(x。 + Ax,v0 + Av) = f0 +芸Ax + ! Av将(9)式代入(8)式整理可得::-ArfVI一1 二 - A,ZM_1 二 Av =層_15v 5x J-1! 、,-i5f、Ax = Av。 + Av)+ A/ — v'ax(9)(10)(11)其中,i为单位阵,采用共轭梯度法首先求解式(io)中的f。, sf/ax以及af/3v,从而得到Av,然后更新x和v,即可得到服装在时刻r。+Af时的位置和速度,这个位置即为该边上两个顶点经悬垂处理后的位置,在求解过程中,初始速度v。为0,初始位置x。即为步骤3.3完成后的位置;若在一个时间步长A/过后,>。(/ + &)-&(/ + &)|〉5>。(/)-&(/)|, &=1%, ^为允许应变的阈值,采用速度过滤的方法进行纠正如下在时刻t时,用欧拉积分预先计算At后三角形顶点的位置x0(/ + AO=x0(0 + v0(/).Af (12)x! (/ + =x/) + (13)其中x。和^分别是三角形一条边上两个顶点的位置,在时刻t+At时,如果应变g = |x0C-XA0l〉p,0,则这两个三角形顶点的速度在t时刻应被调节如下|x0(0-x洲((0 = [xr(, + AO-x0C (14) v「 (0 = [x「 (, + A,) - Xl (0] / (15) 其中x「(Z + A/)和xr^ + AO是满足£ = 1%时的新位置,这个位置即为该边上两个顶点经平滑处理后的位置,<,+ AO =x0(/) + , X。: — Xl, (1 ± ,(/ + △,) =Xl(,)+ xiW-xo(0 (1±gJ,其中的±在过度伸长时取+,过度压缩时取-Ix々)-x。(01本专利技术的优点是当人体的姿态改变时,服装的姿态实时地随之改变,从而实现各种着 装姿态下的人-衣姿态同步。 附图说明图1为示意图; 图2为初步同步效果图; 图3为初步同步示意图; 图4为穿透补偿示意图; 图5为悬垂与平滑示意图; 图6为姿态同步侧面效果图; 图7为姿态同步正面效果图; 图8为姿态同步背面效果图。 具体实施例方式下面结合实施例来具体说明本专利技术。实施例一种,如图1所示,为三维虚拟服装快速姿态同步方 法示意图,具体步骤为第一步分别建立由三角形集合构成的三维人体模型以及虚拟服装模型,虚拟服装模 型设于三维人体模型外侧,三维人体模型的三角形的密度为10000个/人,虚拟服装模型的三角形的密度为3000-4000个/件;其中,三维人体模型的建立方法为通过三维人体扫描仪进行扫描,或者由美工师自行布线获得,或者将真人倒模,然后用数字笔在人体表面布线,计算机中同步生成三维人体 模型。虚拟服装模型的建立方法为将着装人体通过三维人体扫描仪进行扫描,或者由美工师 自行布线,或者将真实服装版型通过数字化仪扫描为数字版型,再通过虚拟缝合和虚拟悬 垂的方式制作为虚拟服装,还可以通过服装的多张照片或者视频拟合。第二步第一步建立的虚拟服装模型中每个三角形的顶点为一个质点,三角形的三个 边代表一根非线性弹簧,其中第i个顶点A的受力方程为f = f, + d, = —t懇C(x)—、懇C(x) ( !)其中,f为第i个顶点尸i所受内力的合力;f,和d,分别为作用在第i个顶点尸本文档来自技高网...

【技术保护点】
一种三维虚拟服装快速姿态同步方法,其特征在于,具体步骤为: 第一步:分别建立由三角形集合构成的三维人体模型以及虚拟服装模型,虚拟服装模型设于三维人体模型外侧,三维人体模型的三角形的密度为10000个/人,虚拟服装模型的三角形的密度为3 000-4000个/件; 第二步:第一步建立的虚拟服装模型中每个三角形的顶点为一个质点,三角形的三个边代表一根非线性弹簧,其中第i个顶点P↓[i]的受力方程为: f=f↓[i]+d↓[i]=-k*C(x)/*x↓[i]C(x)- k↓[d]*C(x)/*x↓[i]C(x) (1) 其中,f为第i个顶点P↓[i]所受内力的合力;f↓[i]和d↓[i]分别为作用在第i个顶点P↓[i]上的弹性力和粘性力;i=0,1,2,…n;n为三角形的顶点总数;k为弹簧的虎克常数 ;k↓[d]为弹簧的粘性系数;C(x)为与变形能相关的条件函数,C(x)=|x|-L;x为弹簧的瞬时长度;L为弹簧的原长; 第三步:姿态同步: 步骤3.1、以S↓[b]表示三维人体模型的表面,以S↓[g]表示虚拟服装模型的表面, 计算在默认姿势下S↓[g]与三维人体模型间的最短距离矢量集{D},即对于{P|P∈S↓[g]},找出三维人体模型上的一点Q,满足: {Q|Q∈S↓[b],Q=arg↓[Q↓[i]]min(|PQ↓[i]|)},i=0,1,2,…,m;  (2) 其中m为三维人体模型的三角形顶点总数,即Q点为S↓[b]上到P点距离最近的点; 步骤3.2、获得三维人体模型的动画,将动画按照每秒25帧的速度播放,对于每个三维人体模型的新姿态,计算S↓[b]上的顶点的初步同步位置P↓ [new]如下: P↓[new]=Q′+R.|PQ| (3) 其中Q′是Q点在新姿态下的位置,R是旋转矩阵,代表Q点的法向从n↓[old]到n↓[new]的旋转,计算如下:令旋转角θ=arccos(n↓[old].n↓[new]) ,r=n↓[old]×n↓[new],则 *** (4) 其中c=cosθ,s=sinθ;x,y,z分别为旋转向量r的x,y,z分量坐标值,此时新姿态下的虚拟服装模型的表面记为S↓[g-new],将新姿态下的三维人体模型的表面记 为S↓[b-new]; 步骤3.3、对于{P↓[new]|P↓[new]∈S↓[g-new]},寻找三维人体模型上的一点Q↓[n...

【技术特征摘要】
1、一种三维虚拟服装快速姿态同步方法,其特征在于,具体步骤为第一步分别建立由三角形集合构成的三维人体模型以及虚拟服装模型,虚拟服装模型设于三维人体模型外侧,三维人体模型的三角形的密度为10000个/人,虚拟服装模型的三角形的密度为3000-4000个/件;第二步第一步建立的虚拟服装模型中每个三角形的顶点为一个质点,三角形的三个边代表一根非线性弹簧,其中第i个顶点Pi的受力方程为<maths id=math0001 num=0001 ><math><![CDATA[ <mrow><mi>f</mi><mo>=</mo><msub> <mi>f</mi> <mi>i</mi></msub><mo>+</mo><msub> <mi>d</mi> <mi>i</mi></msub><mo>=</mo><mo>-</mo><mi>k</mi><mfrac> <mrow><mo>&PartialD;</mo><mi>C</mi><mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo></mrow> </mrow> <mrow><mo>&PartialD;</mo><msub> <mi>x</mi> <mi>i</mi></msub> </mrow></mfrac><mi>C</mi><mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo></mrow><mo>-</mo><msub> <mi>k</mi> <mi>d</mi></msub><mfrac> <mrow><mo>&PartialD;</mo><mi>C</mi><mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo></mrow> </mrow> <mrow><mo>&PartialD;</mo><msub> <mi>x</mi> <mi>i</mi></msub> </mrow></mfrac><mi>C</mi><mrow> <mo>(</mo> <mi>x</mi> <mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo></mrow> </mrow>]]></math></maths>其中,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,满足<maths id=math0002 num=0002 ><math><![CDATA[ <mrow><mo>{</mo><mi>Q</mi><mo>|</mo><mi>Q</mi><mo>&Element;</mo><msub> <mi>S</mi> <mi>b</mi></msub><mo>,</mo><mi>Q</mi><mo>=</mo><munder> <mrow><mi>arg</mi><mi>min</mi> </mrow> <msub><mi>Q</mi><mi>i</mi> </msub></munder><mrow> <mo>(</mo> <mo>|</mo> <msub><mi>PQ</mi><mi>i</mi> </msub> <mo>|</mo> <mo>)</mo></mrow><mo>}</mo><mo>,</mo><mi>i</mi><mo>=</mo><mn>0,1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>m</mi><mo>;</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo></mrow> </mrow>]]></math></maths>其中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,则<maths id=math0003 num=0003 ><math><![CDATA[ <mrow><mi>R</mi><mo>=</mo><mfenced open='[' close=']'> <mtable><mtr> <mtd><msup> <mi>x</mi> <mn>2</mn></msup><mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>c</mi> <mo>)</mo></mrow><mo>+</mo><mi>c</mi> </mtd> <mtd><mi>yx</mi><mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>c</mi> <mo>)</mo></mrow><mo>+</mo><mi>zs</mi> </mtd> <mtd><mi>xz</mi><mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>c</mi> <mo>)</mo></mrow><mo>-</mo><mi>ys</mi> </mtd> <mtd><mn>0</mn> </mtd></mtr><mtr> <mtd><mi>xy</mi><mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>c</mi> <mo>)</mo></mrow><mo>-</mo><mi>zs</mi> </mtd> <mtd><msup> <mi>y</mi> <mn>2</mn></msup><mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>c</mi> <mo>)</mo></mrow><mo>+</mo><mi>c</mi> </mtd> <mtd><mi>yz</mi><mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>c</mi> <mo>)</mo></mrow><mo>+</mo><mi>xs</mi> </mtd> <mtd><mn>0</mn> </mtd></mtr><mtr> <mtd><mi>xz</mi><mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>c</mi> <mo>)</mo></mrow><mo>+</mo><mi>ys</mi> </mtd> <mtd><mi>yz</mi><mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>c</mi> <mo>)</mo></mrow><mo>-</mo><mi>xs</mi> </mtd> <mtd><msup> <mi>z</mi> <mn>2</mn></msup><mrow> <mo>(</mo> <mn>1</mn> <mo>-</mo> <mi>c</mi> <mo>)</mo></mrow><mo>+</mo><mi>c</mi> </mtd> <mtd><mn>0</mn> </mtd></mtr><mtr> <mtd><mn>0</mn> </mtd> <mtd><mn>0</mn> </mtd> <mtd><mn>0</mn> </mtd> <mtd><mn>1</mn> </mtd></mtr> </mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow> <mo>(</mo> <mn>4</mn> <mo>)</mo></mrow> </mrow>]]></math></maths>其中c=cosθ,s=sinθ;x,y,z分别为旋转向量r的x,y,z分量坐标值,此时新姿态下的虚拟服装模型的表面记为Sg-new,将新姿态下的三维人体模型的表面记为Sb-new;步骤3.3、对于{Pnew|Pnew∈Sg-new},寻找三维人体模型上的一点Qnew,满足<maths id=math0004 num=0004 ><math><![CDATA[ <mrow><mo>{</mo><msub> <mi>Q</mi> <mi>new</mi></msub><mo>|</mo><msub> <mi>Q</mi> <mi>new</mi></msub><mo>&Element;</mo><msub> <mi>S</mi> <mrow><mi>b</mi><mo>-</mo><mi>new</mi> </mrow></msub><mo>,</mo><msub> <mi>Q</mi> <mi>new</mi></msub><mo>=</mo><munder> <mrow><mi>arg</mi><mi>min</mi> </mrow> <msub><mi>Q</mi><mrow> <mi>i</mi> <mo>-</mo> <mi>new</mi></mrow> </msub></munder><mrow> <mo>(</mo> <mo>|</mo> <msub><mi>P</mi><mi>new</mi> </msub> <msub><mi>Q</mi><mrow> <mi>i</mi> <mo>-</mo> <mi>new</mi></mrow> </msub> <mo>|</mo> <mo>)</mo></mrow><mo>}</mo><mo>,</mo><mi>i</mi><mo>=</mo><mn>0,1,2</mn><mo>,</mo><mo>.</mo><mo>.</mo><mo>.</mo><mo>,</mo><mi>m</mi><mo>,</mo><mo>-</mo><mo>-</mo><mo>-</mo><mrow> <mo>(</mo> <mn>5</mn> <mo>)</mo></mrow> </mrow>]]></math></maths>其中,m为Sb-new上的三角形顶点总数,即Qnew为Sb-new上距离Pnew最近的点;当Pnew位于Sb内部,即发生穿透时,将Pnew沿着靠近n的方向旋转90度,即令<maths id=math0005 num=0005 ><math><![CDATA[ <mrow><mi>d</mi><mo>=</mo><mfrac> <mrow><msub> <mi>P</mi> <mi>new</mi></msub><msub> <mi>Q</mi> <mi>new</mi></msub><mo>&times;</mo><mi>n</mi> </mrow> <mrow><mo>|</mo><msub> <mi>P</mi> <mi>new</mi></msub><msub> <mi>Q</mi> <mi>new</mi></msub><mo>&times;</mo><mi>n</mi><mo>|</mo> </mrow></mfrac><mo>,</mo> </mrow>]]></math> id=icf0005 file=A2009101945370003C3.tif wi=32 he=10 top= 121 left = 21 img-content=drawing img-format=tif orientation=portrait inline=yes/></maths>则P′new=R′·Pnew,R′为旋转矩阵<maths id=math0006 num=0006 ><math><![CDATA[ <mrow><msup> <mi>R</mi> <mo>&prime;</mo></msup><mo>=</mo><mfenced open='[' close=']'> <mtable><mtr> <mtd><msup> <mi>x</mi> <mn>2</mn></msup> </mtd> <mtd><mi>yx</mi><mo>+</mo><mi>z</mi> </mtd> <mtd><mi>xz</mi><mo>-</mo><mi>y</mi> </mtd> <mtd><mn>0</mn> </mtd></mtr><mtr> <mtd><mi>xy</mi><mo>-</mo><mi>z</mi> </mtd> <mtd><msup> <mi>y</mi> <mn>2</mn></msup> </mtd> <mtd><mi>yz</mi><mo>+</mo><mi>x</mi> </mtd> <mtd><mn>0</mn> </mtd></mtr><mtr> <mtd><mi>xz</mi><mo>+</mo><mi>y</mi> </mtd> <mtd><mi>yz</mi><mo>-</mo><mi>x</mi> </mtd> <mtd><msup> <mi>z</mi> <mn>2</mn></msup> </mtd> <mtd><mn>0</mn> </mtd></mtr><mtr> <mtd><mn>0</mn> </mtd> <mtd><mn>0</mn> </mtd> <mtd><mn>0</mn> </mtd> <mtd><mn>1</mn> </mtd></mtr> </mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow> <mo>(</mo> <mn>6</mn> <mo>)</mo></mrow> </mrow>]]></math></maths>其中x,y,z分别为旋转向量d的x,y,z分量坐标值;步骤3.4、将虚拟服装模型进行悬垂以及平滑处理计算在已知时间t0下位置x(t0)和速度 id=icf0007 file=A2009101945370003C5.tif wi=8 he=5 top= 182 left = 99 img-content=drawing img-format=tif orientation=portrait inline=yes/>时,求解时刻t0+Δt时的位置x(t0+Δt)和速度 id=icf0008 file=A2009101945370003C6.tif wi=18 he=5 top= 193 left = 26 img-content=drawing img-format=tif orientation=portrait inline=yes/>Δt为时间步长,即求解下述微分方程<maths id=math0007 num=0007 ><math><![CDATA[ <mrow><mfrac> <mi>d</mi> <mi>dt</mi></mfrac><mfenced open='(' close=')'> <mtable><mtr> <mtd><mi>x</mi> </mtd></mtr><mtr> <mtd><mo>&CenterDot;</mo> </mtd></mtr><mtr> <mtd><mi>x</mi> </mtd></mtr> </mtable></mfenced><mo>=</mo><mfrac> <mi>d</mi> <mi>dt</mi></mfrac><mfenced open='(' close=')'> <mtable><mtr> <mtd><mi>x</mi> </mtd></mtr><mtr> <mtd><mi>v</mi> </mtd></mtr> </mtable></mfenced><mo>=</mo><mfenced open='(' close=')'> <mtable><mtr> <mtd><mi>v</mi> </mtd></mtr><mtr> <mtd><msup> <mi>M</mi> <mrow><mo>-</mo><mn>1</mn> </mrow></msup><mi>f</mi><mrow> <mo>(</mo> <mi>x</mi> <mo>,</mo> <mi>v</mi> <mo>)</mo></mrow> </mtd></mtr> </mtable></mfenced><mo>-</mo><mo>-</mo><m...

【专利技术属性】
技术研发人员:钟跃崎
申请(专利权)人:东华大学
类型:发明
国别省市:31[中国|上海]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1