一種任意人頭與任意人體的3d結合方法
【專利摘要】本發(fā)明涉及三維人體建?!炯夹g領域】,具體的說是一種任意人頭與任意人體的3D結合方法,步驟1:在三維建模軟件中導出任意三維人頭模型文件和任意三維人體模型文件,采用OBJ文件格式,通過解析模塊對OBJ文件格式進行解析,獲取任意三維人頭/人體模型的參數(shù);步驟2:對結合處的頂點參數(shù)逐一進行命名,建立選取點的索引;步驟3:根據(jù)步驟2中得到的索引,定位至待結合的頂點參數(shù)的對應坐標,一一進行重合,即完成任意三維人頭與任意三維人體模型的3D結合。本發(fā)明提供的方法,通過利用OBJ文件格式的文本優(yōu)勢,提取人體模型的頂點參數(shù)速度快;利用插值計算法獲得了變形函數(shù)公式,實現(xiàn)輸入任意人頭和任意人體進行結合。
【專利說明】一種任意人頭與任意人體的3D結合方法
[【技術領域】]
[0001]本發(fā)明涉及三維人體建?!炯夹g領域】,具體的說是一種任意人頭與任意人體的3D
結合方法。
[【背景技術】]
[0002]隨著虛擬現(xiàn)實技術的發(fā)展,虛擬人在工程領域的應用越來越廣泛,但是虛擬人模型的實時性和逼真性之間的矛盾一直是虛擬人應用中亟待解決的問題。
[0003]總結現(xiàn)有三維人體還原技術,主要方法如下:
[0004](I)在3維軟件中建立人體模型
[0005](2)掃描人體建模方式
[0006]方法(I)雖然可以很高的還原但制作太麻煩需要大量時間和成本方法,而(2)雖然精確速度快但成本高,操作難。
[
【發(fā)明內容】
]
[0007]本發(fā)明的目的在現(xiàn)有技術的基礎上進行改進,提供一種可以輸入任意人頭和人體進行結合的方法。
[0008]本發(fā)明的任意人頭與任意人體的3D結合方法,通過以下技術方案實現(xiàn),由解析標準三維人頭和人體模型文件和人頭人體進行結合來實現(xiàn),包含以下步驟:
[0009]步驟1:在三維建模軟件中導出任意三維人頭模型文件和任意三維人體模型文件,所述三維人頭模型文件和三維人體模型文件采用OBJ文件格式,通過解析模塊對OBJ文件格式進行解析,獲取任意三維人頭/人體模型的參數(shù);
[0010]導出前手動調整三維人頭模型與三維人體模型的中心點歸0,即x:0,y:不變,
z:0o
[0011 ] OBJ文件有的有上萬行信息,所述OBJ文件格式以純文本形式存儲三維人頭/人體模型的頂點、法線和紋理坐標和材質使用信息,OBJ文件格式中:
[0012]V表示指定的一個頂點,此前綴后跟著3個單精度浮點數(shù),分別表示該點的X、y、z軸坐標;
[0013]Vt表示指定的一個紋理坐標,此前綴后跟著2個單精度浮點數(shù),分別表示此紋理坐標的U、V值;
[0014]vn表示指定的一個法線向量,此前綴后跟著3個單精度浮點數(shù),分別表示此法線向量的X、1、Z軸坐標;
[0015]f表示指定的一個表面,即一個三角形圖元。
[0016]為了方便和效率我們用軟件的方式一行一行的解析。解析步驟如下:所述解析模塊將OBJ文件格式用寫字板打開,所述人頭/人體參數(shù)以若干行顯示,用正則表達式進行批量讀取,逐行提取OBJ文件格式中的人頭/人體參數(shù),所述人頭/人體參數(shù)包括頂點參數(shù)V,面參數(shù)f,uv參數(shù)vt,法線參數(shù)vn,再根據(jù)JS代碼得到頂點信息。[0017]所述正則表達式用于批量讀取頂點參數(shù),正則表達式,又稱正規(guī)表示法、常規(guī)表示法正則表達式使用單個字符串來描述、匹配一系列符合某個句法規(guī)則的字符串,得到如下表達式:
【權利要求】
1.一種任意人頭與任意人體的3D結合方法,其特征在于:所述方法由解析標準三維人頭和人體模型文件和人頭人體進行結合來實現(xiàn),包含以下步驟, (1)步驟1:在三維建模軟件中導出任意三維人頭模型文件和任意三維人體模型文件,所述三維人頭模型文件和三維人體模型文件采用OBJ文件格式,通過解析模塊對OBJ文件格式進行解析,獲取任意三維人頭/人體模型的參數(shù); (2)步驟2:在三維建模軟件中手動選取三維人頭模型和是三維人體模型結合處的頂點參數(shù)逐一進行命名,建立選取點的索引,所述索引與結合處頂點參數(shù)的X、1、Z軸坐標--對應; (3)步驟3:根據(jù)步驟2中得到的索引,定位至待結合的頂點參數(shù)的對應坐標,并將三維人頭模型和三維人體模型結合處對應的頂點一一進行重合,即完成任意三維人頭與任意三維人體模型的3D結合。
2.如權利要求1所述的一種任意人頭與任意人體的3D結合方法,其特征在于:導出前手動調整三維人頭模型與三維人體模型的中心點歸0,即x:0,y:不變,z:0o
3.如權利要求1所述的一種任意人頭與任意人體的3D結合方法,其特征在于:所述OBJ文件格式以純文本形式存儲人頭/人體參數(shù),包括三維人頭/人體模型的頂點、法線和紋理坐標和材質使用信息,解析步驟如下:所述解析模塊將OBJ文件格式用寫字板打開,所述人頭/人體參數(shù)以若干行顯示,用正則表達式進行批量讀取,逐行提取OBJ文件格式中的人頭/人體參數(shù),所述人頭/人體參數(shù)包括頂點參數(shù)V,面參數(shù)f,uv參數(shù)Vt,法線參數(shù)vn,再根據(jù)JS代碼得到頂點信息。
4.如權利要求3所述的一種任意人頭與任意人體的3D結合方法,其特征在于:0BJ文件格式: V表示指定的一個頂點,此前綴后跟著3`個單精度浮點數(shù),分別表示該點的x、y、z軸坐標; Vt表示指定的一個紋理坐標,此前綴后跟著2個單精度浮點數(shù),分別表示此紋理坐標的U、V值; vn表示指定的一個法線向量,此前綴后跟著3個單精度浮點數(shù),分別表示此法線向量的X、Y、Z軸坐標; f表示指定的一個表面,即一個三角形圖元。
5.如權利要求3所述的一種任意人頭與任意人體的3D結合方法,其特征在于:所述JS代石馬為 resultl=vertex_pattern.exec (line);其中 resultl 為頂點;vertex_pattern 為頂點正則表達式;line為要解析的行。
6.如權利要求3所述的一種任意人頭與任意人體的3D結合方法,其特征在于:所述正則表達式用于批量讀取頂點參數(shù),所述正則表達式表達式如下: Var vertex_pattern*/v(+[\d|\_|\+|\_|e]+) (+ [\d \_|\+|\_|e]+)(+[\dI\_I\+I\_Ie]+)/;//vn float float float Var normal_pattern*/vn(+[\dI\_I\+I\-1e]+) (+[\d|\_|\+|\-|e]+)(+[\dI\_I\+I\_Ie]+)/;//vt float float float Var uv_pattern*/vt(+[\d|\」\+|\-|e]+) (+[\d|\_|\+|\-|e]+)/;//f vertexvertex vertexVar face-patternl*f(+\d+)(+\d+)(+\d+)(+\d+)(+\d+)?/。
【文檔編號】G06T13/40GK103700129SQ201410007532
【公開日】2014年4月2日 申請日期:2014年1月8日 優(yōu)先權日:2014年1月8日
【發(fā)明者】徐小明, 徐宇, 夏敏 申請人:上海明穆電子科技有限公司