三維人體建模及顯示_第1頁
三維人體建模及顯示_第2頁
三維人體建模及顯示_第3頁
三維人體建模及顯示_第4頁
三維人體建模及顯示_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、-. z.基于單目視覺測量的人體建模與顯示盛光有1,姜壽山1,*欣2(1.*工程大學(xué) 電子信息學(xué)院, 710048;2.*工程大學(xué) 服裝與藝術(shù)設(shè)計學(xué)院, 710048 )摘要:以一種基于單目視覺測量原理的三維人體掃描裝置獲得的人體數(shù)據(jù)為來源,運用三角面片法構(gòu)建人體外表,并把人體模型保存為一種標(biāo)準(zhǔn)的模型格式文件OBJ文件,獲取了三維人體模型。然后在Visual C+的編程環(huán)境中采用OpenGLOpen Graphics Library作為三維圖形接口,編程實現(xiàn)了三維人體模型,獲得了可視化的人體模型。關(guān)鍵詞:三維人體模型;虛擬試衣;OpenGL;人體顯示隨著人們對服裝的舒適性,合體性和款式的個性化

2、的要求越來越高。傳統(tǒng)的二維服裝CAD軟件暴露出了種種缺乏之處,如號型難以適應(yīng)不同形態(tài)的人體,不能在衣片設(shè)計階段就看到成衣后的效果,需要反復(fù)修改等。根據(jù)個人體型進(jìn)展單量單裁的量身定制方式(Made To Measure,簡稱MTM)應(yīng)運而生,由于能滿足個性特殊需求,這種方式深受人們歡送。法國力克公司推出了一種服裝量身定制系統(tǒng)1,按照客戶具體要求量身定制,做到量體裁衣,使服裝真正做到合體舒適. 德國TechMath公司的FitNet軟件系統(tǒng)針對該顧客的體型,從人體數(shù)據(jù)庫中直接搜索出相近的體型及配套服裝樣板,并提供了進(jìn)一步根據(jù)顧客體型和穿著習(xí)慣修改樣板的功能2。還有英國的Baird Menswear

3、西服公司,其銷售到國內(nèi)和國際市場的西服中有80是通過量身定制系統(tǒng)完成的,并且服裝系列涵蓋了不同款式、顏色和規(guī)格的組合3。而國內(nèi)的三維服裝CAD技術(shù)遠(yuǎn)遠(yuǎn)落后于西方興旺國家,近幾年來國內(nèi)的一些院校和公司也都在研究這方面的技術(shù)。其中獲得可視的三維人體模型的是三維虛擬試衣系統(tǒng)和三維服裝CAD系統(tǒng)中的關(guān)鍵技術(shù)。本文以一種人體掃描儀所獲取的三維人體數(shù)據(jù)為數(shù)據(jù)為根底,采用三角面片法構(gòu)建了人體外表模型,并編程實現(xiàn)了人體模型的真實感顯示。1 三維人體模型構(gòu)建1.1 數(shù)據(jù)獲取目前,獲取用于三維人體模型重建的數(shù)據(jù),主要用兩種途徑。一種是從Poser, Maya 和 3DSMa*等軟件系統(tǒng)導(dǎo)出人體模型數(shù)據(jù),另外一種是

4、采用非接觸測量方法,通常是采用非接觸式人體掃描儀獲取人體外表的三維數(shù)據(jù)。本為獲取數(shù)據(jù)的方法屬于第二種。本文中人體建模用到的數(shù)據(jù)來源于一種基于單目視覺的雙掃描頭人體掃描儀所測得的4。由于獲得的原始數(shù)據(jù)點云數(shù)量很大,并且排列不太規(guī)則,因此對原始點云進(jìn)展了一定的處理,有效地減少了數(shù)據(jù)點云的數(shù)量和增加了點云數(shù)據(jù)的規(guī)律性。關(guān)于數(shù)據(jù)處理的細(xì)節(jié)不是本文的所討論的重點,在此不討論。處理之后的點云如圖1所示。、圖1 經(jīng)過處理的人體點云1.2人體模型構(gòu)建方法的選取人體模型主要分為劃分為線框模型、外表模型、實體模型、基于物理的模型等5。使用線框模型的方法對人體建模時,它是將人體輪廓用線框圖形和關(guān)節(jié)表示,由于包含的信

