張 鶴,徐承志
(湖北工業(yè)大學計算機學院,湖北 武漢430068)
由于Virtools不是三維模型制作軟件,模型從3ds Max導入到Virtools時可能會出現(xiàn)不被識別的特征屬性等問題[1]。當模型中部分信息不被Virtools支持,那么在輸出時,編譯器將根據(jù)自己的編譯辦法,對相應的信息進行轉(zhuǎn)化,其中格式和特征的本質(zhì)發(fā)生了變化,但是保留了模型在視覺等方面的感覺特征。
本文作者參與國家級大學生創(chuàng)新創(chuàng)業(yè)項目——“基于虛擬校園的軟件生態(tài)系統(tǒng)研究”。由于項目需要,作者根據(jù)所在學校實際校園環(huán)境,在3ds Max中創(chuàng)建虛擬校園模型作為Virtools場景模型。在建模和使用Virtools軟件過程中,通過不斷地學習與實踐,總結(jié)出一些3ds Max靜態(tài)模型導入Virtools后出現(xiàn)的常見問題及解決辦法。
插件是一種十分常見的技術,插件結(jié)構有利于編寫有良好的擴充和定制功能的應用程序[2]。3ds Max默認的安裝程序沒有導出Virtools支持格式文件的插件,因此需安裝第三方導出插件。
3ds Max中的場景模型導出成Virtools支持的格式即.nmo文件,需要下載 Max To Virtools插件。其中.nmo文件是Virtools默認的用于存儲角色和場景以及物體等信息的文件格式,其中包含了一個或者多個單元信息[3]。自2012版本后,達索公司不再發(fā)布導出插件,目前網(wǎng)上下載到的最新版本是 Max To Virtools 5.0.0.134,最高版本只支持2012的Max版本。
由于2013或2014版本Max制作的靜態(tài)模型可以在低版本Max中打開,制作的動畫則不能在低版本中打開。因此,高版本制作的靜態(tài)模型可以通過2012及以下版本導出成nmo格式。
3ds Max模型在導出成nmo格式時,會顯示一個輸出參數(shù)表,在此主要介紹導出靜態(tài)模型的參數(shù)設置(表1)。
表1 導出插件參數(shù)
根據(jù)產(chǎn)品對模型的要求,在建模時要采用相應的建模標準,這樣不僅能減少模型導出時出現(xiàn)的錯誤,模型的質(zhì)量也能得到很好的控制。
3ds Max模型在導入Virtools后,通常比例與要求不符,會在Virtools中自動進行縮放操作,運行時經(jīng)常遇到異?,F(xiàn)象,即場景中模型的各個部分有時并不按照規(guī)定的尺寸進行縮放。
在三維軟件中制作一個較大或較為復雜的場景時,如果在一個3ds Max文件中直接導出,會出現(xiàn)“應用程序錯誤”。更為復雜的大場面則需要多人協(xié)同完成。然而一些人建模時沒有在意模型的尺寸,因此在整合場景的時候,還需要調(diào)整每個物體的尺寸比例。
建議建模前先測量好物體的尺寸,由于Virtools中模型單位為m,將3ds Max的系統(tǒng)單位統(tǒng)一設置為m,場景合并時就不需要進行放縮操作了,自然不會出現(xiàn)相關的問題。
一般模型的頂點數(shù)太多,常常出現(xiàn)的問題一個是在導出時出現(xiàn)“應用程序錯誤”,另一個是導入到Virtools后造成程序運行慢,下面用一個實例來說明:
新建一個由多個立方體組成的模型,改變立方體的數(shù)量和分段數(shù),觀察導出效果(表2)。實驗電腦配置:操作系統(tǒng),Windows7;CPU,AMD A4-3300MAPU with Radeon (tm)HD Graphics;內(nèi)存,4GB。表2中的數(shù)據(jù)是模型文件大小,單位是MB。其中,帶括號的數(shù)據(jù)表示模型導出報錯,“-”表示模型保存報錯。當模型中立方體分段數(shù)不變,立方體數(shù)量增加時,文件大小增加,當達到一定大小時,出現(xiàn)保存出錯情況;當立方體的數(shù)量不變,立方體的分段數(shù)增加時,文件大小增加,當達到一定大小時,導出報錯。通過綜合比較得出:3ds Max模型在導出時出現(xiàn)"應用程序錯誤"與模型的大小及頂點數(shù)有關。
表2 應用程序錯誤實例數(shù)據(jù)
制作3ds Max模型時,在確保形體準確且達到要求的前提下,頂點數(shù)越少越好。盡量用最少的線來確保模型的基本形態(tài)和特征[4]。在建模時需要養(yǎng)成一個好的習慣,同時參考一些優(yōu)秀的模型。具體模型優(yōu)化,可以從簡化模型和提高渲染速度[5]進行優(yōu)化。利用3ds Max新功能建模,用算法簡化模型,簡化紋理處理。3ds Max場景模型太大,導出時會出現(xiàn)錯誤,可以采用場景分塊技術,把一個復雜的場景劃分成多個子場景分別導出,最后在Virtools中加載。
燈光是舞臺的生命[6],同樣每一個3D場景都少不了燈光,燈光在場景中不僅起到了照明的作用,而且決定了場景的基調(diào)和氣氛。相比于Virtools中只有三種燈光類型,3ds Max中燈光種類和參數(shù)更多,燈光搭配也更復雜。
Virtools中有三種光源:點光源是理想化為質(zhì)點的向四面八方發(fā)出光線的光源,為最常使用的光源種類;聚光燈有注視的放射光,適合突出局部部位的照明;平行光為全場景照明的方向性光源,無法設置衰減效果。
3ds Max中創(chuàng)建的燈光在導入Virtools后燈光類型會發(fā)生相應的轉(zhuǎn)變(表3)。
表3 燈光類型變化表
3ds Max中模型受光與燈光照射方向有關,在Virtools中除了平行光(Directional)與方向有關,點光源(Point)和聚光燈(Spot)都有照射距離限制,最大照射距離為200m。
如圖1,在3ds Max中,沿著建筑物四周打上12盞聚光燈,調(diào)整燈光到物體的距離以及角度,距離主要取值150m,198m,200m,202m,250m,角度取值-45°,0°,45°,90°,以.nmo文件的形式輸出,導入Virtools,觀察單個燈光照射時模型效果。根據(jù)效果最后得出:當距離超過200m時,物體變黑,模型沒有受光。通過同樣的方式,得出點光源(Point)效果也是如此,而平行光(Directional)在方向確定后,模型在燈光方向上的受光面都能被照亮。
因此,在3ds Max中非平行光源到模型之間距離超過200m,導入到Virtools后,會出現(xiàn)物體變黑,不受光現(xiàn)象。此時燈光參數(shù)調(diào)節(jié)失去作用。建議遇到這種情況,一種方法是把燈光類型改成平行光(Directional),第二種方法是調(diào)整模型或燈光的實際坐標,使燈光與模型之間的距離控制在200m以內(nèi)。
圖1 燈光照射范圍實驗
3ds Max中已經(jīng)賦好材質(zhì)的模型在導入Virtools后常常出現(xiàn)變黑、材質(zhì)顯示不完全等現(xiàn)象。由于兩個軟件系統(tǒng)之間的差異性,造成一些模型效果不一樣。那么在制作模型之前,則需要了解產(chǎn)生的原因。
模型在3ds Max中,材質(zhì)顯示正常,在導入到Virtools后,材質(zhì)呈黑色。
解決辦法:在virtools中首先檢查燈光,燈光與模型的距離不能超過200m,點擊show light,燈光便會顯示,黑色的圈表示燈光的范圍(圖2),要保證模型在燈光的照明范圍內(nèi)。第二檢查模型材質(zhì)(圖3),漫反射(Diffuse)顏色以及所使用貼圖為黑色,模型也會呈黑色。第三檢查插件參數(shù)設置,詳述在1.2節(jié)。最后檢查模型,詳述在本文4.2節(jié)。
圖2 Virtools燈光顯示設置
圖3 Virtools材質(zhì)屬性面板
對于材質(zhì)和紋理,輸出后,Virtools并不支持雙重材質(zhì)的導入。并且,Virtools只支持3ds Max中的標準材質(zhì),在導入Virtools后就會出現(xiàn)材質(zhì)只顯示部分或完全呈黑色。
3ds Max模型材質(zhì)賦貼圖需要模型具有貼圖坐標,一般模型貼圖有自己的貼圖坐標。貼圖坐標也可以使用UVW展開編輯,同時利用展開的UV貼圖,能繪制和制作更多需要的貼圖。有時根據(jù)項目需要,不能利用UV制作貼圖,而模型又需要賦多種材質(zhì),此時在模型輸出之前需要對材質(zhì)進行烘焙。所謂烘焙,就是一種把Max光照信息渲染成貼圖的方式,而后把這個烘焙后的貼圖再貼回到場景中去的技術。
如圖4所示,在3ds Max創(chuàng)建一個簡易飛機模型。烘焙之前,先展開模型UV貼圖(圖5),把飛機機身,機翼等不同部位展開,再繪制貼圖,繪制好后賦給飛機,調(diào)整材質(zhì)參數(shù),在場景中打上燈光,進行烘焙,這樣就得到了模型的最終貼圖。
圖4 飛機模型俯視圖
圖5 飛機UV展開圖
Max模型導入到Virtools后,材質(zhì)紋理丟失,可以在Virtools中把貼圖加載進來。圖6中,模型wuding的貼圖“瓦”如果沒有導入進來,則需在Textures把貼圖“瓦”直接拖進來。之后右鍵材質(zhì)wuding,即圖7,在下拉列表中選中貼圖“瓦”,則材質(zhì)上賦好貼圖了。最后右鍵網(wǎng)格wuding_Mesh中“Setup”,即圖8,在 Channels中右鍵“Add Channel”,下拉列表選擇材質(zhì)wuding。模型wuding紋理便加載完成了。
圖6 紋理組件面板
圖7 材質(zhì)設置面板
圖8 材質(zhì)通道添加面板
綜上,在制作Virtools場景模型時,3ds Max版本盡量選擇2012版本。模型盡量優(yōu)化。由于Virtools中燈光距離限制,在3ds Max布局燈光時可以根據(jù)場景大小來選擇燈光類型,一般的燈光打法可以使用常見的三點光源法[7]。材質(zhì)使用標準材質(zhì),貼圖盡量烘焙。
通過在3ds Max中制作模型過程中遇到的問題得出的經(jīng)驗,用具體的數(shù)據(jù)分析了模型導入到Virtools中出現(xiàn)的問題及解決辦法。有些方法還需要改進,一些具體的細節(jié)可以查閱相關資料。總之,在制作Virtools場景模型過程中,要不斷地學習和實踐來總結(jié)經(jīng)驗。在模型的優(yōu)化上還需要進一步探究,建出更加符合要求的模型。
[1] 孫 倩.基于3DS MAX的三維建模及其在Virtools環(huán)境中的應用[J].中國科技信息,2008(06):241-243.
[2] 李延春.軟件插件技術的原理與實現(xiàn)[J].計算機系統(tǒng)應用,2003(07):41-44.
[3] 王 方,王 崢.3ds Max模型及動畫輸出為 Virtools格式的方法[J].現(xiàn)代電影技術,2007(10):94-95.
[4] 劉婧婧.3ds Max模型與動畫導入Virtools時遇到的問題以及解決方法[J].現(xiàn)代電影技術,2010(07):49-54.
[5] 趙 玲.基于3DMAX的模型優(yōu)化的研究[J].科學技術與工程,2010(09):6 565-6 568.
[6] 王士軍.淺談燈光藝術的作用[J].文化時空,2002(08):90.
[7] 雷兆云.照明語言與技法[M].北京:中國傳媒大學出版社,2009.