一種計算機(jī)中虛擬試衣服裝模型自動對齊及尺寸判斷方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明屬于計算機(jī)圖形學(xué)技術(shù)領(lǐng)域,尤其涉及到一種計算機(jī)中虛擬試衣服裝模型 自動對齊及尺寸判斷方法。
【背景技術(shù)】
[0002] 近幾年,虛擬試衣已經(jīng)成了虛擬現(xiàn)實領(lǐng)域的熱點問題,在網(wǎng)絡(luò)購物越來越流行的 今天,虛擬試衣系統(tǒng)可以為消費者提供更加便捷的服務(wù),消費者無需不耐其煩地取、脫、換、 穿一件件服裝,更無需長時間排隊。
[0003] 在虛擬試衣技術(shù)中,一個重要的環(huán)節(jié)就是試穿,在該過程中如何進(jìn)行人體模型和 服裝模型的對齊則是第一步。在目前的國內(nèi)外研究情況中,大多都是采用二維服裝裁剪 片縫合在三維人體模型上,形成三維服裝初始形態(tài),服裝的構(gòu)建過程為,先自動生成服裝裁 片,再對裁片進(jìn)行修正,最后對裁片進(jìn)行縫合。然而,目前也有很多精美的3D服裝模型(如 文件后綴為〇bj、max、3ds、ma的文件),3D服裝模型相較于二維服裝裁剪片而言更加形象, 并且給人以直觀的感受。而在國內(nèi)外的虛擬試衣中使用3D服裝模型進(jìn)行試穿的研究尚不 多。
[0004] 文南犬 I :Zhong Y, Xu B. Three-dimensional Garment Dressing Simulation [J]. Textile Research Journal, 2009, 79 (9) :792-803.中使用的3D試穿方法分為三個主要階 段:初始定位、包裹和懸垂,首先將各個衣片放入三維空間中,虛擬人體周圍,然后將衣片包 裹住人體,包括了衣袖的自卷處理,通過自適應(yīng)縫合力將各個衣片進(jìn)行縫合,施加重力、風(fēng) 力等外力,觀察服裝的穿著效果。這種方法存在一個缺陷,對應(yīng)的縫合點并不只是受到縫合 力的作用,它們還受到各自關(guān)聯(lián)的彈簧的彈力作用,因此它們在縫合過程中的運動軌跡不 可能在同一條直線上。
[0005] 文南犬2:Gro0 C, Fuhrmann A, Luckas V. Automatic pre-positioning of virtual clothing[C]//Proceedings of the 19th spring conference on Computer graphics. ACM, 2003:99-108.中提出了自動化的預(yù)置位方法來實現(xiàn)虛擬試衣,使用CAD服裝數(shù)據(jù),基 于幾何進(jìn)行預(yù)定位,基于物理進(jìn)行最終定位,從而達(dá)到給人體穿衣的效果。這種試衣方法雖 然達(dá)到了較好的試衣效果,但是需要使用CAD系統(tǒng)提供的服裝數(shù)據(jù),上向量和特征點的位 置需要手動插入,但是不幸的是,現(xiàn)有的CAD系統(tǒng)并不能直接提供文獻(xiàn)中所需要的特征點。
[0006] 文獻(xiàn)3 :陳燕,薛原,楊若瑜.任意衣物和人體的3D試穿實時仿真[J].計算機(jī)應(yīng) 用,2014, 34(1) :124-128. DOI :doi: 10. 11772/j. issn. 1001-9081. 2014. 01. 0124.中服裝 模型為3D服裝模型,使用的試衣方法是先通過服裝y坐標(biāo)值最大的點和后腦勺上高度合適 的點進(jìn)行全局位置的對齊,再對局部姿態(tài)進(jìn)行調(diào)整,通過計算服裝模型和人體模型的夾角, 將服裝繞X軸旋轉(zhuǎn)達(dá)到合適的位置。但是在這里的對齊方法中并沒有實現(xiàn)自動對齊,這里 的位移向量、旋轉(zhuǎn)角度等等不能適應(yīng)于所有的服裝模型,針對不同的模型,在進(jìn)行全局位置 對齊和局部姿態(tài)調(diào)整后還要添加微調(diào)參數(shù),通過不斷地實驗,查找到微調(diào)參數(shù)的合適的值。 因此這樣的方法并不能達(dá)到自動對齊的效果。
[0007] 綜上,現(xiàn)有方法的缺點主要有:使用CAD服裝數(shù)據(jù),將衣片進(jìn)行位置預(yù)置,需要較 多的CAD服裝數(shù)據(jù),但是某些特征點無法由CAD系統(tǒng)直接提供,需要手動插入,達(dá)不到"自 動"的效果,在使用縫合力進(jìn)行縫合時,容易由于縫合點處其他作用力的影響,縫合點的運 動軌跡出現(xiàn)偏差;使用3D服裝模型,在進(jìn)行對齊時對不同的服裝模型需要使用多次實驗查 找合適微調(diào)參數(shù)的方式來進(jìn)行對齊,不具有普遍性,同時也達(dá)不到"自動"的效果。另外在 目前的研究中,鮮有根據(jù)材質(zhì)等自動判斷某大小的服裝能否穿上,因此本發(fā)明中提供的方 法具有一定的創(chuàng)新性。
【發(fā)明內(nèi)容】
[0008] 發(fā)明目的:本發(fā)明的目的是針對以上技術(shù)問題,提供一種計算機(jī)中適用于3D服裝 模型的服裝模型自動對齊并進(jìn)行尺寸判斷的方法。
[0009] 為了解決上述技術(shù)問題,本發(fā)明公開了一種計算機(jī)中虛擬試衣服裝模型自動對齊 及尺寸判斷的方法,包括如下步驟:
[0010] 步驟1,載入服裝模型,如讀取計算機(jī)某一目錄下的衣服模型文件"男士短袖襯 衫.3ds",判斷衣服模型的類型,若為上衣模型則將服裝模型的類型標(biāo)記為0,若為褲子模 型則將服裝模型的類型標(biāo)記為1,讀取服裝模型的信息,并為其構(gòu)造鄰接表,所述服裝模型 為三維服裝模型,根據(jù)已知的服裝模型的類型,若為上衣模型,則執(zhí)行步驟2,若為褲子模 型,則執(zhí)行步驟3 ;所述服裝模型的信息包括頂點信息和三角面片信息,所述人體模型為根 據(jù)人體特征點和特征尺寸獲得型值點,使用插值樣條曲面對人體各部位建立曲面模型并進(jìn) 行光順拼接得到的人體網(wǎng)格模型;
[0011] 步驟2,根據(jù)步驟1的人體模型和上衣模型,進(jìn)行對齊操作,完成上衣模型和人體 模型在三維空間上的位置預(yù)處理;
[0012] 步驟3,根據(jù)步驟1的人體模型和褲子模型,進(jìn)行對齊操作,完成褲子模型和人體 模型在三維空間上的位置預(yù)處理;
[0013] 步驟4,位置預(yù)處理后,對服裝模型和人體模型進(jìn)行碰撞檢測和碰撞處理;
[0014] 步驟5,根據(jù)服裝材質(zhì)以及服裝的尺寸大小來判斷用戶是否能夠穿上服裝,在步驟 4中,若根據(jù)服裝材質(zhì)的各項參數(shù)計算服裝模型質(zhì)點位置時,服裝模型質(zhì)點位置仍然在人體 模型內(nèi),即服裝模型的質(zhì)點無法通過碰撞處理將其拉伸到人體模型外,則標(biāo)記服裝模型無 法被人體模型穿上,否則標(biāo)記為服裝能夠穿上;
[0015] 步驟6,給出判斷用戶是否能夠穿上服裝的結(jié)果,若穿不上,則給用戶反饋,若能穿 上則進(jìn)行動態(tài)仿真并顯示試穿效果。
[0016] 其中,步驟2包括如下步驟:
[0017] 步驟2-1,遍歷上衣模型鄰接表中的頂點坐標(biāo),得到上衣模型的三維空間范圍,根 據(jù)上衣模型的三維空間范圍,建立上衣模型AABB包圍盒(Axis Aligned Bounding Box,軸 對齊包圍盒);
[0018] 步驟2-2,設(shè)定八叉樹的深度,以上衣模型的AABB包圍盒為范圍建立八叉樹,樹節(jié) 點存儲該樹節(jié)點上的頂點個數(shù)和頂點坐標(biāo),使用上衣模型的鄰接表,將上衣模型的頂點放 入八叉樹的樹節(jié)點中;
[0019] 步驟2-3,以人體模型的特征點會陰點作為原點,原點向頭部特征點的方向為y軸 方向,建立右手定則的三維坐標(biāo)系,查找上衣模型的中心軸,實現(xiàn)上衣模型X軸和Z軸方向 上的對齊;
[0020] 步驟2-4,查找上衣模型的肩的位置,將其和人體模型的肩的位置進(jìn)行對齊,實現(xiàn) 上衣模型y軸方向上的對齊;
[0021] 步驟2-5,對服裝模型構(gòu)造質(zhì)點-彈簧模型,通過人體部位標(biāo)記服裝模型對應(yīng)的部 位,確定上衣模型上每個質(zhì)點所屬人體的部位,進(jìn)行標(biāo)記,所述人體部位分為軀干、臀部、右 大腿、左大腿、右小腿、左小腿、右大臂、左大臂、右小臂以及左小臂10個部分,則左大臂所 對應(yīng)的衣服模型的部位即為上衣模型的左側(cè)袖子;
[0022] 步驟2-6,查找到上衣模型的左側(cè)袖子部位,使用袖子上端中心點對上衣位置進(jìn)行 y軸和z軸方向的微調(diào);
[0023] 步驟2-7,根據(jù)胳膊的中心軸和袖子的中心軸計算胳膊旋轉(zhuǎn)后的終止位置坐標(biāo),調(diào) 用人體模型胳膊旋轉(zhuǎn)的函數(shù),使得胳膊的中心軸和袖子的中心軸重合。
[0024] 其中,步驟2-3包括如下步驟:
[0025] 步驟2-3-1,使用步驟2-2中建立的八叉樹查找上衣模型下擺點中X坐標(biāo)值最大的 點hem_x max和X坐標(biāo)值最小的點hem_x min;
[0026] 步驟2-3-2,使用步驟2-2中建立的八叉樹查找上衣模型左右兩邊各自的y坐標(biāo)值 最大的點ymax 1(;ft和點ymax Hght;
[0027] 步驟2-3-3,由步驟2-3-1中得到的點hem_xmax和點hem_x min來計算上衣模型下擺 的中心點bottom,中心點bottom為點hem_xmax和點hem_x min的中間點,由步驟2-3-2中得 到的點ymaxleft和點ymax Hght來計算上衣模型最上方的中心點top,中心點top為點ymax left 和點Ymaxl4ght的中間點,由點top和點bottom構(gòu)成的軸即為上衣模型的中心軸ClothAxis ;
[0028] 步驟2-3-4,將經(jīng)過人體模型的頭部特征點和腰部特征點所在的直線作為人體模 型的中心軸HumanAxis,由步驟2-3-3中得到的上衣模型的中心軸ClothAxis與人體模型的 中心軸HumanAxis進(jìn)行對齊,完成上衣模型在X軸和z軸方向上的對齊。
[0029] 其中,步驟2-4包括如下步驟:
[0030] 步驟2-4-1,使用步驟2-2中建立的八叉樹查找上衣模型中所有X坐標(biāo)值小于點 hem_xmin的X坐標(biāo)值的點,將其中y坐標(biāo)值最大的點作為上衣模型肩部最高點shoulder_ cloth,人體模型的肩部點shoulder_human則是人體模型左大臂和軀干銜接處y坐標(biāo)值最 大的點;
[0031] 步驟2-4-2,使用步驟2-4-1中得到的上衣模型肩部最高點shoulder_cloth和人 體模型的肩部點shoulder_human對上衣模型進(jìn)行在y軸方向上的對齊;
[0032] 步驟2-4-3,根據(jù)經(jīng)驗值對z軸方向的對齊進(jìn)行微調(diào),減少上衣模型頂點的z坐標(biāo) 值,經(jīng)驗值取0. 4,使得微調(diào)后上衣模型z坐標(biāo)值減小0. 4,為之后的對齊計算減少誤差。
[0033] 其中,步驟2-6包括如下步驟:
[0034] 步驟2-6-1,由步驟2-5查找到上衣模型中的左側(cè)袖子部位,由于服裝模型和人體 模型都是左右對稱的,因此只需要計算一側(cè)的袖子和胳膊即可,在計算時選用了左側(cè)袖子 和左側(cè)胳膊,遍歷所有袖子部位的點,查找到y(tǒng)坐標(biāo)值最大的點leftsleeve_yl max和y坐標(biāo) 值最小的點 leftsleeve_y0min;
[0035] 步驟2-6-2,遍