leftsleeve_bottom的z坐標(biāo)值,leftarm_length為左側(cè)大臂的中心軸LeftArmAxis的長(zhǎng) 度即為點(diǎn)leftarm_top和點(diǎn)leftarm_bottom間的距離長(zhǎng)度,leftsleeve_length為左側(cè)袖 子的中心軸LeftSleeveAxis的長(zhǎng)度即為點(diǎn)leftsleeve_top和點(diǎn)leftsleeve_bottom間的 距離長(zhǎng)度,分別通過如下公式計(jì)算:
[0123] 調(diào)用人體模型胳膊旋轉(zhuǎn)的函數(shù)SetArmToNewPosition,使得胳膊的中心軸和袖子 的中心軸重合。函數(shù)SetArmToNewPosition是根據(jù)函數(shù)參數(shù)newPosition來修改人體模型 左右手肘處的特征點(diǎn),從而達(dá)到修改人體模型胳膊位置的目的。
[0124] 其中,步驟3包括如下步驟:
[0125] 步驟3-1,遍歷褲子模型鄰接表中所有點(diǎn),得到褲子模型X軸方向坐標(biāo)值最小 的點(diǎn)trousers_x min,X軸方向坐標(biāo)值最大的點(diǎn)trousers_xmax,y軸方向坐標(biāo)值最大的 點(diǎn)trousers_y max,z軸方向坐標(biāo)值最小的點(diǎn)trousers_zmin,z軸方向坐標(biāo)值最大的點(diǎn) trouser s_zmax 〇
[0126] 步驟3-2,由步驟3-1中查找到的點(diǎn)trousers_xmin和點(diǎn)trousers_x _得到褲子 模型在X軸方向上的中心點(diǎn)trousers_xmiddle,中心點(diǎn)trousers_x middle即為點(diǎn)trousers_ 叉!^和點(diǎn)trousers_xmax的中間點(diǎn),由步驟3-1中查找到的點(diǎn)trousers_z min和點(diǎn)trousers- Zmax得到褲子模型在Z軸方向上的中心點(diǎn)trousers_z middle,中心點(diǎn)trousers_zmiddle即為 點(diǎn)trousers_zmin和點(diǎn)trousers_z _的中間點(diǎn),根據(jù)點(diǎn)trousers_x middle的X坐標(biāo)值和點(diǎn) trousers_zmiddle的z坐標(biāo)值進(jìn)行X軸方向和z軸方向上的對(duì)齊。
[0127] 步驟3-3,使用由步驟3-2中查找到的點(diǎn)trousers_y_^^ y坐標(biāo)值和人體模型的 腰部特征點(diǎn)waist_human的y坐標(biāo)值進(jìn)行對(duì)齊,從而達(dá)到y(tǒng)軸方向上的對(duì)齊。
[0128] 其中,步驟4包括如下步驟:
[0129] 步驟4-1,根據(jù)鄰接表建立服裝質(zhì)點(diǎn)彈簧模型,共包含三種彈簧:結(jié)構(gòu)彈簧、剪切 彈黃和彎曲彈黃;
[0130] 步驟4-2,根據(jù)不同材質(zhì)的服裝對(duì)每種彈簧設(shè)置不同的彈簧參數(shù),如彈性系數(shù)、阻 尼系數(shù)、彈簧最大伸長(zhǎng)率、大彎曲彈簧設(shè)置彈簧原長(zhǎng)等,根據(jù)材質(zhì)不同設(shè)置不同的碰撞響應(yīng) 系數(shù)、靜摩擦系數(shù)和動(dòng)摩擦系數(shù)。例如對(duì)彈簧設(shè)置不同參數(shù),棉質(zhì)服裝的拉伸和剪切彈簧設(shè) 置較大的彈性系數(shù)(200~300)、阻尼系數(shù)(40~60),并對(duì)大彎曲彈簧設(shè)置較大的彈性系 數(shù)(100~150)和阻尼系數(shù)(20~30),以實(shí)現(xiàn)一定硬度的褶皺效果。絲質(zhì)服裝的拉伸和剪 切彈簧設(shè)置較大的彈性系數(shù)(500~600)、較小的阻尼系數(shù)(1~2),彈性服裝的拉伸和剪 切彈簧設(shè)置較小的彈性系數(shù)(30~40)、中等的阻尼系數(shù)(4~10)。拉伸、彎曲和剪切彈簧 設(shè)置彈簧最大伸長(zhǎng)率以避免產(chǎn)生超彈性,棉質(zhì)和絲質(zhì)的最大伸長(zhǎng)率較?。ī? 001~〇. 002), 彈性質(zhì)地的最大伸長(zhǎng)率較大(〇. 05~0. 1),大彎曲彈簧設(shè)置彈簧原長(zhǎng)(0. 9~0. 95)。對(duì)材 質(zhì)設(shè)置不同的碰撞響應(yīng)系數(shù)、靜摩擦系數(shù)和動(dòng)摩擦系數(shù),棉質(zhì)和彈性的摩擦系數(shù)較大(分 別為0. 3和0. 15),絲質(zhì)的摩擦系數(shù)較?。?. 05),棉質(zhì)材質(zhì)密度較大,因此碰撞響應(yīng)系數(shù)較 大(2. 0~4. 0),絲質(zhì)和彈性的碰撞響應(yīng)系數(shù)較?。?. 2~1. 5);
[0131] 步驟4-3,對(duì)服裝模型上的所有質(zhì)點(diǎn)進(jìn)行力的計(jì)算,包括質(zhì)點(diǎn)所受的內(nèi)力和外力, 并進(jìn)行數(shù)值積分計(jì)算,其中外力為重力,內(nèi)力包括彈力F spring和阻尼力Fdanip,彈力Fspring通過 如下公式計(jì)算:
[0133] 其中,ks為拉伸常量,
為彈簧兩端點(diǎn)即兩個(gè)服裝質(zhì)點(diǎn)之間的距離,Lmgin為彈 簧原長(zhǎng),即構(gòu)造彈簧模型時(shí)服裝質(zhì)點(diǎn)間的初始距離,
[0134] 阻尼力Fdanp通過如下公式計(jì)算:
[0136] 其中,kd為阻尼常量,為服裝質(zhì)點(diǎn)速度,
[0137] 由服裝質(zhì)點(diǎn)所受外力和內(nèi)力的的合力Ft和質(zhì)點(diǎn)的質(zhì)量m的比值得到服裝質(zhì)點(diǎn)當(dāng) 前的加速度at:
[0138] at=Ft/m,
[0139] 使用Verlet積分進(jìn)行質(zhì)點(diǎn)位置迭代計(jì)算,對(duì)于服裝模型質(zhì)點(diǎn)在下一個(gè)積分步長(zhǎng) 的位置Sn+1和服裝模型質(zhì)點(diǎn)在上一個(gè)積分步長(zhǎng)的位置S n i,使用泰勒公式:
[0141] 其中,&表示服裝模型質(zhì)點(diǎn)在當(dāng)前積分步長(zhǎng)的位置,At為積分步長(zhǎng),每個(gè)積分步 長(zhǎng)相當(dāng)于仿真中的一幀,〇為泰勒公式的余項(xiàng),公式(1)加上公式(2),變形得到下一時(shí)間步 長(zhǎng)的位置表達(dá)式:
[0142] Sn+1 = 2S n_Sn ^at Δ t2+0 ( Δ t3),
[0143] 上述公式計(jì)算出下一時(shí)間步長(zhǎng)位置,并在積分后進(jìn)行校正;
[0144] 步驟4-4,人體模型和服裝模型進(jìn)行碰撞檢測(cè)和碰撞處理;
[0145] 步驟4-5,根據(jù)服裝模型質(zhì)點(diǎn)當(dāng)前速度和加速度計(jì)算下一時(shí)間步長(zhǎng)速度,通過如下 公式計(jì)算當(dāng)前時(shí)間步長(zhǎng)的速度v n:
[0146] vn= (Sn+1-Snl)/(2At)+0(At2);
[0147] 步驟4-6,修改服裝模型質(zhì)點(diǎn)的位置和速度信息,重復(fù)步驟4-3~步驟4-5,直到當(dāng) 前服裝模型質(zhì)點(diǎn)與人體發(fā)生碰撞則停止對(duì)服裝模型質(zhì)點(diǎn)的積分計(jì)算。
[0148] 其中,步驟4-4包括如下步驟:
[0149] 步驟4-4-1,對(duì)人體的每個(gè)部分建立OBB包圍盒(Oriented Bounding Box,有向包 圍盒),碰撞檢測(cè)過程中,服裝模型質(zhì)點(diǎn)首先與OBB包圍盒進(jìn)行檢測(cè),排除不可能與人體表 面碰撞檢測(cè)的質(zhì)點(diǎn);
[0150] 步驟4-4-2,使用距離場(chǎng)方法對(duì)人體網(wǎng)格點(diǎn)向外擴(kuò)張,產(chǎn)生虛擬的人體模型,得到 擴(kuò)張人體模型,進(jìn)行碰撞檢測(cè)時(shí),只與擴(kuò)張人體模型進(jìn)行碰撞檢測(cè);
[0151] 步驟4-4-3,對(duì)于檢測(cè)為碰撞的服裝模型質(zhì)點(diǎn)P,首先將P投影至所屬人體部位的 中軸,求得其在中軸處的投影點(diǎn)P pi^,反向延長(zhǎng)Pimu和P之間的連線,會(huì)與擴(kuò)張人體模型表 面產(chǎn)生一個(gè)交點(diǎn),該點(diǎn)記為碰撞響應(yīng)點(diǎn)V raspcind,將質(zhì)點(diǎn)的最終位置Ppcisltlcin修改為:
[0153] k是閾值參數(shù),用于彌補(bǔ)計(jì)算過程中的計(jì)算精度缺失,Nnmial是碰撞響應(yīng)點(diǎn)所在二 角面片的單位法向量。
[0154] 本發(fā)明提供了一種計(jì)算機(jī)中虛擬試衣服裝模型自動(dòng)對(duì)齊及尺寸判斷的方法,具體 實(shí)現(xiàn)該技術(shù)方案的方法和途徑很多,以上所述僅是本發(fā)明的優(yōu)選實(shí)施方案,應(yīng)當(dāng)指出,對(duì)于 本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和 潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明的保護(hù)范圍。本實(shí)施例中未明確的各組成部分均可 用現(xiàn)有技術(shù)加以實(shí)現(xiàn)。
【主權(quán)項(xiàng)】
1. 一種計(jì)算機(jī)中虛擬試衣服裝模型自動(dòng)對(duì)齊及尺寸判斷方法,其特征在于,包括以下 步驟: 步驟1,載入服裝模型和人體模型,判斷服裝模型的類型,若為上衣模型則將服裝模型 的類型標(biāo)記為0,若為褲子模型則將服裝模型的類型標(biāo)記為1,讀取服裝模型的信息,并為 其構(gòu)造鄰接表;根據(jù)已知的服裝模型的類型,若為上衣模型,則執(zhí)行步驟2,若為褲子模型, 則執(zhí)行步驟3 ;所述服裝模型為三維服裝模型,服裝模型的信息包括頂點(diǎn)信息和三角面片 信息;所述人體模型為根據(jù)人體特征點(diǎn)和特征尺寸獲得型值點(diǎn),使用插值樣條曲面對(duì)人體 各部位建立曲面模型并進(jìn)行光順拼接得到的人體網(wǎng)格模型; 步驟2,根據(jù)步驟1的人體模型和上衣模型,進(jìn)行對(duì)齊操作,完成上衣模型和人體模型 在三維空間上的位置預(yù)處理; 步驟3,根據(jù)步驟1的人體模型和褲子模型,進(jìn)行對(duì)齊操作,完成褲子模型和人體模型 在三維空間上的位置預(yù)處理; 步驟4,位置預(yù)處理后,對(duì)服裝模型和人體模型進(jìn)行碰撞檢測(cè)和碰撞處理; 步驟5,根據(jù)服裝材質(zhì)以及服裝的尺寸大小來判斷用戶是否能夠穿上服裝,在步驟4 中,若根據(jù)服裝材質(zhì)的各項(xiàng)參數(shù)計(jì)算服裝模型質(zhì)點(diǎn)位置時(shí),服裝模型質(zhì)點(diǎn)位置仍然在人體 模型內(nèi),則標(biāo)記服裝模型無法被人體模型穿上,否則標(biāo)記為服裝能夠穿上; 步驟6,給出判斷用戶是否能夠穿上服裝的結(jié)果,若穿不上,則給用戶反饋,若能穿上則 進(jìn)行動(dòng)態(tài)仿真并顯示試穿效果。2. 如權(quán)利要求1所述的一種計(jì)算機(jī)中虛擬試衣服裝模型自動(dòng)對(duì)齊及尺寸判斷方法,其 特征在于,步驟2包括如下步驟: 步驟2-1,遍歷上衣模型鄰接表中的頂點(diǎn)坐標(biāo),得到上衣模型的三維空間范圍,根據(jù)上 衣模型的三維空間范圍,建立上衣模型AABB包圍盒; 步驟2-2,以上衣模型的AABB包圍盒為范圍建立八叉樹,樹節(jié)點(diǎn)存儲(chǔ)該樹節(jié)點(diǎn)上的頂 點(diǎn)個(gè)數(shù)和頂點(diǎn)坐標(biāo),使用上衣模型的鄰接表,將上衣模型的頂點(diǎn)放入八叉樹的樹節(jié)點(diǎn)中; 步驟2-3,查找上衣模型的中心軸,實(shí)現(xiàn)上衣模型在X軸和z軸方向上的對(duì)齊; 步驟2-4,查找上衣模型的肩的位置,將其和人體模型的肩的位置進(jìn)行對(duì)齊,實(shí)現(xiàn)上衣 模型在y軸方向上的對(duì)齊; 步驟2-5,對(duì)服裝模型構(gòu)造質(zhì)點(diǎn)-彈簧模型,通過人體部位標(biāo)記服裝模型對(duì)應(yīng)的部位, 確定上衣模型上每個(gè)質(zhì)點(diǎn)所屬人體的部位,進(jìn)行標(biāo)記,所述人體部位分為軀干、臀部、右大 腿、左大腿、右小腿、左小腿、右大臂、左大臂、右小臂以及左小臂10個(gè)部分,則左大臂所對(duì) 應(yīng)的衣服模型的部位即為上衣模型的左側(cè)袖子; 步驟2-6,查找到上衣模型的左側(cè)袖子部位,使用袖子上端中心點(diǎn)對(duì)上衣位置進(jìn)行y軸 和z軸方向的微調(diào); 步驟2-7,根據(jù)胳膊的中心軸和袖子的中心軸計(jì)算胳膊旋轉(zhuǎn)后的終止位置坐標(biāo),調(diào)用人 體模型胳膊旋轉(zhuǎn)的函數(shù),使得胳膊的中心軸和袖子的中心軸重合。3. 如權(quán)利要求2所述的一種計(jì)算機(jī)中虛擬試衣服裝模型自動(dòng)對(duì)齊及尺寸判斷方法,其 特征在于,步驟2-3包括如下步驟: 步驟2-3-1,使用步驟2-2中建立的八叉樹查找上衣模型下擺點(diǎn)中X坐標(biāo)值最大的點(diǎn)hem_xmax和X坐標(biāo)值最小的點(diǎn)hem_xmin; 步驟2-3-2,使用步驟2-2中建立的八叉樹查找上衣模型左右兩邊各自的y坐標(biāo)值最大 的點(diǎn)ymaxleft和點(diǎn)ymaxright; 步驟2-3-3,由步