梁海 吳國文等
摘 要:敘述了使用3dsmax進行地理建模的比較具體的方法和過程,介紹了各種地理模型的實現(xiàn)方法,各種模型優(yōu)化的方法通用方法。
關(guān)鍵詞:3dsmax;地理模型;建模;優(yōu)化
本論文是黑龍江省教育廳十二五課題《基于vrml的虛擬實驗室研究(9388)》的成果部分,課題組成員為:梁海、吳國文、田志德、周亞林、張海波。
任何實體對象,無論是簡單的,還是復(fù)雜的,都是由無數(shù)的多邊形組成,正是以多邊形為基本圖元建立模型單元的。有了這些基本的三維模型,就可以根據(jù)實際需要建立復(fù)雜的實體模型。此外,通過適當(dāng)?shù)男薷?、縮放等操作,使模型具有可延續(xù)使用性和可擴充性,便于不同對象實體的嫁接組合。
對于簡單物體,按照所確定的模型層次結(jié)構(gòu)和相關(guān)數(shù)據(jù),調(diào)整好合適的比例,在建模過程中盡可能減少使用的多邊形的數(shù)量。使用最少的多邊形獲取相同的真實感,在不影響外觀效果的情況下,可以大大地提升實時繪制速度,提高瀏覽幀率。對于復(fù)雜物體,需要綜合3ds Max等共同創(chuàng)建。首先,提取CAD圖紙中相關(guān)建筑物的平面輪廓線,結(jié)合實地測量的數(shù)據(jù)將輪廓線修整完善,保存為.DWG格式文件。然后,將此格式的文件導(dǎo)入3ds Max中作為模型的外輪廓拉伸基準(zhǔn)并以此建立復(fù)雜物體的模型。完成后,貼上紋理圖片,增加適當(dāng)?shù)墓庠凑彰饕灶A(yù)覽所建模型是否已經(jīng)達到預(yù)期效果,保存為*.3DS格式文件。最后利用PolyTrans插件將*.3DS格式的文件轉(zhuǎn)換為* .jpt(OpenFlight)格式文件,就可以在Multigen Creator中順利打開模型文件了。
但是,在用PolyTrans插件進行格式轉(zhuǎn)換的過程中,會導(dǎo)致部分面的破裂與缺失,所以,用Creator打開OpenFlight格式的模型后,還需要進行面的修補、合并等一系列整理工作。即便如此,通過插件將AutoCAD、3ds Max結(jié)合建模的方法在目前仍然是Creator建模中處理復(fù)雜模型的最有效途徑,也極大地提高了建模效率。
一、地形模型建立
3ds Max中有專門的地形建模工具,通過該工具建立模型,能夠有更大的主動性、靈活性,創(chuàng)建的模型具有更好表現(xiàn)能力。在3dsmax中建立地形模型,可以利用CAD軟件建立等高線數(shù)據(jù)文件、也可以直接使用地形工具自己建立,下面介紹一下直接使用地形工具建模方法:1、在前視圖創(chuàng)建輪廓線,注意一定要是封閉的。2、使用“選擇并移動”工具在左視圖中移動這幾條封閉曲線的位置,使得最小的封閉曲線在最上面,最大的封閉曲線在最下面,以此類推。3、單擊“標(biāo)準(zhǔn)基本體”右側(cè)的小按鈕,并選擇“復(fù)合對象”進入到“復(fù)合對象”面板;4、選擇最下面的一條曲線,然后單擊“地形工具”,這時就會創(chuàng)建一個平面的地形;5、在下面的面板中單擊拾取對象按鈕,并在左視圖中從低到高依次單擊封閉曲線,此時就會形成地形的造型;6、如果覺得形狀不妥,可以進入修改面板進行詳細修改;7、可以繼續(xù)為已建立的模型添加其它修改器從而形成更好的地形效果。
二、樹木的建立
樹木的建立,是模擬逼真場景環(huán)境的重要環(huán)節(jié)。一方面,Creator對復(fù)雜模型的建模能力有限,強接建立樹術(shù)是一項很難辦到的事情。另一方面,利用3dsMax的SpeedTree捅件建立好樹術(shù)模型后,一顆樹的面片數(shù)豢通常都在萬個以上,導(dǎo)入Creator中,會極大地影響實對繪制效率。所以,在Creator串建立樹木模型,必須借助更為有效的方法。OpenGL中十字相交法和Billboard法可以很好地解決樹木問題,Creator也提供了對上述兩種方法的支持,所以樹術(shù)的創(chuàng)建樹木模型的問題也迎刃而解。
十字交叉法,是用兩個十字交叉面來構(gòu)造樹木模型,在互相垂直的平面上,分別映射相同的樹木透明貼圖紋理,利用人的視野有角度局限性這一原理,使人感覺在不同角度總可以看到相同樹的圖像。由于此方法只用了兩個多邊形,所以建立的樹木模型只有四個面,計算量被大大削減、提高了場景顯示速度。Billboard法也稱為公告牌技術(shù),采用一個多邊形面模擬樹木,當(dāng)視點改變時,此多邊形會繞指定的軸旋轉(zhuǎn)從而保證始終面向觀察者方向。只要時刻保持二維紋理樹木圖像的法線矢量指向觀察者,就可以造成一種能夠使觀察者滿意的三維樹木的假象,可以很好地解決樹木的建立問題。
Creator中的紋理映射方式有多種,包括三點映射、四點映射、表面映射、球形映射,柱形映射、地學(xué)紋理映射、環(huán)境貼圖映射共七種映射方式,可適應(yīng)不同的紋理需要剛。校園場景中一般都是規(guī)則物體模型,為了驅(qū)動時能有效地顯示出來,需要將處理好的紋理圖片用三點映射方式粘貼,而選擇其它方式可能導(dǎo)致紋理不能正常顯示。
完成對場景中的單體建模后,為了生成校園整體三維場景,再對單個模型按空間位置進行有序的集成。場景實體模型的構(gòu)建是按照場景層次結(jié)構(gòu)的劃分進行的,各層次實體構(gòu)建完后需要進行組合集成,最終形成虛擬場景的整體模型。
對場景模型本身而言,如果只為了增加真實感,與真實景觀相對應(yīng)的實體建模應(yīng)該充分詳細,但這樣不僅大大增加了工作量,而且一旦場景中的多邊形數(shù)達到一定數(shù)量,視景的實時繪制輸出將難以實現(xiàn)。為了達到場景真實感與實時性的平衡,必須對場景模型進行適當(dāng)?shù)膬?yōu)化,其主要目的就是為了提高系統(tǒng)場景的實時性、在不顯著影響視景效果的前提下減少系統(tǒng)繪制的多邊形數(shù)目、提高圖形繪制的幀速。對校園模型的優(yōu)化和模型數(shù)據(jù)庫的優(yōu)化主要包括以下操作。
三、模型的優(yōu)化
1、去除冗余面
冗余面是指那些不可見面。例如,樓體的底面、內(nèi)墻面及樓層面閥的連接面等,由于場景瀏覽時,它們處于不可見位置,有無都不影響整體效果。在這種情況下,需要消除這些冗余的多邊形面,降低整個場景的復(fù)雜度。
2、三角面片合
模型導(dǎo)入時,重新計算處理,將所有的非三角形轉(zhuǎn)化成了三角形,這就增加了面的數(shù)量,影響了顯示效率,由此涉及到三角面片的合并問題。
3、紋理映射代替實體建模
對于門、窗、欄桿等細節(jié)部分,采取紋理映射的方法代替建模,即在對應(yīng)位置的多邊形面上“貼”上相應(yīng)的紋理圖片來代替詳細模型。紋理映射的意義可以簡單歸納為:用圖像來替代實體模型中的可模擬或不可模擬的細節(jié),提高模型逼真度和圖形顯示速度。
4、外部引用和實例化工具
利用外部模型引用工具可以在模型中引用外部的模型文件,而沒有必要將模型添加到自己的模型數(shù)據(jù)庫中,從而減小了模型的大小。它的本質(zhì)是一個指向要引用模型的指針。
當(dāng)三維復(fù)雜模型中許多幾何形狀相同但是位置不同的物體,考慮采用實例化(Instance)工具。如將一根柱子實例化后,復(fù)制到其他柱子的位置,再刪掉原來的即可。
5、使用交換矩陣
變換矩陣工具對于“一次性變換一系列物體對象”是很有用的,它可以避免對單個對象重復(fù)使用坐標(biāo)計算,提高模型運行的效率。變換矩陣是一個4x4的矩陣,用于計算相對于原來位置或方向的變換數(shù)值。當(dāng)整個模型發(fā)生改變后,變換矩陣會自動更新,以保證參與矩陣變換的節(jié)點相對于其父節(jié)點位置的正確性。
6、畫面閃爍問題的解決
當(dāng)兩個多邊形共用一條邊時,其中一個多邊形的項點就落在了另一個多邊形的一條邊上,而對這條邊來說,這個點卻是不存在的,這就是點在線上的情況?!?/p>