• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      OpenGL導(dǎo)入3DS模型模擬服裝試穿

      2014-06-27 03:19:12祝雙武蘭振華
      西安工程大學(xué)學(xué)報 2014年4期
      關(guān)鍵詞:人體模型曲面紋理

      呂 珍,謝 倩,祝雙武,蘭振華

      (1.西安工程大學(xué) 紡織與材料學(xué)院,陜西 西安 710048; 2.西安工程大學(xué) 服裝與藝術(shù)設(shè)計學(xué)院,陜西 西安 710048; 3.河南省體育彩票管理中心 技術(shù)開發(fā)部,河南 鄭州 450003)

      0 引 言

      目前,基于二維拓?fù)淇臻g的服裝CAD技術(shù)已很普遍且基本成熟并趨于穩(wěn)定.相對于二維服裝CAD而言,三維服裝CAD具有立體、直觀、易操作可提供真實的試衣效果等諸多優(yōu)點.進入21世紀(jì)以來,三維建模技術(shù)飛速發(fā)展,例如袁銘等人提出的一種古建筑三維建模方法[1]為從現(xiàn)實世界獲取數(shù)據(jù)并進一步在計算機世界進行加工建模提供了依據(jù);古文物藝術(shù)造型的數(shù)字化與虛擬展示[2]、定制化人像產(chǎn)品[3]、皮影人物造型[4]等三維模型的研究均為虛擬三維人體模型的進一步發(fā)展奠定了基礎(chǔ).在織物的三維著裝效果展示方面,有的學(xué)者在幾何造型的基礎(chǔ)上,以明暗處理和紋理映射技術(shù)來實現(xiàn)三維著裝效果的真實感;部分學(xué)者在采用光照紋理進一步實現(xiàn)三維著裝效果的真實感的描繪上進行了有益的探索.從產(chǎn)生的圖像方面分析,能夠較真實地反映二維圖像的三維著裝效果[5],但是紋理重復(fù)的均勻性依賴于構(gòu)造服裝模型的數(shù)據(jù),其稀疏不均也會造成紋理分布不勻.

      在利用人臺進行三維服裝展示時,人臺、衣殼曲面的生成是建模的過程,也是三維服裝真實感效果和紋理映射的基礎(chǔ),建模過程為:獲得原始數(shù)據(jù)點并進行預(yù)處理→對數(shù)據(jù)插入,提高精度→構(gòu)造三維模型點云→用Bezier曲面法填充模型[6].

      開發(fā)三維服裝CAD系統(tǒng)最基礎(chǔ)的工作是建立三維人體及服裝模型,而人體和服裝形狀為復(fù)雜的曲面,要對其進行較為精確的測量且獲得全面細(xì)致的數(shù)據(jù)很困難.目前對于人體模型的獲取方法如:王萍等人采用非接觸式三維人體測量儀獲取人體數(shù)據(jù),并用Excel和Spss軟件對數(shù)據(jù)進行分析[7];劉浩翰等人獲得人體的三維數(shù)據(jù)并利用NURBS進行人體幾何造型[8].人體模型的獲取方法通常有兩種:一種是通過采用三維坐標(biāo)測量儀(或同類其他設(shè)備)測得人體三維數(shù)據(jù)為依據(jù),并利用Bezier曲面或B樣條曲面進行人體的擬合;另一種是以大量測得的人體三維數(shù)據(jù)為依據(jù),利用三角面片對人體曲面進行重構(gòu)[9-10].

      本文在分析眾多前人研究的基礎(chǔ)上,找到了一種獲取別人測量數(shù)據(jù)的簡易方法.鑒于3D MAX優(yōu)秀的三維制圖功能且有眾多三維人體模型資源,故可將此類標(biāo)準(zhǔn)人體模型文件內(nèi)的有用人體曲面坐標(biāo)信息提取出來,并利用三角面片對人體曲面進行重構(gòu).

      1 應(yīng)用技術(shù)分析

      1.1 OpenGL技術(shù)和3DS技術(shù)相結(jié)合

      OpenGL (開放性圖形庫,Open Graphic Library),是美國高級圖形和高性能計算機系統(tǒng)公司SGI所開發(fā)的三維圖形標(biāo)準(zhǔn)庫,具有繪制三維圖形的各項功能.以其為基礎(chǔ)開發(fā)的應(yīng)用程序可以方便地在各個平臺間移植,特別是在三維圖形的功能上非常優(yōu)秀[11-12].然而OpenGL的專長并不是建模,因為OpenGL并沒有提供建立三維模型的高級命令,它是通過基本的幾何圖元點、線及多邊形建立三維立體模型.相比而言,利用3D Studio MAX建立三維立體模型則非常容易,但建立的模型缺乏編程性和可控制性,而這正是OpenGL的優(yōu)勢所在.基于此種情況,用3D Studio MAX建立三維立體模型導(dǎo)出為3DS文件,然后將3DS文件導(dǎo)入用Delphi搭建的CAD軟件平臺,可得到任何三維立體模型.

      1.2 3DS的文件結(jié)構(gòu)

      根據(jù)3DS文件格式,利用計算機編程,從3DS文件中提取有用的人體曲面的頂點信息,用于接下來的三維人體曲面建模.

      3DS文件結(jié)構(gòu)由“塊”組成,塊中又有子塊[13].每個塊是一個層次結(jié)構(gòu),3DS文件有一個主塊,ID是0x4D4D,這個塊是3DS文件的開始(可以用它來鑒定該文件是否為一個3DS文件),在開始塊后面是主要塊,主體內(nèi)容為塊數(shù)據(jù)信息.每個3DS文件都包括一個塊ID是“0x4D4D”的基本塊.基本塊是在3DS文件中必須存在的,也可用于檢測一個文件是不是3DS文件,它由ID為“0x3D3D”的編輯塊和ID為“0XB000”的關(guān)鍵幀塊組成.3DS主要的幾個塊的ID及信息,如表1所示.

      表1 3DS模型文件中幾個主要的塊ID及信息

      1.3 3DS文件的讀取

      本文首先把所需塊的ID定義為常量以便后續(xù)使用.

      const

      M3DMAGIC=$4D4D; //文件的開始

      MDATA=$3D3D; //所有目標(biāo)信息

      KFDATA=$B000; //繪制框架,為MDATA定義

      MAT-ENTRY=$AFFF; //材質(zhì)信息開始

      NAMED-OBJECT=$4000; //目標(biāo)的相關(guān)數(shù)據(jù)(點、面…)

      //對于MAT-ENTRY的定義

      MAT-NAME=$A000; //材質(zhì)名稱

      MAT-AMBIENT=$A010; //環(huán)境反射

      MAT-DIFFUSE=$A020; //漫反射

      MAT-SPECULAR=$A030; //鏡面反射

      MAT-SHININESS=$A040; //光源設(shè)定

      MAT-TEXMAP=$A200; //紋理信息

      MAT-MAPNAME=$A300; //材質(zhì)紋理文件名

      N-TRI-OBJECT=$4100; //對于每個目標(biāo)的定義

      POINT-ARRAY=$4110; //對象中定點信息

      FACE-ARRAY=$4120; //對象中三角面信息

      MSH-MAT-GROUP=$4130; //與三角面相關(guān)的材質(zhì)信息

      TEX-VERTS=$4140; //紋理坐標(biāo)

      基于以上所分析的3DS文件的結(jié)構(gòu),本文根據(jù)面向?qū)ο蟮木幊趟枷?設(shè)計了T3DObject類、Tchunk類、TMaterial類、T3DModel類等4類來實現(xiàn)3DS模型的讀取與重建.

      在完成了3DS文件的讀取工作之后,根據(jù)讀入的各個頂點及其法向量,利用大量的三角面片來構(gòu)造出人體和服裝模型.關(guān)鍵算法為:

      glBegin(GL_TRIANGLES);//通過參數(shù)GL-TRIANGLES繪制三角形

      for F:=0 to FaceCount-1 do//將FaceCount所存各三角形頂點繪制,F為三角形個數(shù)

      //頂點的遍歷

      for iVertex:=0 to 2 do//iVertex為每個三角形頂點;訪問三角形三個點

      begin

      PointIndex:=Faces[F].VertIndex[iVertex];//找到每個點的索引號

      glNormal3f(Normals[PointIndex].X,Normals[PointIndex].Y, Normals[PointIndex].Z);

      //設(shè)置三角面的法向量,為畫三角形準(zhǔn)備

      glVertex3f(Verts[PointIndex].X, Verts[PointIndex].Y, Verts[PointIndex].Z);

      //設(shè)置三角形其中一個頂點的坐標(biāo)

      end;

      glEnd;

      2 對三維模型進行交互控制

      3DS的特長是三維建模,OpenGL的優(yōu)勢則在于對三維模型進行交互控制和變化.根據(jù)三維圖形的幾何變換理論,OpenGL提供對三維對象在三維空間進行變化的庫函數(shù)[14].

      當(dāng)矩陣初始化glLoadIdentity()后,調(diào)用OpenGL提供的glTranslatef()函數(shù)作視點變換.Void glTranslate{f,d}(TYPE x,TYPE y,TYPE z),函數(shù)參數(shù)(x,y,z)表示視點在視點坐標(biāo)系中移動的位置.根據(jù)三維圖形的幾何變換理論,OpenGL提供對三維對象進行空間變化的庫函數(shù).由參數(shù)x,y,z定義了一個矩陣,該矩陣與當(dāng)前矩陣相乘,這樣的結(jié)果使物體在3個坐標(biāo)軸上發(fā)生平移,平移的距離大小為x,y,z(或以相同的量移動局部坐標(biāo)系).

      當(dāng)前矩陣乘以某一個矩陣,該矩陣使得一個物體(或局部坐標(biāo)系)繞一條從原點到點(x,y,z)的線,沿逆時針方向旋轉(zhuǎn).參數(shù)angle給出旋轉(zhuǎn)的角度值,旋轉(zhuǎn)函數(shù)為:Void glRotate{f,d}(TYPE angle,TYPE x,TYPE y,TYPE z);

      函數(shù)Void glScale{f,d}(TYPE x,TYPE y,TYPE z)定義了一個矩陣,與當(dāng)前矩陣相乘,使得物體沿坐標(biāo)軸拉伸、縮短以及相對于坐標(biāo)軸做鏡面反射.

      這些函數(shù)可以使得到的三維人體模型在三維空間中作任意的變化,方便于服裝設(shè)計者從多個角度來觀察人體,如圖1所示.

      圖1 不同角度觀察服裝人體模型

      3 利用紋理映射技術(shù)模擬不同面料

      紋理分為顏色紋理和幾何紋理兩種類型.生成顏色紋理的一般方法是在平面區(qū)域(即紋理空間)上預(yù)定義紋理圖案,然后建立物體表面的點與紋理空間的點的對應(yīng)關(guān)系(即映射).當(dāng)物體表面的可見點確定以后,以紋理空間的對應(yīng)點的值乘以亮度值,就可以把紋理圖案附著在物體表面.也可以用類似的方法讓物體表面產(chǎn)生凹凸不平的凸包紋理.不過這時的紋理作用在法向量上,而不是作用于顏色亮度.在織物所形成的服裝表面,應(yīng)該說兩種紋理都存在,但是顏色紋理占主要地位.

      在紡織品中,大多織物具有印花圖案或織物紋理.只有把這種印花圖案和織物紋理模擬出來,才能更好地體現(xiàn)織物的性質(zhì)和穿著效果.可以通過紋理映射技術(shù)將織物圖案映射到服裝模型的表面,由此可以實現(xiàn)任意更換面料的目的,達到織物三維著裝的仿真效果.

      理論上,紋理映射的計算過程如下:(1)紋理圖像的選取與預(yù)處理;(2)紋理映射三維曲面的建模;(3)確定紋理映射的方法和對應(yīng)關(guān)系,包括反走樣處理;(4)二維圖像向三維曲面映射;(5)透視變換顯示.

      在服裝曲面上實現(xiàn)圖案紋理效果,實質(zhì)上就是織物圖案在物體表面上的映射.首先根據(jù)紋理圖案和物體的邊界定義,確定一個映射函數(shù),然后使用逆向映射將圖案映射到服裝曲面空間.先將紋理圖案空間點通過投影逆變換成服裝曲面上的點,參數(shù)化成實際坐標(biāo)(x,y,z),再利用映射函數(shù)求出相應(yīng)的紋理元素的光亮度值作為該圖像元素的明暗值,這實際上是一個坐標(biāo)轉(zhuǎn)化的過程.

      要實現(xiàn)不同面料在服裝上的模擬,只需將各種面料作為紋理圖案映射到服裝曲面上.在程序中進行服裝曲面的三角面片模擬之前用OpenGL所提供的紋理映射函數(shù)綁定所選定的面料圖片作為紋理圖案,即可實現(xiàn)同一服裝的不同面料的模擬效果,具體效果如圖2所示.

      圖2 不同面料展示模擬

      4 結(jié)束語

      本文將3D Studio MAX技術(shù)、OpenGL軟件與Delphi語言結(jié)合起來,兼用三者之長,將從3DS中提取的人體數(shù)據(jù)模型導(dǎo)入Delphi中,進一步將人體與服裝結(jié)合達到量體裁衣的目的,對于特殊群體通過建立人體模型也可得出適合其體型的服裝,最終在OpenGL中展示著裝效果.整個建模過程無需繁瑣的手工繪制及大量計算,更加智能化地從多角度觀察不同材質(zhì)的著裝效果.該方法不僅可以應(yīng)用在服裝CAD方面,還可以應(yīng)用到系統(tǒng)仿真、產(chǎn)品設(shè)計、工程分析、虛擬現(xiàn)實、大型游戲開發(fā)過程中的場景設(shè)計以及科學(xué)計算的可視化等各個方面.

      參考文獻:

      [1] 袁銘,王建輝,周醉,等.一種古建筑三維建模方法——以蘇州虎丘塔為例[J].蘇州科技學(xué)院學(xué)報:工程技術(shù)版,2009,22(1):43-47.

      [2] 張靜,許潔.古文物藝術(shù)造型的數(shù)字化與虛擬展示[J].西安工程大學(xué)學(xué)報,2011,25(6):835-837.

      [3] 王名亮.定制化人像產(chǎn)品三維建模知識庫技術(shù)研究及應(yīng)用[D].重慶:重慶大學(xué),2013.

      [4] 單超杰.皮影人物造型與三維建模技術(shù)結(jié)合的創(chuàng)新研究[D].上海:東華大學(xué),2013.

      [5] 張瑞云.用紋理映射技術(shù)實現(xiàn)三維著裝效果展示[J].中國紡織大學(xué)學(xué)報,2000(4):53-56.

      [6] 吳夢熊,胡建鵬,耿兆豐,等.紋理映射技術(shù)在三維虛擬服裝模擬中的應(yīng)用與實現(xiàn)[J].東華大學(xué)學(xué)報:自然科學(xué)版,2008,34(4):445-448.

      [7] 王萍,張秀.基于三維人體測量的蘇南地區(qū)青年女性體型特征[J].西安工程大學(xué)學(xué)報,2012,26(3):313-316.

      [8] 劉浩翰,唐好選.人體的幾何造型[J]. 中國民航學(xué)院學(xué)報,2003,21(增刊2):173-175.

      [9] 李勇,胡敏,付小莉.三維人體建模方法的研究[J].紡織學(xué)報,2002,23(5):80-82.

      [10] 馮毅力,李汝勤.人體模型的三維數(shù)據(jù)拾取和服裝曲面的生成[J].紡織學(xué)報,2004,25(6):47-48.

      [11] 楊東梅,朱勝緣,路偉成,等.OpenGL與3D Studio MAX結(jié)合實現(xiàn)三維仿真[J].應(yīng)用科技,2004,31(2):33-35.

      [12] WOO Mason,NEIDERF J,DAVIS Tom,et al.OpenGL編程權(quán)威指南[M].吳文武,段海波,薛風(fēng)武,譯.2版.北京:中國電力出版社,2001:1-2.

      [13] 和平鴿工作室.OpenGL高級編程與可視化系統(tǒng)開發(fā)[M].北京:中國水利水電出版社,2003:74-81.

      [14] FRANCIS S Hill J R,STEPHEN M Kelley.計算機圖形學(xué)(OpenGL版)(影印版)[M].胡事民,劉利利,劉永進,等譯.北京出版社,2010:258-277.

      猜你喜歡
      人體模型曲面紋理
      基于BM3D的復(fù)雜紋理區(qū)域圖像去噪
      軟件(2020年3期)2020-04-20 01:45:18
      相交移動超曲面的亞純映射的唯一性
      使用紋理疊加添加藝術(shù)畫特效
      圓環(huán)上的覆蓋曲面不等式及其應(yīng)用
      TEXTURE ON TEXTURE質(zhì)地上的紋理
      Coco薇(2017年8期)2017-08-03 15:23:38
      基于曲面展開的自由曲面網(wǎng)格劃分
      消除凹凸紋理有妙招!
      Coco薇(2015年5期)2016-03-29 23:22:15
      基于乘員體型的車輛安全性研究
      汽車文摘(2015年11期)2015-12-14 19:10:11
      Family makes 45—foot icicle in front yard
      體驗創(chuàng)新:3D人體掃描儀測三圍
      桐乡市| 南安市| 静乐县| 乃东县| 阜新| 云霄县| 湘潭县| 万荣县| 井陉县| 冷水江市| 西平县| 黔江区| 峨边| 千阳县| 古交市| 呼玛县| 石河子市| 宜兰县| 阳山县| 布尔津县| 合水县| 务川| 佛山市| 八宿县| 胶州市| 闽清县| 大足县| 广宁县| 桃江县| 吉安市| 枣阳市| 荥经县| 马鞍山市| 福鼎市| 峨山| 汉寿县| 高台县| 上犹县| 陵川县| 乃东县| 五指山市|