5、息有限,因此該建模方法無法實現(xiàn)三維人體模型的真實感顯示;外表模型是用組成物體的外表來表示物體。使用這種方法對人體建模時,曲面模型能提供三維人體的外表信息,并進(jìn)展隱藏線消除和真實感三維人體模型顯示;用實體模型的方法對人體建模時,由于它增加了三維人體的實心局部表達(dá),使其信息更加完備,但是計算量大,穩(wěn)定性差?;谖锢淼哪P驮诮_^程中引入了人體自身的物理信息,所以基于物理的模型具有更加真實的表達(dá)效果,能對人體的動態(tài)過程進(jìn)展有效地描述,但和前面幾種相比,在計算上要復(fù)雜得多。綜合了幾種模型的優(yōu)缺點,本文采用外表模型表達(dá)人體。使用三角面片、BEZIER 曲面、NURBS 曲面等都可以構(gòu)成物體的外表,其中用

6、得比擬多的是 NURBS 曲面 ,但考慮到NURBS技術(shù)的復(fù)雜性,本文采用小三角面片表示人體曲面。這種方法具有表達(dá)簡單、計算方便等優(yōu)點。1.3 人體模型的構(gòu)建前面已經(jīng)介紹本文將采用一系列三角面片來表示人體外表,通過三維數(shù)據(jù)點集去構(gòu)建這些三角面片的過程就叫做三角剖分,也稱為三角網(wǎng)格化6。目前,關(guān)于三維散亂點集的三角剖分理論和算法尚不能盡如人意。然而由于本文中的點云已經(jīng)處理為圖1的形式,此時的人體外表是用一層層的輪廓線描述的。因此只要設(shè)法將人體相鄰兩截面用三角面片連接起來,就完成了三角網(wǎng)格化的過程。構(gòu)造連接相鄰兩截面輪廓線的三角面片的過程也叫做輪廓連接。連接的方法有許多,目前常用方法主要有最短對角

7、線法,最大體積法,相鄰輪廓線同步前進(jìn)法。由于相鄰輪廓線同步前進(jìn)法,只需要沿著輪廓線進(jìn)展同步前進(jìn),靈活性較好并且計算不復(fù)雜,也很少出現(xiàn)狹長三角形等較差外表,因此本文選用這種方法來構(gòu)建人體模型。這一方法的主要思想是,在用三角面片連接相鄰兩條輪廓線上的點列時,使得連接操作在兩條輪廓線上盡可能同步進(jìn)展。如圖2所示,假設(shè)上下輪廓分別為P、Q,Pi、Qj(0im,0jn)分別為上下輪廓的各點,定義i、j分別為上下輪廓線線段長度除以該線段所在輪廓線的周長所得的值,同時假設(shè)i 表示上輪廓線中已經(jīng)存在的輪廓線線段長度之和的標(biāo)稱值,j表示下輪廓線中已經(jīng)存在的輪廓線線段長度之和的標(biāo)稱值。假設(shè)此時應(yīng)判斷選擇三角形Pi

8、Pi+1Qj或三角形PiQjQj+1,則當(dāng)|i+i-j|j+j-i|時,沿上輪廓線前進(jìn),選擇三角形PiPi+1Qj,否則沿下輪廓線前進(jìn)。圖2相鄰輪廓線同步前進(jìn)法構(gòu)建三角面片示意圖人體掃描儀所測得的人體數(shù)據(jù)分為六個局部,即左右腿,左右臂,軀干以及頭部。按照上述方法,分別重構(gòu)了這六個局部。為了獲得完整的人體,還必須對這分割后的六個局部進(jìn)展曲面拼接。包括左右腿和軀干的拼接,左右臂以及軀干和頭部的拼接。首先需要考慮的就是相鄰截面輪廓線的對應(yīng)問題。以左右臂以及軀干和肩頭部的拼接為例,需要首先將肩頭部的第一層截面用Ch表示分成三局部,分別對應(yīng)左右臂以及軀干局部的最后一層截面分別用Cl、Cr、Cm表示。對應(yīng)

