本發(fā)明涉及計(jì)算機(jī)輔助服裝造型
技術(shù)領(lǐng)域:
,具體而言,涉及一種三維服裝與人體模型的碰撞檢測(cè)方法及裝置。
背景技術(shù):
:基于虛擬現(xiàn)實(shí)技術(shù)的快速發(fā)展,人們迫切希望能對(duì)現(xiàn)實(shí)世界進(jìn)行真實(shí)模擬。對(duì)于目前的網(wǎng)上服裝消費(fèi)者來說,他們不僅想要看到服裝穿在模特身上的標(biāo)準(zhǔn)樣式,更希望看到服裝穿在自己身上的真實(shí)效果,從而針對(duì)性的選擇服裝的款式、型號(hào)、色彩搭配、整體造型。目前,基于計(jì)算機(jī)輔助服裝造型技術(shù),它是將服裝穿在利用計(jì)算機(jī)軟件事先做好的模特上的,具體包括:獲取三維服裝版片與三維人體模型,然后將三維服裝版片通過手動(dòng)方式移動(dòng)到三維人體模型上,最終通過縫合技術(shù)將服裝展示在三維人體模型上。但是,通過上述手動(dòng)方法實(shí)現(xiàn)的三維服裝版片與三維人體模型間的匹配過程中,因?yàn)槭謩?dòng)操作存在誤差,所以服裝展示在三維人體模型上的效果不精確。技術(shù)實(shí)現(xiàn)要素:有鑒于此,本發(fā)明實(shí)施例的目的在于提供一種三維服裝與人體模型的碰撞檢測(cè)方法及裝置,以模擬布料與人體的對(duì)碰撞效果,得到服裝在人體模型上的穿衣效果。第一方面,本發(fā)明實(shí)施例提供了一種三維服裝與人體模型的碰撞檢測(cè)方法,所述方法包括:獲取待展示服裝對(duì)應(yīng)的三維服裝版片及三維人體模型;所述三維服裝版片包括多個(gè)三角形,所述三角形包括多個(gè)公共頂點(diǎn)和非公共頂點(diǎn);設(shè)置所述三維服裝版片中各個(gè)離散網(wǎng)格點(diǎn)的碰撞參數(shù),建立所述三維服裝版片對(duì)應(yīng)的質(zhì)點(diǎn)彈簧模型;所述碰撞參數(shù)至少包括:質(zhì)量、彈性力和阻力;所述質(zhì)點(diǎn)彈簧模型包括質(zhì)點(diǎn)、拉伸剪切彈簧和彎曲彈簧,分別對(duì)應(yīng)所述三維服裝版片的公共頂點(diǎn)、三角形邊和兩個(gè)相鄰三角形非公共頂點(diǎn)的連接線段;所述離散網(wǎng)格點(diǎn)包括所述公共頂點(diǎn)和非公共頂點(diǎn);在所述質(zhì)點(diǎn)彈簧模型移動(dòng)到與所述三維人體模型匹配的碰撞位置時(shí),根據(jù)包圍盒樹算法對(duì)所述質(zhì)點(diǎn)彈簧模型和所述三維人體模型進(jìn)行碰撞檢測(cè),以確定所述三維服裝版片是否真實(shí)貼合到所述三維人體模型上;其中,所述三維人體模型由多個(gè)三角面組成。結(jié)合第一方面,本發(fā)明實(shí)施例提供了第一方面的第一種可能的實(shí)施方式,其中,所述獲取待展示服裝對(duì)應(yīng)的三維服裝版片,包括:獲取待展示服裝對(duì)應(yīng)的多個(gè)二維服裝版片;建立各個(gè)所述二維服裝版片的第一外包圍盒;其中,所述第一外包圍盒包括根據(jù)預(yù)設(shè)密度閾值生成的均勻的離散網(wǎng)格點(diǎn);通過三角形剖分方法對(duì)所述離散網(wǎng)格點(diǎn)進(jìn)行剖分處理,得到三角面化的三維服裝版片。結(jié)合第一方面,本發(fā)明實(shí)施例提供了第一方面的第二種可能的實(shí)施方式,其中,所述根據(jù)包圍盒樹算法對(duì)所述質(zhì)點(diǎn)彈簧模型和所述三維人體模型進(jìn)行碰撞檢測(cè),包括:建立所述三維人體模型的第二外包圍盒;確定所述第二外包圍盒與所述質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的初始碰撞位置;根據(jù)所述初始碰撞位置,計(jì)算所述第二外包圍盒與所述質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的精確碰撞點(diǎn);根據(jù)計(jì)算得到的所述精確碰撞點(diǎn),進(jìn)行所述第二外包圍盒與所述質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的碰撞檢測(cè)。結(jié)合第一方面的第二種可能的實(shí)施方式,本發(fā)明實(shí)施例提供了第一方面的第三種可能的實(shí)施方式,其中,所述建立所述三維人體模型的第二外包圍盒,包括:通過三角形標(biāo)記分組方法對(duì)所述三維人體模型的三角面進(jìn)行標(biāo)記分組處理,得到標(biāo)記分組后的三角面化的三維人體模型;按照以下公式計(jì)算網(wǎng)格尺寸:其中S代表網(wǎng)格尺寸,Pmax代表所述三維人體模型的三角面在空間上x、y、z方向上的極大值,Pmin代表所述三維人體模型的三角面在空間上x、y、z方向上的極小值;根據(jù)計(jì)算得到的網(wǎng)格尺寸和所述質(zhì)點(diǎn)彈簧模型的三角面的x、y、z方向的哈希表關(guān)鍵字,計(jì)算哈希表;根據(jù)所述哈希表,建立所述三維人體模型的第二外包圍盒。結(jié)合第一方面的第三種可能的實(shí)施方式,本發(fā)明實(shí)施例提供了第一方面的第四種可能的實(shí)施方式,其中,所述根據(jù)所述初始碰撞位置,計(jì)算所述第二外包圍盒與所述質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的精確碰撞點(diǎn),包括:根據(jù)公式計(jì)算所述第二外包圍盒與所述質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的精確碰撞點(diǎn);其中,X代表質(zhì)點(diǎn)位置,Δx代表上一時(shí)刻質(zhì)點(diǎn)和本次質(zhì)點(diǎn)位置的矢量差,Δt代表時(shí)間變化,F(xiàn)代表質(zhì)點(diǎn)受到的力,M代表質(zhì)點(diǎn)質(zhì)量。結(jié)合第一方面的第四種可能的實(shí)施方式,本發(fā)明實(shí)施例提供了第一方面的第五種可能的實(shí)施方式,其中,所述根據(jù)計(jì)算得到的所述精確碰撞點(diǎn),進(jìn)行所述第二外包圍盒與所述質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的碰撞檢測(cè),包括:根據(jù)公式檢測(cè)所述質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)和所述三維人體模型的第二外包圍盒的平面是否發(fā)生碰撞;其中,X表示質(zhì)點(diǎn)的位置,V表示質(zhì)點(diǎn)的速度,P表示平面上的一點(diǎn),N代表平面的法向量;ε表示布料的厚度,(X-P)*N<ε表示布料和平面發(fā)生了接觸;N*V<0表示粒子像平面方向運(yùn)動(dòng);當(dāng)檢測(cè)到所述質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)和所述三維人體模型的平面接觸且,所述質(zhì)點(diǎn)向平面方向運(yùn)動(dòng),判定所述質(zhì)點(diǎn)和所述平面發(fā)生碰撞。結(jié)合第一方面的第四種可能的實(shí)施方式,本發(fā)明實(shí)施例提供了第一方面的第六種可能的實(shí)施方式,其中,所述根據(jù)計(jì)算得到的所述精確碰撞點(diǎn),進(jìn)行所述第二外包圍盒與所述質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的碰撞檢測(cè),包括:判斷當(dāng)前時(shí)刻的質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)位置和下一時(shí)間的所述質(zhì)點(diǎn)位置形成的向量和所述第二外包圍盒是否相交;若相交,則所述質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)和所述三維人體模型發(fā)生碰撞。第二方面,本發(fā)明實(shí)施例提供了一種三維服裝與人體模型的碰撞檢測(cè)裝置,所述碰撞檢測(cè)裝置包括:獲取模塊,用于獲取待展示服裝對(duì)應(yīng)的三維服裝版片及三維人體模型;所述三維服裝版片為三角形,所述三角形包括多個(gè)公共頂點(diǎn)和非公共頂點(diǎn);建立模塊,用于設(shè)置所述三維服裝版片中各個(gè)離散網(wǎng)格點(diǎn)的碰撞參數(shù),建立所述三維服裝版片對(duì)應(yīng)的質(zhì)點(diǎn)彈簧模型;所述碰撞參數(shù)至少包括:質(zhì)量、彈性力和阻力;所述質(zhì)點(diǎn)彈簧模型包括質(zhì)點(diǎn)、拉伸剪切彈簧和彎曲彈簧,分別對(duì)應(yīng)所述三維服裝版片的公共頂點(diǎn)、三角形邊和兩個(gè)相鄰三角形非公共頂點(diǎn)的連接線段;所述離散網(wǎng)格點(diǎn)包括所述公共頂點(diǎn)和非公共頂點(diǎn);碰撞檢測(cè)模塊,用于在所述質(zhì)點(diǎn)彈簧模型移動(dòng)到與所述三維人體模型匹配的碰撞位置時(shí),根據(jù)包圍盒樹算法對(duì)所述質(zhì)點(diǎn)彈簧模型和所述三維人體模型進(jìn)行碰撞檢測(cè),以確定所述三維服裝版片是否真實(shí)貼合到所述三維人體模型上。結(jié)合第二方面,本發(fā)明實(shí)施例提供了第二方面的第一種可能的實(shí)施方式,其中,所述獲取模塊,包括:獲取單元,用于獲取待展示服裝對(duì)應(yīng)的多個(gè)二維服裝版片;第一建立單元,用于建立各個(gè)所述二維服裝版片的第一外包圍盒;其中,所述第一外包圍盒包括根據(jù)預(yù)設(shè)密度閾值生成的均勻的離散網(wǎng)格點(diǎn);剖分處理單元,用于通過三角形剖分方法對(duì)所述離散網(wǎng)格點(diǎn)進(jìn)行剖分處理,得到三角面化的三維服裝版片。結(jié)合第二方面的第一種可能的實(shí)施方式,本發(fā)明實(shí)施例提供了第二方面的第二種可能的實(shí)施方式,其中,所述碰撞檢測(cè)模塊,包括:第二建立單元,用于建立所述三維人體模型的第二外包圍盒;確定單元,用于確定所述第二外包圍盒與所述質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的初始碰撞位置;計(jì)算單元,用于根據(jù)所述初始碰撞位置,計(jì)算所述第二外包圍盒與所述質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的精確碰撞點(diǎn);碰撞檢測(cè)單元,用于根據(jù)計(jì)算得到的所述精確碰撞點(diǎn),進(jìn)行所述第二外包圍盒與所述質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的碰撞檢測(cè)。本發(fā)明實(shí)施例提供的一種三維服裝與人體模型的碰撞檢測(cè)方法及裝置,包括獲取待展示服裝對(duì)應(yīng)的三維服裝版片及三維人體模型;三維服裝版片為三角形,三角形包括多個(gè)公共頂點(diǎn)和非公共頂點(diǎn);設(shè)置三維服裝版片中各個(gè)離散網(wǎng)格點(diǎn)的碰撞參數(shù),建立三維服裝版片對(duì)應(yīng)的質(zhì)點(diǎn)彈簧模型;碰撞參數(shù)至少包括:質(zhì)量、彈性力和阻力;質(zhì)點(diǎn)彈簧模型包括質(zhì)點(diǎn)、拉伸剪切彈簧和彎曲彈簧,分別對(duì)應(yīng)三維服裝版片的公共頂點(diǎn)、三角形邊和兩個(gè)相鄰三角形非公共頂點(diǎn)的連接線段;離散網(wǎng)格點(diǎn)包括公共頂點(diǎn)和非公共頂點(diǎn);在質(zhì)點(diǎn)彈簧模型移動(dòng)到與三維人體模型匹配的碰撞位置時(shí),根據(jù)包圍盒樹算法對(duì)質(zhì)點(diǎn)彈簧模型和三維人體模型進(jìn)行碰撞檢測(cè),以確定三維服裝版片是否真實(shí)貼合到所述三維人體模型上;與現(xiàn)有技術(shù)中通過將三維服裝版片以手動(dòng)方式移動(dòng)到三維人體模型上,最終通過縫合技術(shù)將服裝展示在三維人體模型上相比,其通過建立三維服裝版片對(duì)應(yīng)的質(zhì)點(diǎn)彈簧模型,設(shè)置三維服裝版片中各個(gè)離散網(wǎng)格點(diǎn)的碰撞參數(shù),最終通過包圍盒樹算法對(duì)質(zhì)點(diǎn)彈簧模型和三維人體模型進(jìn)行碰撞檢測(cè),以確定三維服裝版片是否真實(shí)貼合到三維人體模型上,使得待展示的服裝在三維人體模型上的展示效果更加逼真、真實(shí);同時(shí)包圍盒樹算法的應(yīng)用使得三維服裝版片和三維人體模型間的碰撞檢測(cè)能夠快速完成,保證了整個(gè)過程的實(shí)時(shí)性。為使本發(fā)明的上述目的、特征和優(yōu)點(diǎn)能更明顯易懂,下文特舉較佳實(shí)施例,并配合所附附圖,作詳細(xì)說明如下。附圖說明為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例中所需要使用的附圖作簡(jiǎn)單地介紹,應(yīng)當(dāng)理解,以下附圖僅示出了本發(fā)明的某些實(shí)施例,因此不應(yīng)被看作是對(duì)范圍的限定,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他相關(guān)的附圖。圖1示出了本發(fā)明實(shí)施例所提供的一種三維服裝與人體模型的碰撞檢測(cè)方法的流程圖;圖2示出了本發(fā)明實(shí)施例所提供的三角網(wǎng)格上的服裝版片的質(zhì)點(diǎn)彈簧模型;圖3示出了本發(fā)明實(shí)施例所提供的獲取待展示服裝對(duì)應(yīng)的三維版片的流程圖;圖4示出了本發(fā)明實(shí)施例所提供的包圍盒樹算法對(duì)質(zhì)點(diǎn)彈簧模型和三維人體模型進(jìn)行碰撞檢測(cè)的流程圖;圖5示出了本發(fā)明實(shí)施例所提供的空間網(wǎng)格大小與三維人體模型的三角面的關(guān)系;圖6示出了本發(fā)明實(shí)施例所提供的判斷質(zhì)點(diǎn)與三維人體模型的包圍盒平面發(fā)生碰撞的示意圖;圖7示出了本發(fā)明實(shí)施例所提供的判斷質(zhì)點(diǎn)當(dāng)前位置和下一時(shí)刻位置所構(gòu)成的線段與包圍盒相交問題的示意圖;圖8示出了本發(fā)明實(shí)施例所提供的質(zhì)點(diǎn)和三維人體模型的三角面的關(guān)系示意圖;圖9示出了本發(fā)明實(shí)施例所提供的判斷交點(diǎn)P是否在三角面內(nèi)部的示意圖;圖10示出了本發(fā)明實(shí)施例所提供的一種三維服裝與人體模型的碰撞檢測(cè)裝置的結(jié)構(gòu)示意圖。主要元件符號(hào)說明:1、碰撞檢測(cè)裝置;11、獲取模塊;12、建立模塊;13、碰撞檢測(cè)模塊;111、獲取單元;112、第一建立單元;113、剖分處理單元;131、第二建立單元;132、確定單元;133、計(jì)算單元;134、碰撞檢測(cè)單元。具體實(shí)施方式為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。通常在此處附圖中描述和示出的本發(fā)明實(shí)施例的組件可以以各種不同的配置來布置和設(shè)計(jì)。因此,以下對(duì)在附圖中提供的本發(fā)明的實(shí)施例的詳細(xì)描述并非旨在限制要求保護(hù)的本發(fā)明的范圍,而是僅僅表示本發(fā)明的選定實(shí)施例。基于本發(fā)明的實(shí)施例,本領(lǐng)域技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍??紤]到現(xiàn)有的服裝在三維人體模型上的展示只是通過將三維服裝版片以手動(dòng)方式移動(dòng)到三維人體模型上,最終通過縫合技術(shù)將服裝展示在三維人體模型上,上述手動(dòng)方法實(shí)現(xiàn)的三維服裝版片與三維人體模型間的匹配過程中,手動(dòng)操作不可避免的帶來了誤差,這樣服裝在三維人體模型上的展示也不夠精確、自然,無法滿足消費(fèi)者對(duì)服裝在三維人體模型上展示的真實(shí)性的要求?;诖?,本發(fā)明實(shí)施例提供了一種三維服裝與人體模型的碰撞檢測(cè)方法,該方法通過建立三維服裝版片對(duì)應(yīng)的質(zhì)點(diǎn)彈簧模型,設(shè)置三維服裝版片中各個(gè)離散網(wǎng)格點(diǎn)的碰撞參數(shù),最終通過包圍盒樹算法對(duì)質(zhì)點(diǎn)彈簧模型和三維人體模型進(jìn)行碰撞檢測(cè),以確定三維服裝版片是否真實(shí)貼合到三維人體模型上,使得待展示的服裝在三維人體模型上的展示效果更加逼真、真實(shí);同時(shí)包圍盒樹算法的應(yīng)用使得三維服裝版片和三維人體模型間的碰撞檢測(cè)能夠快速完成,保證了整個(gè)過程的實(shí)時(shí)性。下面結(jié)合圖1說明本發(fā)明實(shí)施例提供的一種三維服裝與人體模型的碰撞檢測(cè)方法,該方法包括:S101、獲取待展示服裝對(duì)應(yīng)的三維服裝版片及三維人體模型;三維服裝版片包括多個(gè)三角形,三角形包括多個(gè)公共頂點(diǎn)和非公共頂點(diǎn);目前,消費(fèi)者對(duì)虛擬現(xiàn)實(shí)技術(shù)的真實(shí)性的要求越來越高,為了更好的模擬服裝在三維人體模型上的展示效果,首先需要獲取三維的服裝版片和三維人體模型,三維服裝版片可根據(jù)消費(fèi)者提供的待展示的二維服裝版片通過建立第一外包圍盒、網(wǎng)格化處理以及建立質(zhì)點(diǎn)彈簧模型等得到;而三維人體模型可通過三維軟件建模獲得;但對(duì)于目前的消費(fèi)者來說,不僅希望看到服裝穿在任一模特身上的標(biāo)準(zhǔn)樣式,更希望看到服裝穿在自己身上的立體效果,以針對(duì)性的先擇服裝的款式、型號(hào)、色彩搭配以及整體造型,此時(shí),對(duì)于三維人體模型就有了進(jìn)一步的限制,為了得到和自己本人相匹配的三維人體模型,需要使用基于深度攝像機(jī)的三維人體模型創(chuàng)建技術(shù)來構(gòu)建,這樣就可以得到和自己相匹配的三維人體模型,進(jìn)而模擬真實(shí)的穿衣效果。另外,考慮到任意衣片形狀的生成以及多個(gè)衣片之間的有效縫合與拼接,發(fā)明人發(fā)現(xiàn)以三角網(wǎng)格作為布料的幾何載體比較方便,所以三維服裝版片包括多個(gè)三角形,多個(gè)三角形可形成多個(gè)公共頂點(diǎn)和非公共頂點(diǎn)。S102、設(shè)置三維服裝版片中各個(gè)離散網(wǎng)格點(diǎn)的碰撞參數(shù),建立三維服裝版片對(duì)應(yīng)的質(zhì)點(diǎn)彈簧模型;碰撞參數(shù)至少包括:質(zhì)量、彈性力和阻力;質(zhì)點(diǎn)彈簧模型包括質(zhì)點(diǎn)、拉伸剪切彈簧和彎曲彈簧,分別對(duì)應(yīng)三維服裝版片的公共頂點(diǎn)、三角形邊和兩個(gè)相鄰三角形非公共頂點(diǎn)的連接線段;離散網(wǎng)格點(diǎn)包括公共頂點(diǎn)和非公共頂點(diǎn);具體的,三維服裝版片由多個(gè)三角形組成,而對(duì)于服裝這樣的柔性織物來講,為使效果更加逼真以及碰撞檢測(cè)的實(shí)時(shí)性,采用質(zhì)點(diǎn)彈簧模型作為粒子系統(tǒng)成為不二之選。參考圖2,建立在三角網(wǎng)格上的服裝版片的質(zhì)點(diǎn)彈簧模型的過程如下:三角形的網(wǎng)格頂點(diǎn)對(duì)應(yīng)質(zhì)點(diǎn),三角形邊對(duì)應(yīng)拉伸剪切彈簧,兩個(gè)相鄰三角形非公共頂點(diǎn)的連接線對(duì)應(yīng)彎曲彈簧。為了能夠逼真的模擬布料效果,質(zhì)點(diǎn)彈簧模型包含內(nèi)力和外力,其中,外力的計(jì)算公式如下:FE=FG+FD+FF;FG代表重力、FD代表阻尼力、FF代表其他力。質(zhì)點(diǎn)彈簧模型中的內(nèi)力計(jì)算主要是由彈簧的形變和彈簧兩端質(zhì)點(diǎn)的速度差來組成,計(jì)算公式如下:L=-Ks×(Lp1p2-Lres)R=Kd×(ΔV*ΔD)Lp1p2]]>F(i,j)=(L+R)×Np1p2其中,Ks代表彈性系數(shù),Lp1Lp2代表運(yùn)動(dòng)后兩點(diǎn)的距離,Lres代表兩點(diǎn)的初始距離,L是拉伸的胡克彈性部分,R是胡克的阻尼部分,Kd是阻尼系數(shù),△V是兩質(zhì)點(diǎn)的速度矢量差,△D是兩質(zhì)點(diǎn)的向量差,Np1p2是法線。S103、在質(zhì)點(diǎn)彈簧模型移動(dòng)到與三維人體模型匹配的碰撞位置時(shí),根據(jù)包圍盒樹算法對(duì)質(zhì)點(diǎn)彈簧模型和三維人體模型進(jìn)行碰撞檢測(cè),以確定三維服裝版片是否真實(shí)貼合到三維人體模型上;其中,所述三維人體模型由多個(gè)三角面組成。具體的,調(diào)整已構(gòu)建的三維服裝版片的質(zhì)點(diǎn)彈簧模型和三維人體模型的相對(duì)位置,使得三維人體模型處于三維服裝版片的包裹之中,為了能夠快速確定三維服裝版片與三維人體模型碰撞后三維服裝版片的表現(xiàn)位置,發(fā)明人采用包圍盒樹算法對(duì)上述三維人體模型進(jìn)行了處理,這樣質(zhì)點(diǎn)與三維人體模型(三維人體模型上包含成千上萬個(gè)點(diǎn))上的點(diǎn)的碰撞問題就轉(zhuǎn)化成了質(zhì)點(diǎn)與三維人體模型包圍盒的碰撞問題,這樣大大減少了計(jì)算量,使得三維服裝版片與三維人體模型碰撞后能夠自然表現(xiàn)在三維人體模型上,保證了服裝在人體模型上展示的真實(shí)性。本發(fā)明實(shí)施例提供的一種三維服裝與人體模型的碰撞檢測(cè)方法,通過建立三維服裝版片對(duì)應(yīng)的質(zhì)點(diǎn)彈簧模型,設(shè)置三維服裝版片中各個(gè)離散網(wǎng)格點(diǎn)的碰撞參數(shù),最終通過包圍盒樹算法對(duì)質(zhì)點(diǎn)彈簧模型和三維人體模型進(jìn)行碰撞檢測(cè),以確定三維服裝版片是否真實(shí)貼合到三維人體模型上,與現(xiàn)有技術(shù)中通過將三維服裝版片以手動(dòng)方式移動(dòng)到三維人體模型上,最終通過縫合技術(shù)將服裝展示在三維人體模型上相比,其使待展示的服裝在三維人體模型上的展示效果更加逼真、真實(shí);同時(shí)包圍盒樹算法的應(yīng)用使得三維服裝版片和三維人體模型間的碰撞檢測(cè)能夠快速完成,保證了整個(gè)過程的實(shí)時(shí)性。如上所述,為了使得服裝在人體模型上的展示效果更加逼真,需要將二維的服裝版片進(jìn)行處理,以獲取待展示服裝對(duì)應(yīng)的三維服裝版片,參考圖3,具體實(shí)現(xiàn)方式包括:S201、獲取待展示服裝對(duì)應(yīng)的多個(gè)二維服裝版片;具體的,服裝的各個(gè)部分是由服裝版片組成的,對(duì)于一件完整的服裝,需要先將其拆分成多個(gè)不同的二維服裝版片,以繼續(xù)進(jìn)行后續(xù)的處理過程。S202、建立各個(gè)二維服裝版片的第一外包圍盒;其中,第一外包圍盒包括根據(jù)預(yù)設(shè)密度閾值生成的均勻的離散網(wǎng)格點(diǎn);具體的,用多個(gè)點(diǎn)去匹配二維服裝版片的外輪廓,以使多個(gè)點(diǎn)能夠完整的形成服裝版片的外輪廓,即可得到上述二維服裝版片的第一外包圍盒,其中二維服裝版片建立第一外包圍盒的同時(shí)也構(gòu)建了二維服裝版片的質(zhì)點(diǎn)彈簧模型,上述第一外包圍盒根據(jù)服裝的材質(zhì)已按照預(yù)設(shè)的密度閾值生成均勻的離散網(wǎng)格點(diǎn),以得到三維服裝版片。S203、通過三角形剖分方法對(duì)離散網(wǎng)格點(diǎn)進(jìn)行剖分處理,得到三角面化的三維服裝版片。在本發(fā)明實(shí)施例中,多個(gè)離散的網(wǎng)格點(diǎn)排列雜亂無章,為了方便處理以及表示清楚,通過三角形剖分方法對(duì)上述離散的網(wǎng)格點(diǎn)進(jìn)行剖分處理,具體過程可以為:以一點(diǎn)為中心,加之周圍的每相鄰兩個(gè)點(diǎn)構(gòu)成一個(gè)三角形,可將三維服裝版片剖分成多個(gè)無縫隙的三角形,從而可以得到三角面化的三維服裝版片。在本發(fā)明實(shí)施例中,為了能夠快速確定三維服裝版片與三維人體模型碰撞后,三維服裝版片的表現(xiàn)位置,采用了包圍盒樹算法對(duì)質(zhì)點(diǎn)彈簧模型和三維人體模型進(jìn)行碰撞檢測(cè),參考圖4,具體實(shí)現(xiàn)方式如下:S301、建立三維人體模型的第二外包圍盒;在本發(fā)明實(shí)施例中,為了減少碰撞檢測(cè)計(jì)算的運(yùn)算量,需要對(duì)上述三維人體模型建立第二外包圍盒,具體實(shí)現(xiàn)方式如下:1、通過三角形標(biāo)記分組方法對(duì)三維人體模型的三角面進(jìn)行標(biāo)記分組處理,得到標(biāo)記分組后的三角面化的三維人體模型;在對(duì)三維人體模型建立第二外包圍盒時(shí),將三維人體模型的三角面作為基本單位是比較方便的,三維人體模型由眾多三角面組成,需要對(duì)三維人體模型的三角面進(jìn)行標(biāo)記分組處理,從而得到由多個(gè)標(biāo)記分組后的三角形無縫隙拼接而成的三維人體模型,為查找三角面提供方便。2、按照以下公式計(jì)算網(wǎng)格尺寸:其中S代表網(wǎng)格尺寸,Pmax代表三維人體模型的三角面在空間上x、y、z方向上的極大值,Pmin代表三維人體模型的三角面在空間上x、y、z方向上的極小值;具體的,上述第二外包圍盒為AABB包圍盒,其中,Pmax=[Xmax,Ymax,Zmax];Pmin=[Xmin,Ymin,Zmin],在構(gòu)建AABB包圍盒時(shí),涉及到對(duì)空間的劃分,空間網(wǎng)格的大小決定了每個(gè)三角形占用的空間網(wǎng)格數(shù)量,參考圖5,空間網(wǎng)格太小會(huì)使一個(gè)三角形占用過多的網(wǎng)格,網(wǎng)格太大會(huì)使太多的三角形映射到同一網(wǎng)格中,當(dāng)網(wǎng)格的大小與三角形的AABB包圍盒尺寸相當(dāng)時(shí)效果最優(yōu),所以可以取所有三角形的AABB包圍盒尺寸的平均值,網(wǎng)格的大小為3、根據(jù)計(jì)算得到的網(wǎng)格尺寸和質(zhì)點(diǎn)彈簧模型的三角面的x、y、z方向的哈希表關(guān)鍵字,計(jì)算哈希表;具體的,哈希函數(shù)為:hash=x*m1;hash=hash^(y*m2);hash=hash^(z*m3);哈希函數(shù)中m1、m2、m3的取值影響了哈希沖突的情況,根據(jù)實(shí)驗(yàn)得到,m1、m2、m3取值不同,哈希沖突的位置也不同,具體情況還取決于三維人體模型的形狀與位置,即用到的網(wǎng)格的編號(hào)。其中m1、m2、m3取三個(gè)較大的質(zhì)數(shù),經(jīng)過實(shí)驗(yàn)證明,這三個(gè)質(zhì)數(shù)的差值較大時(shí),出現(xiàn)哈希沖突的概率較小,在本發(fā)明實(shí)施例中,算法最終采用73856093,19349663,83492791這三個(gè)8位質(zhì)數(shù)。所以,哈希表關(guān)鍵字的計(jì)算方法為:hash=x*73856093;hash=hash^(y*19349663);hash=hash^(z*83492791);key=hash%HASH_TABLE_SIZE;4、根據(jù)哈希表,建立三維人體模型的第二外包圍盒。具體的,根據(jù)哈希表及空間網(wǎng)格的大小建立三維人體模型的第二外包圍盒。S302、確定第二外包圍盒與質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的初始碰撞位置;具體的,在服裝版片的質(zhì)點(diǎn)彈簧模型移動(dòng)到三維人體模型的第二外包圍盒上時(shí),會(huì)發(fā)生碰撞,此時(shí)在第二外包圍盒上會(huì)出現(xiàn)初始的碰撞位置。S303、根據(jù)初始碰撞位置,計(jì)算第二外包圍盒與質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的精確碰撞點(diǎn);具體的,根據(jù)公式計(jì)算第二外包圍盒與質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的精確碰撞點(diǎn);其中,X代表質(zhì)點(diǎn)位置,Δx代表上一時(shí)刻質(zhì)點(diǎn)和本次質(zhì)點(diǎn)位置的矢量差,Δt代表時(shí)間變化,F(xiàn)代表質(zhì)點(diǎn)受到的力,M代表質(zhì)點(diǎn)質(zhì)量。事實(shí)上,服裝的質(zhì)點(diǎn)彈簧模型是一個(gè)基于力學(xué)的運(yùn)動(dòng)過程,實(shí)質(zhì)上就是質(zhì)點(diǎn)在外力和內(nèi)力的作用下的運(yùn)動(dòng)過程。上述求解質(zhì)點(diǎn)新位置(碰撞點(diǎn))的公式是對(duì)牛頓第二定律(運(yùn)動(dòng)方程)在計(jì)算機(jī)上運(yùn)用的一種數(shù)值積分方法。S304、根據(jù)計(jì)算得到的精確碰撞點(diǎn),進(jìn)行第二外包圍盒與質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的碰撞檢測(cè)。在碰撞檢測(cè)過程中,要對(duì)服裝與三維人體模型之間的各個(gè)面進(jìn)行檢測(cè),時(shí)間和精度上都要進(jìn)行嚴(yán)格限制。所以必須要使用合適的數(shù)據(jù)結(jié)構(gòu)表示三維人體模型,才能在碰撞檢測(cè)中得到滿意的效果。上述過程中將組成三維人體模型的所有三角面定義成AABB包圍盒,通過三維人體版片上的質(zhì)點(diǎn)與AABB包圍盒進(jìn)行碰撞檢測(cè),初步確定碰撞位置,之后確定精確的碰撞點(diǎn),對(duì)碰撞點(diǎn)進(jìn)行快速的碰撞響應(yīng)處理。1、根據(jù)公式檢測(cè)質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)和三維人體模型的第二外包圍盒的平面是否發(fā)生碰撞;其中,X表示質(zhì)點(diǎn)的位置,V表示質(zhì)點(diǎn)的速度,P表示平面上的一點(diǎn),N代表平面的法向量;ε表示布料的厚度,(X-P)*N<ε表示布料和平面發(fā)生了接觸;N*V<0表示粒子向平面方向運(yùn)動(dòng);2、當(dāng)檢測(cè)到質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)和三維人體模型的平面接觸且,質(zhì)點(diǎn)向平面方向運(yùn)動(dòng),判定質(zhì)點(diǎn)和平面發(fā)生碰撞。具體的,參考圖6,假設(shè)三維人體模型保持不動(dòng)的姿勢(shì),三維服裝版片在更新狀態(tài)時(shí)會(huì)有位移的變化,此時(shí)新的位置可能與三維人體模型發(fā)生碰撞或穿透,此時(shí)需要及時(shí)采用有效的方法將三維服裝版片的質(zhì)點(diǎn)從三維人體模型的表面或內(nèi)部移出。在圖6中,X表示質(zhì)點(diǎn)的位置,V表示質(zhì)點(diǎn)的速度,P表示平面上的一點(diǎn),N代表平面的法向量;質(zhì)點(diǎn)與三維人體模型的包圍盒平面發(fā)生碰撞的條件為:(X-P)*N<ϵ(N*V)<0]]>ε表示三維服裝版片布料的厚度,(X-P)*N<ε表示布料和三維人體模型包圍盒平面發(fā)生了接觸;N*V<0表示質(zhì)點(diǎn)向三維人體模型的包圍盒平面方向運(yùn)動(dòng)。當(dāng)質(zhì)點(diǎn)和包圍盒平面有接觸,并且向包圍盒平面方向運(yùn)動(dòng),則該質(zhì)點(diǎn)和該平面發(fā)生碰撞。3、判斷當(dāng)前時(shí)刻的質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)位置和下一時(shí)間的質(zhì)點(diǎn)位置形成的向量和第二外包圍盒是否相交;若相交,則質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)和三維人體模型發(fā)生碰撞。在本發(fā)明實(shí)施例中,通過判斷當(dāng)前時(shí)刻的質(zhì)點(diǎn)位置和下一時(shí)刻的質(zhì)點(diǎn)位置形成的向量和三維人體模型的AABB包圍盒是否相交來決定下一時(shí)刻質(zhì)點(diǎn)是否有碰撞的可能。具體的,參考圖7,三維人體模型AABB包圍盒、當(dāng)前時(shí)刻的質(zhì)點(diǎn)位置和下一時(shí)刻之間位置形成的線段之間的相交測(cè)試算法如下:通過投影,可以將三維問題轉(zhuǎn)化為一維問題,分別比較AABB包圍盒和線段在xyz軸上投影是否重疊,來計(jì)算相交問題。在圖7中,A表示AABB包圍盒,B為線段,X為投影軸,CA、CB分別為A和B的中心點(diǎn),PA和PB分別為CA、CB在X上的投影,若RA+RB<PAPB,說明在X軸向上A和B不相交。下面詳細(xì)說明三維服裝版片的質(zhì)點(diǎn)彈簧模型上的質(zhì)點(diǎn)和三維人體模型的三角面的關(guān)系,參考圖8,具體如下:X表示當(dāng)前時(shí)刻質(zhì)點(diǎn)的位置,P表示平面上的一點(diǎn),V表示質(zhì)點(diǎn)的速度,X’表示下一時(shí)刻質(zhì)點(diǎn)的位置,圖8(A)表示質(zhì)點(diǎn)穿透三角面;圖8(B)表示質(zhì)點(diǎn)附在三角面所在的平面上,沒有穿過三角面;圖8(C)表示質(zhì)點(diǎn)和三角面沒有接觸,圖中H為P在三角面ABC上的投影。(1)判斷當(dāng)前質(zhì)點(diǎn)和下一時(shí)刻質(zhì)點(diǎn)位置是否在三角面所在的平面兩側(cè)的公式:Dx=aXx+bXy+cXz+dDx′=aX′x+bX′y+cX′z+d]]>若Dx>0,Dx’<-ε,則質(zhì)點(diǎn)位于平面兩側(cè)。(2)求質(zhì)點(diǎn)當(dāng)前位置與下一時(shí)刻位置組成的線段和三角面組成的平面交點(diǎn)P:Px-XxX′x-Xx=Py-XyX′y-Xy=Pz-XzX′z-Xz]]>aPx+bPy+cPz+d=0(3)判斷交點(diǎn)P是否在三角面的內(nèi)部參考圖9,三角面的三個(gè)點(diǎn)在同一個(gè)平面上,如果選中其中一個(gè)點(diǎn),其它兩個(gè)點(diǎn)不過是相對(duì)該點(diǎn)的位移而已,比如選擇點(diǎn)A作為起點(diǎn),那么點(diǎn)B相當(dāng)于在AB方向移動(dòng)一段距離得到,而點(diǎn)C相當(dāng)于在AC方向移動(dòng)一段距離得到。公式:u=((v1*v1)(v2*v0)-(v1*v0)(v28v1))/((v0*v0)(v1*v1)-(v0*v1)(v1*v0))v=((v0*v0)(v2*v1)-(v0*v1)(v2*v0))/((v0*v0)(v1*v1)-(v0*v1)(v1*v0))P位于三角形ABC內(nèi)部,u和v必須滿足條件如下:u≥0v≥0u+v≤1當(dāng)質(zhì)點(diǎn)P以速度V與三角形平面ABC發(fā)生碰撞,平面的法向量為N,速度V被分解為垂直于平面的前進(jìn)速度Vn和前進(jìn)速度Vt,當(dāng)質(zhì)點(diǎn)與三角形平面發(fā)生碰撞后,在水平方向質(zhì)點(diǎn)與三角面相互摩擦,摩擦力起到阻尼的作用,同樣,在垂直方向上,速度會(huì)有一定的分散和反彈,則新的速度為:v′=vt-kf||vn||vt||vt||-krvn]]>其中,kf為摩擦系數(shù),kr為反彈系數(shù),kf≥0;0≤kr≤1。最終,質(zhì)點(diǎn)將以新的速度移動(dòng)到碰撞后的新位置處。另外,當(dāng)給上述三維人體模型加載上動(dòng)作后,因碰撞檢測(cè)完成的速度很快,所以,三維服裝版片能夠?qū)崟r(shí)根據(jù)三維人體模型的動(dòng)作通過調(diào)整質(zhì)點(diǎn)彈簧模型的受力情況而發(fā)生位置的變化,能夠?qū)崟r(shí)模擬人體的穿衣效果。本發(fā)明實(shí)施例還提供了一種三維服裝與人體模型的碰撞檢測(cè)裝置,該裝置用于執(zhí)行上述方法,具體的,參考圖10,碰撞檢測(cè)裝置1包括:獲取模塊11,用于獲取待展示服裝對(duì)應(yīng)的三維服裝版片及三維人體模型;三維服裝版片為三角形,三角形包括多個(gè)公共頂點(diǎn)和非公共頂點(diǎn);建立模塊12,用于設(shè)置三維服裝版片中各個(gè)離散網(wǎng)格點(diǎn)的碰撞參數(shù),建立三維服裝版片對(duì)應(yīng)的質(zhì)點(diǎn)彈簧模型;碰撞參數(shù)至少包括:質(zhì)量、彈性力和阻力;質(zhì)點(diǎn)彈簧模型包括質(zhì)點(diǎn)、拉伸剪切彈簧和彎曲彈簧,分別對(duì)應(yīng)三維服裝版片的公共頂點(diǎn)、三角形邊和兩個(gè)相鄰三角形非公共頂點(diǎn)的連接線段;離散網(wǎng)格點(diǎn)包括公共頂點(diǎn)和非公共頂點(diǎn);碰撞檢測(cè)模塊13,用于在質(zhì)點(diǎn)彈簧模型移動(dòng)到與三維人體模型匹配的碰撞位置時(shí),根據(jù)包圍盒樹算法對(duì)質(zhì)點(diǎn)彈簧模型和三維人體模型進(jìn)行碰撞檢測(cè),以確定三維服裝版片是否真實(shí)貼合到三維人體模型上。具體的,獲取模塊11包括:獲取單元111,用于獲取待展示服裝對(duì)應(yīng)的多個(gè)二維服裝版片;第一建立單元112,用于建立各個(gè)二維服裝版片的第一外包圍盒;其中,第一外包圍盒包括根據(jù)預(yù)設(shè)密度閾值生成的均勻的離散網(wǎng)格點(diǎn);剖分處理單元113,用于通過三角形剖分方法對(duì)離散網(wǎng)格點(diǎn)進(jìn)行剖分處理,得到三角面化的三維服裝版片。具體的,碰撞檢測(cè)模塊13包括:第二建立單元131,用于建立三維人體模型的第二外包圍盒;確定單元132,用于確定第二外包圍盒與質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的初始碰撞位置;計(jì)算單元133,用于根據(jù)初始碰撞位置,計(jì)算第二外包圍盒與質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的精確碰撞點(diǎn);碰撞檢測(cè)單元134,用于根據(jù)計(jì)算得到的精確碰撞點(diǎn),進(jìn)行第二外包圍盒與質(zhì)點(diǎn)彈簧模型的質(zhì)點(diǎn)的碰撞檢測(cè)。具體的,建立單元131包括:標(biāo)記分組處理子單元,用于通過三角形標(biāo)記分組方法對(duì)三維人體模型的三角面進(jìn)行標(biāo)記分組處理,得到標(biāo)記分組后的三角面化的三維人體模型;網(wǎng)格尺寸計(jì)算子單元,用于按照以下公式計(jì)算網(wǎng)格尺寸:其中S代表網(wǎng)格尺寸,Pmax代表三維人體模型的三角面在空間上x、y、z方向上的極大值,Pmin代表三維人體模型的三角面在空間上x、y、z方向上的極小值;哈希表計(jì)算單元,用于根據(jù)計(jì)算得到的網(wǎng)格尺寸和質(zhì)點(diǎn)彈簧模型的三角面的x、y、z方向的哈希表關(guān)鍵字,計(jì)算哈希表;建立子單元,用于根據(jù)哈希表,建立三維人體模型的第二外包圍盒。本發(fā)明實(shí)施例提供的三維服裝與人體模型的碰撞檢測(cè)方法及裝置,通過建立三維服裝版片對(duì)應(yīng)的質(zhì)點(diǎn)彈簧模型,設(shè)置三維服裝版片中各個(gè)離散網(wǎng)格點(diǎn)的碰撞參數(shù),最終通過包圍盒樹算法對(duì)質(zhì)點(diǎn)彈簧模型和三維人體模型進(jìn)行碰撞檢測(cè),以確定三維服裝版片是否真實(shí)貼合到三維人體模型上,使得待展示的服裝在三維人體模型上的展示效果更加逼真、真實(shí);同時(shí)包圍盒樹算法的應(yīng)用使得三維服裝版片和三維人體模型間的碰撞檢測(cè)能夠快速完成,保證了整個(gè)過程的實(shí)時(shí)性;另外,在三維人體模型加載動(dòng)作而運(yùn)動(dòng)后,三維服裝版片的質(zhì)點(diǎn)彈簧模型上的質(zhì)點(diǎn)會(huì)隨著三維人體模型的動(dòng)作通過調(diào)整質(zhì)點(diǎn)彈簧模型的受力情況而發(fā)生位置的變化,能夠?qū)崟r(shí)模擬人體的穿衣效果,交互性較好。應(yīng)注意到:相似的標(biāo)號(hào)和字母在下面的附圖中表示類似項(xiàng),因此,一旦某一項(xiàng)在一個(gè)附圖中被定義,則在隨后的附圖中不需要對(duì)其進(jìn)行進(jìn)一步定義和解釋。在本發(fā)明的描述中,需要說明的是,術(shù)語“中心”、“上”、“下”、“左”、“右”、“豎直”、“水平”、“內(nèi)”、“外”等指示的方位或位置關(guān)系為基于附圖所示的方位或位置關(guān)系,或者是該發(fā)明產(chǎn)品使用時(shí)慣常擺放的方位或位置關(guān)系,僅是為了便于描述本發(fā)明和簡(jiǎn)化描述,而不是指示或暗示所指的裝置或元件必須具有特定的方位、以特定的方位構(gòu)造和操作,因此不能理解為對(duì)本發(fā)明的限制。此外,術(shù)語“第一”、“第二”、“第三”等僅用于區(qū)分描述,而不能理解為指示或暗示相對(duì)重要性。在本發(fā)明的描述中,還需要說明的是,除非另有明確的規(guī)定和限定,術(shù)語“設(shè)置”、“安裝”、“相連”、“連接”應(yīng)做廣義理解,例如,可以是固定連接,也可以是可拆卸連接,或一體地連接;可以是機(jī)械連接,也可以是電連接;可以是直接相連,也可以通過中間媒介間接相連,可以是兩個(gè)元件內(nèi)部的連通。對(duì)于本領(lǐng)域的普通技術(shù)人員而言,可以具體情況理解上述術(shù)語在本發(fā)明中的具體含義。最后應(yīng)說明的是:以上所述實(shí)施例,僅為本發(fā)明的具體實(shí)施方式,用以說明本發(fā)明的技術(shù)方案,而非對(duì)其限制,本發(fā)明的保護(hù)范圍并不局限于此,盡管參照前述實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:任何熟悉本
技術(shù)領(lǐng)域:
的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),其依然可以對(duì)前述實(shí)施例所記載的技術(shù)方案進(jìn)行修改或可輕易想到變化,或者對(duì)其中部分技術(shù)特征進(jìn)行等同替換;而這些修改、變化或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明實(shí)施例技術(shù)方案的精神和范圍。都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)以所述權(quán)利要求的保護(hù)范圍為準(zhǔn)。當(dāng)前第1頁1 2 3