專利名稱::三維虛擬服裝快速姿態(tài)同步方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及一種三維虛擬服裝快速姿態(tài)同步方法,用于服裝企業(yè)網(wǎng)絡(luò)銷(xiāo)售服裝時(shí)展示三維服裝動(dòng)態(tài)著裝效果,屬于計(jì)算機(jī)科學(xué)中的虛擬現(xiàn)實(shí)
技術(shù)領(lǐng)域:
。
背景技術(shù):
:現(xiàn)有的三維服裝的著裝效果的展示方法中,皆是將服裝應(yīng)用在特定的人體姿態(tài)上,為了更好的展示三維服裝的著裝效果,需要著裝人體做出各種姿態(tài),因此需要一種三維虛擬服裝快速姿態(tài)同步方法,現(xiàn)有技術(shù)中沒(méi)有這種方法。
發(fā)明內(nèi)容本發(fā)明的目的是提供一種三維虛擬服裝快速姿態(tài)同步方法。為了達(dá)到上述目的,本發(fā)明的技術(shù)方案是提供一種三維虛擬服裝快速姿態(tài)同步方法,其特征在于,具體步驟為第一步分別建立由三角形集合構(gòu)成的三維人體模型以及虛擬服裝模型,虛擬服裝模型設(shè)于三維人體模型外側(cè),三維人體模型的三角形的密度為10000個(gè)/人,虛擬服裝模型的三角形的密度為3000-4000個(gè)/件;第二步第一步建立的虛擬服裝模型中每個(gè)三角形的頂點(diǎn)為一個(gè)質(zhì)點(diǎn),三角形的三個(gè)邊代表一根非線性彈簧,其中第i個(gè)頂點(diǎn)尸i的受力方程為f=f,+d,=—A,c(x)—&懇C(x)(1)5x,5x,其中,f為第i個(gè)頂點(diǎn)尸i所受內(nèi)力的合力;f,和d,分別為作用在第i個(gè)頂點(diǎn)尸i上的彈性力和粘性力;ii,l,2,…n;n為三角形的頂點(diǎn)總數(shù);A為彈簧的虎克常數(shù);、為彈簧的粘性系數(shù);C(X)為與變形能相關(guān)的條件函數(shù),C(;c)—X卜i:;X為彈簧的瞬時(shí)長(zhǎng)度;Z為彈簧的原長(zhǎng);第三步姿態(tài)同步步驟3.1、以^表示三維人體模型的表面,以Sg表示虛擬服裝模型的表面,計(jì)算在默認(rèn)姿勢(shì)下^與三維人體模型間的最短距離矢量集(D),即對(duì)于(PIPeSJ,找出三維人體模型上的一點(diǎn)Q,滿足{QIQe&,Q=argmin(|PQ,|)},z=0,1,2,…,w;(2)Q,其中m為三維人體模型的三角形頂點(diǎn)總數(shù),即Q點(diǎn)為&上到P點(diǎn)距離最近的點(diǎn);步驟3.2、獲得三維人體模型的動(dòng)畫(huà),將動(dòng)畫(huà)按照每秒25幀的速度播放,對(duì)于每個(gè)三維人體模型的新姿態(tài),計(jì)算^上的頂點(diǎn)的初步同步位置P"^如下(3)其中Q'是Q點(diǎn)在新姿態(tài)下的位置,R是旋轉(zhuǎn)矩陣,代表Q點(diǎn)的法向從n。"到n,的旋轉(zhuǎn),計(jì)算如下令旋轉(zhuǎn)角e-arccos(n。w.n磨),r=n。wxii_,則及=0001(4)其中c=cosP,s=sinS;x,y,z分別為旋轉(zhuǎn)向量r的x,y,z分量坐標(biāo)值,此時(shí)新姿態(tài)下的虛擬服裝模型的表面記為,將新姿態(tài)下的三維人體模型的表面記為;步驟3.3、對(duì)于(P^IP,eSg—"^J,尋找三維人體模型上的一點(diǎn)Q"^,滿足{Q,IQ,e=argmin(lP"^Q,—ew|)},/=0,1,2,…,w,其中,m為S"^上的三角形頂點(diǎn)總數(shù),即Q^為^^上距離P^最近的點(diǎn);(5)當(dāng)P^位于&內(nèi)部,即發(fā)生穿透時(shí),將P一沿著靠近n的方向旋轉(zhuǎn)90度,gp:令d=PQxnPQxn|則(^i'P^,i'為旋轉(zhuǎn)矩陣:xjV-zy+a:0;cz+_y_yz-xz200001(6)其中x,y,z分別為旋轉(zhuǎn)向量d的x,y,z分量坐標(biāo)值;步驟3.4、將虛擬服裝模型進(jìn)行懸垂以及平滑處理計(jì)算在己知時(shí)間/。下位置x(f。)和速度x(/。)時(shí),求解時(shí)刻/。+A/時(shí)的位置x(。+A/)和速度X(Z。+A/),Af為時(shí)間步長(zhǎng),即求解下述微分方程:「x、_d「x、「v、、x乂、v>、M—if(x,v),(7)其中,M為服裝模型質(zhì)量矩陣,f為服裝模型的合力矩陣,x。=x(",v。=v(/。),位移增量Ax=x(Z。+和速度增量Av=v(f。+Af)-v(O,對(duì)上述微分方程采用一階向后歐拉積分、x)fAvv0+AvM_1f(x。+Ax,v。+Av(8)對(duì)于式(8)所給出的非線性方程,將f以泰勒級(jí)數(shù)方式展開(kāi)得到其一階近似:f(x。+Ax,v0+Av)=f0+蕓Ax+!Av將(9)式代入(8)式整理可得::-ArfVI一1二-A,ZM_1二Av=層_15v5xJ-1!"、,-i5f、Ax=A"v。+Av)+A/—v'ax(9)(10)(11)其中,i為單位陣,采用共軛梯度法首先求解式(io)中的f。,sf/ax以及af/3v,從而得到Av,然后更新x和v,即可得到服裝在時(shí)刻r。+Af時(shí)的位置和速度,這個(gè)位置即為該邊上兩個(gè)頂點(diǎn)經(jīng)懸垂處理后的位置,在求解過(guò)程中,初始速度v。為0,初始位置x。即為步驟3.3完成后的位置;若在一個(gè)時(shí)間步長(zhǎng)A/過(guò)后,>。(/+&)-&(/+&)|〉5>。(/)-&(/)|,&=1%,^為允許應(yīng)變的閾值,采用速度過(guò)濾的方法進(jìn)行糾正如下在時(shí)刻t時(shí),用歐拉積分預(yù)先計(jì)算At后三角形頂點(diǎn)的位置x0(/+AO=x0(0+v0(/).Af(12)x!(/+=x"/)+(13)其中x。和^分別是三角形一條邊上兩個(gè)頂點(diǎn)的位置,在時(shí)刻t+At時(shí),如果應(yīng)變g=|x0C-X""A0l〉p,0,則這兩個(gè)三角形頂點(diǎn)的速度在t時(shí)刻應(yīng)被調(diào)節(jié)如下|x0(0-x洲((0=[xr(,+AO-x0C(14)v「(0=[x「(,+A,)-Xl(0]/(15)其中x「(Z+A/)和xr^+AO是滿足£=1%時(shí)的新位置,這個(gè)位置即為該邊上兩個(gè)頂點(diǎn)經(jīng)平滑處理后的位置,<,+AO=x0(/)+,X。":—Xl,(1±,(/+△,)=Xl(,)+xiW-xo(0(1±gJ,其中的±在過(guò)度伸長(zhǎng)時(shí)取+,過(guò)度壓縮時(shí)取-Ix々)-x。(01本發(fā)明的優(yōu)點(diǎn)是當(dāng)人體的姿態(tài)改變時(shí),服裝的姿態(tài)實(shí)時(shí)地隨之改變,從而實(shí)現(xiàn)各種著裝姿態(tài)下的人-衣姿態(tài)同步。圖1為三維虛擬服裝快速姿態(tài)同步方法示意圖;圖2為初步同步效果圖;圖3為初步同步示意圖;圖4為穿透補(bǔ)償示意圖;圖5為懸垂與平滑示意圖;圖6為姿態(tài)同步側(cè)面效果圖;圖7為姿態(tài)同步正面效果圖;圖8為姿態(tài)同步背面效果圖。具體實(shí)施例方式下面結(jié)合實(shí)施例來(lái)具體說(shuō)明本發(fā)明。實(shí)施例一種三維虛擬服裝快速姿態(tài)同步方法,如圖1所示,為三維虛擬服裝快速姿態(tài)同步方法示意圖,具體步驟為第一步分別建立由三角形集合構(gòu)成的三維人體模型以及虛擬服裝模型,虛擬服裝模型設(shè)于三維人體模型外側(cè),三維人體模型的三角形的密度為10000個(gè)/人,虛擬服裝模型的三角形的密度為3000-4000個(gè)/件;其中,三維人體模型的建立方法為通過(guò)三維人體掃描儀進(jìn)行掃描,或者由美工師自行布線獲得,或者將真人倒模,然后用數(shù)字筆在人體表面布線,計(jì)算機(jī)中同步生成三維人體模型。虛擬服裝模型的建立方法為將著裝人體通過(guò)三維人體掃描儀進(jìn)行掃描,或者由美工師自行布線,或者將真實(shí)服裝版型通過(guò)數(shù)字化儀掃描為數(shù)字版型,再通過(guò)虛擬縫合和虛擬懸垂的方式制作為虛擬服裝,還可以通過(guò)服裝的多張照片或者視頻擬合。第二步第一步建立的虛擬服裝模型中每個(gè)三角形的頂點(diǎn)為一個(gè)質(zhì)點(diǎn),三角形的三個(gè)邊代表一根非線性彈簧,其中第i個(gè)頂點(diǎn)A的受力方程為f=f,+d,=—t懇C(x)—、懇C(x)(!)其中,f為第i個(gè)頂點(diǎn)尸i所受內(nèi)力的合力;f,和d,分別為作用在第i個(gè)頂點(diǎn)尸i上的彈性力和粘性力;i^,l,2,…n;n為三角形的頂點(diǎn)總數(shù);々為彈簧的虎克常數(shù);^為彈簧的粘性系數(shù);C(X)為與變形能相關(guān)的條件函數(shù),C(X)HX卜丄;c為彈簧的瞬時(shí)長(zhǎng)度;Z為彈簧的原長(zhǎng);第三步姿態(tài)同步-步驟3.1、以^表示三維人體模型的表面,以Sg表示虛擬服裝模型的表面,計(jì)算在默認(rèn)姿勢(shì)下Sg與三維人體模型間的最短距離矢量集{0},即對(duì)于{PIPeSg},找出三維人體模型上的一點(diǎn)Q,滿足{Q|QeSA,Q=argmin(|PQ,|)},/-0,1,2,…,w;(2)Q,其中m為三維人體模型的三角形頂點(diǎn)總數(shù),即Q點(diǎn)為&上到P點(diǎn)距離最近的點(diǎn);步驟3.2、獲得三維人體模型的動(dòng)畫(huà),將動(dòng)畫(huà)按照每秒25幀的速度播放,對(duì)于每個(gè)三維人體模型的新姿態(tài),如圖2所示,為初步同步效果圖,圖3為初步同步示意圖,計(jì)算S^上的頂點(diǎn)的初步同歩位置P^如下P,=Q'+,|PQI(3)其中Q'是Q點(diǎn)在新姿態(tài)下的位置,R是旋轉(zhuǎn)矩陣,代表Q點(diǎn)的法向從n。w到n,的旋轉(zhuǎn),計(jì)算如下令旋轉(zhuǎn)角^arccos(n。w.n^),r=n。idxn_,貝U9<formula>formulaseeoriginaldocumentpage10</formula>其中C=cos^,s-sin^;x,y,z分別為旋轉(zhuǎn)向量r的x,y,z分量坐標(biāo)值,此時(shí)新姿態(tài)下的虛擬服裝模型的表面記為_(kāi),將新姿態(tài)下的三維人體模型的表面記為;人體的三維動(dòng)畫(huà)獲得方法有很多,常見(jiàn)的是由美工師逐幀設(shè)置,或者通過(guò)將運(yùn)動(dòng)捕捉設(shè)備捕捉到的人體關(guān)鍵點(diǎn)變化過(guò)程錄制為骨架驅(qū)動(dòng)型動(dòng)畫(huà)文件,讀入到三維人體模型中,即可得到人體的動(dòng)畫(huà)。對(duì)于人體跑動(dòng)而言,可由上述動(dòng)畫(huà)錄制方法獲得25個(gè)不同的跑動(dòng)姿態(tài),對(duì)于本發(fā)明所涉及的姿態(tài)同步而言,可在i/25秒時(shí)取第i個(gè)姿態(tài)即為上述三維人體模型的新姿態(tài)。步驟3.3、對(duì)于(PnewlP^e^—_},尋找三維人體模型上的一點(diǎn)Q固,滿足<formula>formulaseeoriginaldocumentpage10</formula>其中,m為&^上的三角形頂點(diǎn)總數(shù),艮卩Q^為^—^上距離P^最近的點(diǎn);當(dāng)P^位于&內(nèi)部,即發(fā)生穿透時(shí),將P^沿著靠近11的方向旋轉(zhuǎn)90度,BP:令i'為旋轉(zhuǎn)矩陣<formula>formulaseeoriginaldocumentpage10</formula>其中x,y,z分別為旋轉(zhuǎn)向量d的x,y,z分量坐標(biāo)值;如圖4所示,為穿透補(bǔ)償示意步驟3.4、將虛擬服裝模型進(jìn)行懸垂以及平滑處理計(jì)算在已知時(shí)間^下位置x(/。)和速度x(/。)時(shí),求解時(shí)刻r。+時(shí)的位置x(f。+和速度x(f。+A/),Af為時(shí)間步長(zhǎng),即求解下述微分方程<formula>formulaseeoriginaldocumentpage10</formula>其中,M為服裝模型質(zhì)量矩陣,f為服裝模型的合力矩陣,x。=x(0,v。=v(/。),位移增量Ax=x(f。+和速度增量Av=V(/Q+A/)-v(。),對(duì)上述微分方程采用一階向后歐拉積分、AvJ(M,f(x。+Ax,v。+Av乂對(duì)于式(8)所給出的非線性方程,將f以泰勒級(jí)數(shù)方式展開(kāi)得到其一階近似f(x0+Ax,v。+Av)=f0+:Ax+7Av將(9)式代入(8)式整理可得I—ArfVI1--A尸M—、5v5xAv=AM—15x(9)(10)(11)Ax=AZ(v。+Av)其中,I為單位陣,采用共軛梯度法首先求解式(10)中的f。,5f/5x以及5f/av,從而得到Av,然后更新x和v,即可得到服裝在時(shí)刻/。+A時(shí)的位置和速度,這個(gè)位置即為該邊上兩個(gè)頂點(diǎn)經(jīng)懸垂處理后的位置,在求解過(guò)程中,初始速度v。為0,初始位置x。即為步驟3.3完成后的位置;若在一個(gè)時(shí)間步長(zhǎng)A^過(guò)后,Ix。("A0-x,0+A0l〉flx。0)—Xl(0l,&=1%,^為允許應(yīng)變的閾值,釆用速度過(guò)濾的方法進(jìn)行糾正如下在時(shí)刻t時(shí),用歐拉積分預(yù)先計(jì)算At后三角形頂點(diǎn)的位置x0("AO=x0(/)+v0(12)x1("AZ)=x1(0+v,A,(13)其中x。和Xi分別是三角形一條邊上兩個(gè)頂點(diǎn)的位置,在時(shí)刻t+At時(shí),如果應(yīng)變g=|x0("Af)-Xl("A0l〉1%,則這兩個(gè)三角形頂點(diǎn)的速度在t時(shí)刻應(yīng)被調(diào)節(jié)如下|x|v,)=+(14)v「(0=[x「(,+-x!(/)]/(15)其中x「(,+A/)和xr^+A)是滿足^=1%時(shí)的新位置,這個(gè)位置即為該邊上兩個(gè)頂點(diǎn)經(jīng)平滑處理后的位置,+A,)=x0(/)+,W':,(1±,K(/)-x洲Xi(0—x。(0(l土gj,其中的±在過(guò)度伸長(zhǎng)時(shí)取+,過(guò)度壓縮時(shí)取一,W)-x。(,)1如圖5所示,為懸垂與平滑示意圖。如圖6所示,為姿態(tài)同步側(cè)面效果圖;圖7為姿態(tài)同步正面效果圖;圖8為姿態(tài)同步背面效果圖。當(dāng)人體的姿態(tài)改變時(shí),服裝的姿態(tài)實(shí)時(shí)地隨之改變,從而實(shí)現(xiàn)各種著裝姿態(tài)下的人-衣姿態(tài)同步。權(quán)利要求1、一種三維虛擬服裝快速姿態(tài)同步方法,其特征在于,具體步驟為第一步分別建立由三角形集合構(gòu)成的三維人體模型以及虛擬服裝模型,虛擬服裝模型設(shè)于三維人體模型外側(cè),三維人體模型的三角形的密度為10000個(gè)/人,虛擬服裝模型的三角形的密度為3000-4000個(gè)/件;第二步第一步建立的虛擬服裝模型中每個(gè)三角形的頂點(diǎn)為一個(gè)質(zhì)點(diǎn),三角形的三個(gè)邊代表一根非線性彈簧,其中第i個(gè)頂點(diǎn)Pi的受力方程為<mathsid="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>∂</mo><mi>C</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mrow><mo>∂</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>∂</mo><mi>C</mi><mrow><mo>(</mo><mi>x</mi><mo>)</mo></mrow></mrow><mrow><mo>∂</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個(gè)頂點(diǎn)Pi所受內(nèi)力的合力;fi和di分別為作用在第i個(gè)頂點(diǎn)Pi上的彈性力和粘性力;i=0,1,2,…n;n為三角形的頂點(diǎn)總數(shù);k為彈簧的虎克常數(shù);kd為彈簧的粘性系數(shù);C(x)為與變形能相關(guān)的條件函數(shù),C(x)=|x|-L;x為彈簧的瞬時(shí)長(zhǎng)度;L為彈簧的原長(zhǎng);第三步姿態(tài)同步步驟3.1、以Sb表示三維人體模型的表面,以Sg表示虛擬服裝模型的表面,計(jì)算在默認(rèn)姿勢(shì)下Sg與三維人體模型間的最短距離矢量集{D},即對(duì)于{P|P∈Sg},找出三維人體模型上的一點(diǎn)Q,滿足<mathsid="math0002"num="0002"><math><![CDATA[<mrow><mo>{</mo><mi>Q</mi><mo>|</mo><mi>Q</mi><mo>∈</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為三維人體模型的三角形頂點(diǎn)總數(shù),即Q點(diǎn)為Sb上到P點(diǎn)距離最近的點(diǎn);步驟3.2、獲得三維人體模型的動(dòng)畫(huà),將動(dòng)畫(huà)按照每秒25幀的速度播放,對(duì)于每個(gè)三維人體模型的新姿態(tài),計(jì)算Sb上的頂點(diǎn)的初步同步位置Pnew如下Pnew=Q′+R·|PQ|(3)其中Q′是Q點(diǎn)在新姿態(tài)下的位置,R是旋轉(zhuǎn)矩陣,代表Q點(diǎn)的法向從nold到nnew的旋轉(zhuǎn),計(jì)算如下令旋轉(zhuǎn)角θ=arccos(nold·nnew),r=nold×nnew,則<mathsid="math0003"num="0003"><math><![CDATA[<mrow><mi>R</mi><mo>=</mo><mfencedopen='['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分別為旋轉(zhuǎn)向量r的x,y,z分量坐標(biāo)值,此時(shí)新姿態(tài)下的虛擬服裝模型的表面記為Sg-new,將新姿態(tài)下的三維人體模型的表面記為Sb-new;步驟3.3、對(duì)于{Pnew|Pnew∈Sg-new},尋找三維人體模型上的一點(diǎn)Qnew,滿足<mathsid="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>∈</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上的三角形頂點(diǎn)總數(shù),即Qnew為Sb-new上距離Pnew最近的點(diǎn);當(dāng)Pnew位于Sb內(nèi)部,即發(fā)生穿透時(shí),將Pnew沿著靠近n的方向旋轉(zhuǎn)90度,即令<mathsid="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>×</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>×</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′為旋轉(zhuǎn)矩陣<mathsid="math0006"num="0006"><math><![CDATA[<mrow><msup><mi>R</mi><mo>′</mo></msup><mo>=</mo><mfencedopen='['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分別為旋轉(zhuǎn)向量d的x,y,z分量坐標(biāo)值;步驟3.4、將虛擬服裝模型進(jìn)行懸垂以及平滑處理計(jì)算在已知時(shí)間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"/>時(shí),求解時(shí)刻t0+Δt時(shí)的位置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為時(shí)間步長(zhǎng),即求解下述微分方程<mathsid="math0007"num="0007"><math><![CDATA[<mrow><mfrac><mi>d</mi><mi>dt</mi></mfrac><mfencedopen='('close=')'><mtable><mtr><mtd><mi>x</mi></mtd></mtr><mtr><mtd><mo>·</mo></mtd></mtr><mtr><mtd><mi>x</mi></mtd></mtr></mtable></mfenced><mo>=</mo><mfrac><mi>d</mi><mi>dt</mi></mfrac><mfencedopen='('close=')'><mtable><mtr><mtd><mi>x</mi></mtd></mtr><mtr><mtd><mi>v</mi></mtd></mtr></mtable></mfenced><mo>=</mo><mfencedopen='('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><mo>-</mo><mrow><mo>(</mo><mn>7</mn><mo>)</mo></mrow></mrow>]]></math></maths>其中,M為服裝模型質(zhì)量矩陣,f為服裝模型的合力矩陣,x0=x(t0),v0=v(t0),位移增量Δx=x(t0+Δt)和速度增量Δv=v(t0+Δt)-v(t0),對(duì)上述微分方程采用一階向后歐拉積分<mathsid="math0008"num="0008"><math><![CDATA[<mrow><mfencedopen='('close=')'><mtable><mtr><mtd><mi>Δx</mi></mtd></mtr><mtr><mtd><mi>Δv</mi></mtd></mtr></mtable></mfenced><mo>=</mo><mi>Δt</mi><mfencedopen='('close=')'><mtable><mtr><mtd><msub><mi>v</mi><mn>0</mn></msub><mo>+</mo><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><msub><mi>x</mi><mn>0</mn></msub><mo>+</mo><mi>Δx</mi><mo>,</mo><msub><mi>v</mi><mn>0</mn></msub><mo>+</mo><mi>Δv</mi><mo>)</mo></mrow></mtd></mtr></mtable></mfenced><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>8</mn><mo>)</mo></mrow></mrow>]]></math></maths>對(duì)于式(8)所給出的非線性方程,將f以泰勒級(jí)數(shù)方式展開(kāi)得到其一階近似<mathsid="math0009"num="0009"><math><![CDATA[<mrow><mi>f</mi><mrow><mo>(</mo><msub><mi>x</mi><mn>0</mn></msub><mo>+</mo><mi>Δx</mi><mo>,</mo><msub><mi>v</mi><mn>0</mn></msub><mo>+</mo><mi>Δv</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>f</mi><mn>0</mn></msub><mo>+</mo><mfrac><mrow><mo>∂</mo><mi>f</mi></mrow><mrow><mo>∂</mo><mi>x</mi></mrow></mfrac><mi>Δx</mi><mo>+</mo><mfrac><mrow><mo>∂</mo><mi>f</mi></mrow><mrow><mo>∂</mo><mi>v</mi></mrow></mfrac><mi>Δv</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>9</mn><mo>)</mo></mrow></mrow>]]></math></maths>將(9)式代入(8)式整理可得<mathsid="math0010"num="0010"><math><![CDATA[<mrow><mrow><mo>(</mo><mi>I</mi><mo>-</mo><mi>Δt</mi><msup><mi>M</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mfrac><mrow><mo>∂</mo><mi>f</mi></mrow><mrow><mo>∂</mo><mi>v</mi></mrow></mfrac><mo>-</mo><mi>Δ</mi><msup><mi>t</mi><mn>2</mn></msup><msup><mi>M</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mfrac><mrow><mo>∂</mo><mi>f</mi></mrow><mrow><mo>∂</mo><mi>x</mi></mrow></mfrac><mo>)</mo></mrow><mi>Δv</mi><mo>=</mo><mi>Δt</mi><msup><mi>M</mi><mrow><mo>-</mo><mn>1</mn></mrow></msup><mrow><mo>(</mo><msub><mi>f</mi><mn>0</mn></msub><mo>+</mo><mi>Δt</mi><mfrac><mrow><mo>∂</mo><mi>f</mi></mrow><mrow><mo>∂</mo><mi>x</mi></mrow></mfrac><msub><mi>v</mi><mn>0</mn></msub><mo>)</mo></mrow><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>10</mn><mo>)</mo></mrow></mrow>]]></math></maths>Δx=Δt(v0+Δv)(11)其中,I為單位陣,采用共軛梯度法首先求解式(10)中的f0,id="icf0013"file="A2009101945370004C3.tif"wi="9"he="3"top="83"left="146"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/>以及id="icf0014"file="A2009101945370004C4.tif"wi="11"he="3"top="83"left="166"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/>從而得到Δv,然后更新x和v,即可得到服裝在時(shí)刻t0+Δt時(shí)的位置和速度,這個(gè)位置即為該邊上兩個(gè)頂點(diǎn)經(jīng)懸垂處理后的位置,在求解過(guò)程中,初始速度v0為0,初始位置x0即為步驟3.3完成后的位置;若在一個(gè)時(shí)間步長(zhǎng)Δt過(guò)后,|x0(t+Δt)-x1(t+Δt)|>ε|x0(t)-x1(t)|,εa=1%,εa為允許應(yīng)變的閾值,采用速度過(guò)濾的方法進(jìn)行糾正如下在時(shí)刻t時(shí),用歐拉積分預(yù)先計(jì)算Δt后三角形頂點(diǎn)的位置x0(t+Δt)=x0(t)+v0(t)·Δt(12)x1(t+Δt)=x1(t)+v1(t)·Δt(13)其中x0和x1分別是三角形一條邊上兩個(gè)頂點(diǎn)的位置,在時(shí)刻t+Δt時(shí),如果應(yīng)變<mathsid="math0011"num="0011"><math><![CDATA[<mrow><mi>ϵ</mi><mo>=</mo><mfrac><mrow><mo>|</mo><msub><mi>x</mi><mn>0</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>+</mo><mi>Δt</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>x</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>+</mo><mi>Δt</mi><mo>)</mo></mrow><mo>|</mo></mrow><mrow><mo>|</mo><msub><mi>x</mi><mn>0</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>x</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>|</mo></mrow></mfrac><mo>></mo><mn>1</mn><mo>%</mo><mo>,</mo></mrow>]]></math>id="icf0015"file="A2009101945370004C5.tif"wi="55"he="10"top="185"left="22"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>則這兩個(gè)三角形頂點(diǎn)的速度在t時(shí)刻應(yīng)被調(diào)節(jié)如下<mathsid="math0012"num="0012"><math><![CDATA[<mrow><msubsup><mi>v</mi><mn>0</mn><mi>new</mi></msubsup><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><mo>[</mo><msubsup><mi>x</mi><mn>0</mn><mi>new</mi></msubsup><mrow><mo>(</mo><mi>t</mi><mo>+</mo><mi>Δt</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>x</mi><mn>0</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>]</mo><mo>/</mo><mi>Δt</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>14</mn><mo>)</mo></mrow></mrow>]]></math></maths><mathsid="math0013"num="0013"><math><![CDATA[<mrow><msubsup><mi>v</mi><mn>1</mn><mi>new</mi></msubsup><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>=</mo><mo>[</mo><msubsup><mi>x</mi><mn>1</mn><mi>new</mi></msubsup><mrow><mo>(</mo><mi>t</mi><mo>+</mo><mi>Δt</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>x</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>]</mo><mo>/</mo><mi>Δt</mi><mo>-</mo><mo>-</mo><mo>-</mo><mrow><mo>(</mo><mn>15</mn><mo>)</mo></mrow></mrow>]]></math></maths>其中x0new(t+Δt)和x1new(t+Δt)是滿足ε=1%時(shí)的新位置,這個(gè)位置即為該邊上兩個(gè)頂點(diǎn)經(jīng)平滑處理后的位置,<mathsid="math0014"num="0014"><math><![CDATA[<mrow><msubsup><mi>x</mi><mn>0</mn><mi>new</mi></msubsup><mrow><mo>(</mo><mi>t</mi><mo>+</mo><mi>Δt</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>x</mi><mn>0</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>+</mo><mfrac><mrow><msub><mi>x</mi><mn>0</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>x</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mrow><mrow><mo>|</mo><msub><mi>x</mi><mn>0</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>x</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>|</mo></mrow></mfrac><mrow><mo>(</mo><mn>1</mn><mo>±</mo><msub><mi>ϵ</mi><mi>s</mi></msub><mo>)</mo></mrow><mo>,</mo></mrow>]]></math>id="icf0018"file="A2009101945370004C8.tif"wi="75"he="10"top="234"left="110"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths><mathsid="math0015"num="0015"><math><![CDATA[<mrow><msubsup><mi>x</mi><mn>1</mn><mi>new</mi></msubsup><mrow><mo>(</mo><mi>t</mi><mo>+</mo><mi>Δt</mi><mo>)</mo></mrow><mo>=</mo><msub><mi>x</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>+</mo><mfrac><mrow><msub><mi>x</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>x</mi><mn>0</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow></mrow><mrow><mo>|</mo><msub><mi>x</mi><mn>1</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>-</mo><msub><mi>x</mi><mn>0</mn></msub><mrow><mo>(</mo><mi>t</mi><mo>)</mo></mrow><mo>|</mo></mrow></mfrac><mrow><mo>(</mo><mn>1</mn><mo>±</mo><msub><mi>ϵ</mi><mi>s</mi></msub><mo>)</mo></mrow><mo>,</mo></mrow>]]></math>id="icf0019"file="A2009101945370004C9.tif"wi="72"he="10"top="251"left="22"img-content="drawing"img-format="tif"orientation="portrait"inline="yes"/></maths>其中的±在過(guò)度伸長(zhǎng)時(shí)取+,過(guò)度壓縮時(shí)取-。全文摘要本發(fā)明提供了一種三維虛擬服裝快速姿態(tài)同步方法,其特征在于,具體步驟為第一步建立三維人體模型以及虛擬服裝模型,第二步計(jì)算虛擬服裝模型的受力情況;第三步姿態(tài)同步。本發(fā)明的優(yōu)點(diǎn)是當(dāng)人體的姿態(tài)改變時(shí),服裝的姿態(tài)實(shí)時(shí)地隨之改變,從而實(shí)現(xiàn)各種著裝姿態(tài)下的人-衣姿態(tài)同步。文檔編號(hào)G06T15/70GK101630417SQ20091019453公開(kāi)日2010年1月20日申請(qǐng)日期2009年8月25日優(yōu)先權(quán)日2009年8月25日發(fā)明者鐘躍崎申請(qǐng)人:東華大學(xué)