9、的方法為比擬Ch上各點*坐標(biāo)與左右腋窩點的*坐標(biāo),假設(shè)*點*坐標(biāo)小于右腋窩點的*坐標(biāo),則將該點對應(yīng)于Cr,假設(shè)*點*坐標(biāo)大于左腋窩點的*坐標(biāo),則將該點對應(yīng)于Cl,剩余點對應(yīng)于Cm.。在將兩截面輪廓線對應(yīng)后,再次按照輪廓線同步前進(jìn)法分別連接各個別離的局部,則完成了人體模型的構(gòu)建。構(gòu)成的三角向形網(wǎng)格如圖3所示。圖3構(gòu)建的三角形網(wǎng)格1.4人體模型的存儲在建立人體模型之后,需要將其以一定格式的文件進(jìn)展存儲,以利于應(yīng)用程序?qū)D形進(jìn)展處理以及系統(tǒng)以后的擴展。OBJ 文件是 Wavefront公司開發(fā)的一種文件格式,該文件以純文本形式存儲了模型的頂點、法線、紋理坐標(biāo)和材質(zhì)等信息,而且構(gòu)造非常簡單,同時它也是

10、一種標(biāo)準(zhǔn)的3D模型文件格式,很適合用于3D軟件模型之間的互導(dǎo),通用性較好,再者也可以方便系統(tǒng)將來在諸如反求工程等領(lǐng)域的擴展及系統(tǒng)的進(jìn)一步開發(fā)。因此本文選用OBJ文件格式存儲人體數(shù)據(jù)信息。如果三維人體顯示時不經(jīng)光照的濃淡處理,看到的人體模型就像平面圖,沒有立體效果。為了有立體效果,必須進(jìn)展光照處理,這是因為物體在光的照射下其對光的一面和背光的一面呈現(xiàn)的效果不同,只有把這種效果反映出來,二維顯示器上的三維模型才有逼真的立體感。通常我們進(jìn)展人體模型繪制過程中,在進(jìn)展光照處理時,必須計算面或點的法線向量才能看到效果。在本課題中以三角片來逼近模仿人體外表,就表現(xiàn)為計算每個三角面片法向量,采用這種方法計算

11、量少。但是這種情況下,當(dāng)數(shù)據(jù)點很少,很難模仿人體的光滑皮膚。因此為了得到一個更加真實的人體模型,使人體模型更生動、真實,還需要計算各個點的法向量。下面我們分別介紹一下三角片法向量和頂點法向量的的計算方法,如圖4所示:O,P,Q,R,S,U,V,W是三角片頂點,P是一個中心頂點,它周圍有7個三角片,三角片的法線向量分別是n1,n2,n3,n4,n5,n6,n7;其它點是邊界點。圖4求法向量示意圖對于任意三角片,根據(jù)平面法線向量定義,三角片的法線向量等于三角片兩條向量邊的叉乘積,例如三角形OQP,它的面法向量可以這樣計算。 1對于中心點P法線向量np可以用平均法線向量計算:2 對與邊界點Q的法線向

12、量nQ可以用下面公式計算:3其中表示經(jīng)過它的三角片的面積,表示該三角片法線向量。在OpenGL中,所使用的法線要求是規(guī)*化的向量,所以求得法線還必須規(guī)*化。這樣,通過采用上面的方法計算,各個頂點的法向量是逐漸變化的,經(jīng)過光照計算,視覺上的效果會很不同。如圖5從左到右分別是人體腿部一局部沒加光照、加光照但只計算面法向量、加光照并計算點法向量的比照效果。 (a) (b) (c)圖5 大腿的光照效果比照圖按照OBJ格式的要求,分別將人體外表各點,各點的法線向量以及三角面片寫入OBJ文件。寫入OBJ文件時,各三角形頂點索引號的寫入順序,使其滿足右手準(zhǔn)則,也就是使構(gòu)成的三角形法線向外。生成的OBJ文件形

13、式如圖6所示。a構(gòu)成三角形的各頂點(b)各個頂點對應(yīng)的法線c 三角形面片圖6 生成的OBJ文件片段2 人體模型可視化虛擬環(huán)境的搭建OpenGLOpen Graphics Library,是從SGI公司的GL(graphics library)根底上開展起來的一套獨立于硬件、獨立于窗口系統(tǒng)的三維圖形庫。目前,OpenGL在圖形設(shè)計領(lǐng)域已經(jīng)成為工業(yè)標(biāo)準(zhǔn),被廣泛地應(yīng)用于圖形與動畫繪制、虛擬現(xiàn)實技術(shù)和計算機可視化等三維圖形設(shè)計領(lǐng)域7,而VC+也提供了與OpenGL的接口從而結(jié)合二者的特點,能很好地進(jìn)展交互式三維應(yīng)用程序的開發(fā)。所以本文采用OpenGL作為三維圖形接口,以Visual C+6.0作為開發(fā)

14、環(huán)境, 來顯示人體模型。實現(xiàn)VC+6. 0和OpenGL之間圖形接口的機制是像素格式設(shè)置以及關(guān)聯(lián)DC與RC。在創(chuàng)立一個繪圖描述表RC之前,首先要設(shè)置像素格式,完成像素格式的設(shè)置后,需要為OpenGL建立RC,只有建立RC后, OpenGL才能調(diào)用繪圖原語在窗口中繪出圖形。RC是以線程為單位的,每個線程必須使用一個RC作為當(dāng)前RC才能執(zhí)行OpenGL繪圖原語. 在VC+6. 0中的MFC中實現(xiàn)OpenGL編程的大致步驟如下:(1)建立工程文件利用MFC AppW izard(e*e)創(chuàng)立一個單文檔的新工程。(2)OpenGL的根底庫設(shè)置在菜單中選擇ProjectSettings,最后選擇LINK

15、選項,然后在bject/LibraryModules 下增加OpenGL所需的庫程序,具體庫程序是OpenGL32.lib、glu32.lib、lau*. lib.每個程序開場要包含OpenGL所使用的庫的頭文件:#include glgl. h, #include glglu. h, #include glglau*.h。(3)設(shè)置OpenGL支持的Windows窗口風(fēng)格 OpenGL需要窗口具有WS_ CLI PCHILDREN和WS_CLI PSIBLI NG S風(fēng)格。前者是創(chuàng)立父窗口使用的Windows風(fēng)格,后者是創(chuàng)立子窗口使用的Windows風(fēng)格。主窗口的創(chuàng)立函數(shù)PreCreateW

16、indow(CREATESTRUCT & cs)中添加下面的代碼:cs. style = WS _ CLIPSIBLINGS| WS _CLIPCHILDREN。(4)設(shè)置像素格式和關(guān)聯(lián)DC和RC每個Windows應(yīng)用程序都必須處理設(shè)備描述表。在創(chuàng)立設(shè)備描述表之前,要設(shè)置設(shè)備的像素格式,設(shè)置圖形界面的屬性,包括圖形界面的顏色模式,顏色值的位數(shù),使用單緩存還是雙緩存,深度緩存的位數(shù)等,以及其它一些圖形信息。利用OpenGL繪制的窗口也必須設(shè)置像素格式。因為,缺省設(shè)置的像素格式是Windows的GDI(圖形用戶接口)。對一個窗口只能設(shè)置一次像素格式,像素格式的設(shè)置,放在響應(yīng)WM_CREATE消息的

17、OnCreate()函數(shù)中實現(xiàn)。設(shè)置像素格式,首先應(yīng)填充PI*ELFORMAT-DESCRIPTOR構(gòu)造,包括26個屬性信息,然后調(diào)用處理像素格式的Win32函數(shù)關(guān)聯(lián)DC和RC。設(shè)置像素格式與關(guān)聯(lián)DC和RC的細(xì)節(jié)可以參考一下OpenGL編程方面的書籍。(5)重載OnSize()函數(shù)重載和OnDestroy函數(shù)在OnSize()中,主要完成對窗口大小變化的響應(yīng)。當(dāng)窗口的大小改變改變時,必須重新設(shè)置圖形顯示模式,使其適合應(yīng)用程序窗口大小,否則會導(dǎo)致圖像變形;在程序退出時應(yīng)該清空當(dāng)前使用的著色上下文,并刪除所創(chuàng)立的著色上下文。(6) 在Ondraw()函數(shù)中完成繪圖工作以上完成了OpenGL在Vis

18、ual C+環(huán)境下編程的有關(guān)設(shè)置。調(diào)用OpenGL有關(guān)繪圖原語就可以進(jìn)展編程了。繪圖代碼一般在Ondraw() 函數(shù)中完成。至此,顯示人體的虛擬環(huán)境就搭建好了。3 三維人體顯示在VC+的文檔/視構(gòu)造中,應(yīng)用程序的數(shù)據(jù)是作為成員變量保存在文檔類對象中的,視圖類對象通過指針來訪問文檔類的成員變量。文檔類的一個主要任務(wù)就是管理文檔的數(shù)據(jù)磁盤存取,在文檔類中實現(xiàn)磁盤存取的關(guān)鍵函數(shù)是CDocument: Serialize ()函數(shù)。本文就是重載CDocument: Serialize ()函數(shù),在File菜單的0pen命令的消息響應(yīng)函數(shù)中調(diào)用CWinApp: 0nFile0pen ()函數(shù)實現(xiàn)OBJ文

19、檔讀入的。然后按照前面所講的,利用MFC AppW izard(e*e)創(chuàng)立一個單文檔的新工程SingleModel. 然后建立OpenGL與VC+應(yīng)用接口以及設(shè)置OpenGL的繪圖環(huán)境。然后在Ondraw()中編寫繪圖代碼。本文所顯示的人體外表是有一定數(shù)量的三角面片構(gòu)成的。所以繪圖的主要工作是調(diào)用OpenGL函數(shù)繪出這些三角形面片。程序的核心局部是就是指定三角形的定點和法線。為了增強所顯示人體的真實感,啟用了OpenGL中的光照功能。在OpenGL中使用光照的步驟如下:(1) 定義每個物體的每個頂點的法線向量。這些法線決定了物體相對于光源的方向;(2) 創(chuàng)立一個或多個光源,并設(shè)置它們的位置;

20、(3) 創(chuàng)立和選擇光照模型, 它定義了全局環(huán)境光的層次以及觀察點的有效位置(便于進(jìn)展光照計算)。(4)定義場景中的物體的材料屬性8。另外為了能從各個方面觀察所顯示的人體,本文實現(xiàn)了所顯示的人體可以繞*,Y,Z軸旋轉(zhuǎn),并能實現(xiàn)縮放功能。在OpenGL中調(diào)用glTranslate(),glRotate(),glScale()等函數(shù)很容易實現(xiàn)物體的平移,旋轉(zhuǎn),縮放。綜合以上各點,成功實現(xiàn)了OBJ三角網(wǎng)格文件的讀取及0penGL下的顯示。不同角度下的人體顯示效果如圖9所示: (a) (b) (c) (d) 圖9 不同角度下的人體顯示4完畢語本文給出了一種三位人體模型的重建方法,采用三角面片法構(gòu)建了三維

21、人體外表模型,并把建立的人體模型保存一種標(biāo)準(zhǔn)的3D模型文件OBJ文件。介紹了在Visual C+環(huán)境下的OpenGL編程的接口,利用搭建起來的虛擬環(huán)境,成功實現(xiàn)了三維虛擬人體的真實感顯示,得到了可視化的三維人體模型。本文獲得三維人體模型為后續(xù)虛擬著裝效果展示系統(tǒng)的研發(fā)提供了前提,也可用于游戲開發(fā),虛擬現(xiàn)實等領(lǐng)域,有一定的實用價值。參考文獻(xiàn):常麗霞, *欣. 非接觸三維人體測量技術(shù)在服裝工業(yè)中的應(yīng)用J. 國際紡織導(dǎo)報,2004(4): 76-79.*中啟, *欣, *書云. 基于量身定制的女式裘皮服裝關(guān)鍵技術(shù)探討J.*工業(yè)大學(xué)學(xué)報, 2008,27(1):42-45.徐繼紅. MTM與服裝定制最優(yōu)裁剪方案的研究J. *職業(yè)大學(xué)學(xué)報, 2003, 12(4) :28.舒方法.基于單目視覺的便攜式量體定制系統(tǒng)研究D.:*工程大學(xué),2008.*樹芹.三維虛擬試衣系統(tǒng)中參數(shù)化人體建模技術(shù)的研究D.華中科技大學(xué),碩士,2006.袁夏.三維激光掃描點云數(shù)據(jù)處理及應(yīng)用技術(shù)D.*理工大學(xué),碩士,2006.王蘭美,趙繼成,秦華東. OpenGL及其在VC+開發(fā)環(huán)境下的編程實現(xiàn)J. *理工大學(xué)學(xué)報(自然科學(xué)版),2006,20(4):37-38.Dave Shreiner, Mason Woo, Jackie Neider ,Tom Davis 著,徐波 等譯. OpenGL編程指南

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論