摘 要: 根據(jù)視景仿真" title="視景仿真">視景仿真對建模的要求和特點,論述了如何利用專業(yè)實時三維建模軟件MultiGen Creator構建大規(guī)模地形和對象模型,以及使用MultiGen Creator提供的OpenFlight API進行輔助建模的方法。
關鍵詞: 建模 視景仿真 MultiGen Creator軟件 三維地形 OpenFlight API接口
近年來,隨著計算機圖形學、計算機網(wǎng)絡技術、仿真技術以及相關硬件技術的迅速發(fā)展,視景仿真及建模技術已經在軍事模擬訓練、工程建筑、影視娛樂、醫(yī)療和教育培訓等諸多領域得到了廣泛應用。虛擬環(huán)境中仿真對象及其場景建模是整個視景仿真系統(tǒng)建立的基礎。參與仿真系統(tǒng)的模型不僅需要能夠逼真地再現(xiàn)真實場景和對象,而且必須滿足實時渲染與交互性的要求,這樣才能使參與者在虛擬現(xiàn)實系統(tǒng)中產生沉浸感。因此,針對虛擬環(huán)境建模技術的研究對于視景仿真系統(tǒng)的實現(xiàn)具有重要意義。
在虛擬現(xiàn)實環(huán)境中,常用的建模技術主要包括幾何建模" title="幾何建模">幾何建模、物理建模、行為建模、模型分割以及音頻建模等。其中,幾何建模是虛擬環(huán)境建模的基礎,行為建模、物理建模等則體現(xiàn)了虛擬環(huán)境中模型的特征。幾何建模處理物體的幾何和形狀的表示,研究圖形數(shù)據(jù)結構與算法等問題。行為建模、物理建模主要處理物體的運動和行為等內在屬性的描述。只有將現(xiàn)實環(huán)境中對象的幾何外形和行為規(guī)則與其物理屬性有機結合,才能構造出符合仿真應用要求的三維對象模型。同時,所構建的模型還需滿足虛擬建模技術的常用指標———交互顯示能力、交互式操縱能力、易于構造能力的要求。
本文根據(jù)視景仿真對建模的要求和特點,論述了如何利用專業(yè)實時三維建模軟件MultiGen Creator構建大規(guī)模地形和對象模型,以及使用MultiGen Creator提供的OpenFlight API進行輔助建模的方法。
1 MultiGen Creator簡介
MultiGen Creator是美國MULTIGEN-PARADIGM公司推出的專業(yè)實時仿真三維建模軟件,它較好地解決了實時運行中真實感與實時渲染的關系,是惟一將多邊形建模、矢量建模和地形生成集成在一個軟件包中的手動建模工具。由于其具備強大便捷的矢量編輯、交互式建模與裝配以及地形地貌生成功能,所以已成為視景仿真領域應用最廣的建模工具。
MultiGen Creator軟件主要由基本建模環(huán)境模塊、地形建模" title="地形建模">地形建模模塊和特殊用途模塊組成。其中基本建模環(huán)境模塊給建模人員提供一個交互的、可視化建模環(huán)境,用戶可以便捷地進行仿真對象建模。地形建模模塊提供了強大的批處理三維地形、地貌生成工具。特殊用途模塊主要包括公路、儀表構建模塊等。
2 基于MultiGen Creator的三維地形建模
三維地形建模是指將一定范圍內適當比例尺的真實地形高程數(shù)據(jù)、地貌特征數(shù)據(jù),根據(jù)不同的地形轉換算法" title="轉換算法">轉換算法,結合包含真實地形表面細節(jié)的紋理,生成具有一定組織序列、能夠近似表示部分地球表面狀況的多邊形集合。地形建模的整體流程如圖1所示。
2.1 三維地形建模過程
2.1.1 規(guī)劃地形數(shù)據(jù)庫
根據(jù)仿真目的和對場景的要求,結合現(xiàn)有實時系統(tǒng)" title="實時系統(tǒng)">實時系統(tǒng)的硬件和軟件平臺性能,在滿足實時性要求的前提下,對應用于仿真系統(tǒng)的整個模型數(shù)據(jù)庫的多邊形預估。最簡單的多邊形估算方法是:實時系統(tǒng)硬件每秒鐘處理多邊形數(shù)量除以幀頻。對于所創(chuàng)建的地形模型而言,通用的規(guī)則是將多邊形預算的1/3用于地形模型,1/3用于地物模型(如房屋、樹木等),其余1/3用于場景中的運動物體模型。
2.1.2 地形數(shù)據(jù)的預處理
目前常用的地形高程數(shù)據(jù)有美國地質測量局(USGS)的DEM數(shù)據(jù)、美國圖像地圖局(NIMA)的DTED數(shù)據(jù)和一些其他來源的數(shù)據(jù)。這些格式的地形數(shù)據(jù)不能直接在MultiGen Creator軟件中使用,必須進行處理,轉換成Creator的DED專用數(shù)據(jù)格式。為此MultiGen Creator提供了相應的轉換工具,如readusgs、image2ded、float2ded、image2ded以及catdma等。
2.1.3 創(chuàng)建地形參數(shù)設置
(1)導入DED格式地形高程數(shù)據(jù),在相應的高程比例尺上設置顏色、紋理和材質。這些屬性將應用于生成的地形模型。
(2)選擇要創(chuàng)建地形的目標區(qū)域,建模人員可以通過鼠標或指定經緯度的方式進行確認。同時,根據(jù)仿真的應用類型,確定生成地形的LOD細節(jié)層次數(shù)目。
(3)設置地圖投影類型。MultiGen Creator提供了五種地圖投影類型:Flat Earth、UTM、Geocentric、Lambert Conic Conformal以及Trapezoidal。用戶可以根據(jù)仿真要求和即將創(chuàng)建地形的真實地球區(qū)域,選擇最適合的投影方式以減少投影誤差。
2.1.4 地形轉換算法選擇
對地形模型有不同需要的仿真類型,選擇不同的轉換算法和參數(shù),生成地形的多邊形數(shù)量和場景外觀也會有很大差異,進而最終影響仿真系統(tǒng)的性能和顯示效果。因此必須根據(jù)具體情況選擇最適合的地形轉換算法。MultiGen Creator提供了Polymesh、Delaunay、TCT以及CAT四種三角形化算法將高程數(shù)據(jù)轉換為地形模型。
(1)Polymesh算法
Polymesh轉換算法根據(jù)設定的高程信息采樣率在原始DED文件中進行有規(guī)律采樣,以獲得地形多邊形頂點坐標,進而創(chuàng)建矩形網(wǎng)格面的地形模型。一個地形模型的組節(jié)點是由X方向乘以Y方向的2×2個地形組節(jié)點構成,每四個低級的LOD地形組節(jié)點構成更高級的地形組節(jié)點,不同的LOD模型組節(jié)點包含的地形節(jié)點數(shù)量保持不變。生成地形的頂點高度根據(jù)Z Scale參數(shù)對原始的采樣高程數(shù)據(jù)縮放得到。Polymesh算法提供了四種地形三角形化的方法。Best Fit根據(jù)三個相鄰頂點高程相同則生成一個三角形的規(guī)則創(chuàng)建地形,生成的地形模型用于地形與海岸線連接的平坦區(qū)域。BottomRight/UpperLeft根據(jù)SGI Performer中三角形化規(guī)則生成地形三角形模型。BottomLeft/UpperRight則按照普通圖形硬件的三角形化規(guī)則生成地形三角形模型。QuadsinFlatArea通過四個高程相同頂點形成一個四邊形來代替兩個三角形的規(guī)則創(chuàng)建地形。用戶可以根據(jù)High LOD Polygon Count參數(shù)提示,調整高程采樣率,以控制最高級LOD模型多邊形數(shù)量,從而滿足實時系統(tǒng)多邊形預算的要求。
(2)Delaunay算法
Delaunay轉換算法是基于Delaunay三角網(wǎng)的地形生成算法。與Polymesh算法不同,它對原始數(shù)據(jù)中的每個高程點都進行處理,從最低分辨率的LOD開始生成地形。較低LOD地形模型的頂點被結合到更高級的LOD中,以保持每一個LOD的頂點與更高級分辨率LOD的頂點相符,使不同LOD地形模型之間平滑過渡。通常情況下,生成同樣精度的地形模型,Delaunay算法比Polymesh算法使用多邊形的數(shù)量少。
如果需要對山脊和山谷檢測,則構成山脊和山谷的高程點將被加入到三角化處理中。如要保護海岸線,Creator將生成的地形多邊形與海岸線進行相交測試,并將沿海的高程點加入三角化計算中。這一過程重復執(zhí)行,直到數(shù)據(jù)中未使用的高程點與相鄰高程點的平均高程的差值小于Terrain Accuracy Tolerance的公差,或者地形多邊形數(shù)量達到最大面與組的限制。
(3)CAT算法
CAT轉換算法對Delaunay算法進行了改進。它改變了地形的分塊模式,采用相鄰LOD間的三維變形(Morphing)技術來平滑過渡層次間的切換,可消除瓷片邊界現(xiàn)象。但是只有SGI Performer2.0以上版本才支持此算法。與其他算法不同,CAT算法創(chuàng)建的LOD模型不使用分塊地形,LOD間的切換是在面到面級別的替換,它隨著視點在地形數(shù)據(jù)庫上的靠近,動態(tài)使用較高級LOD的多邊形代替低級的LOD中相應的多邊形,從而保證地形LOD轉換的平滑過渡效果,而不會出現(xiàn)“突躍”現(xiàn)象。
(4)TCT算法
TCT轉換算法實際是一種限制性的Delaunay算法。使用TCT算法創(chuàng)建的地形模型只有一個LOD,因此只能用于批處理地形轉換。與其他算法不同,它可以將地貌矢量特征數(shù)據(jù)DFD與地形高程數(shù)據(jù)一起處理,生成包含地貌特征(如道路、河流以及湖泊等)的完整地形模型。地貌特征不是簡單地投影到地形表面,而是成為地表上的一部分。用戶可以選擇隨地形一起生成的地貌特征種類。與其他算法相比,TCT算法所生成地形模型的多邊形數(shù)量將顯著增加。
2.1.5 地形模型的生成與測試發(fā)布
設置完成創(chuàng)建地形所需的參數(shù)和規(guī)則后,生成地形模型的工作就由MultiGen Creator自動完成了。生成地形數(shù)據(jù)庫后,應首先在MultiGen Creator中瀏覽,仔細檢查可能出現(xiàn)的如細長三角形(Edge Slivers)、切換LOD時出現(xiàn)的垂直邊界(Wall/Gaps)等異常現(xiàn)象。對于檢查通過的地形模型還應在實時系統(tǒng)中加載測試,查看系統(tǒng)運行時幀頻是否滿足要求、切換LOD時是否平滑過渡以及地形紋理和地貌特征數(shù)據(jù)是否符合要求等。如果出現(xiàn)問題,應該調整參數(shù),重新生成地形數(shù)據(jù)庫,直至滿足系統(tǒng)運行要求。
對于沒有大瑕疵的地形模型,最后仍需對部分地形紋理以及地貌模型進行修正調整,經過反復測試,才能投入使用。圖2為一塊映射地形紋理和地貌數(shù)據(jù)(公路)的地形模型。
2.2 地形紋理的應用
地形紋理貼圖是增強三維地形模型真實感的一個重要途徑。對于細節(jié)層次較低的模型,甚至可以直接使用紋理代替地形多邊形,從而提高地形模型的多邊形使用效率。
滿足MultiGen Creator要求的地形紋理可由衛(wèi)星、航拍及其他來源的影像資料經過優(yōu)化處理得到。建模人員可以在地形高程比例尺指定不同高程顏色的同時,進行相應的紋理設置,包含真實地理坐標信息的地形紋理可以采用同樣方式進行映射。另一種方式是使用間接紋理映射,即將地形多邊形的顏色、紋理以及材質等屬性對應到一個特殊圖像文件上,再將圖像文件映射到地形模型。圖像像素顏色與地形多邊形屬性之間的對應關系保存在后綴為.indrect的文件中。在地形轉換過程中,當?shù)匦味噙呅蔚捻旤c與相應的間接紋理控制文件信息匹配時,對應的多邊形屬性會被自動應用到相應的地形多邊形上。
同時,MultiGen Creator提供了多分辨率紋理(mipmap)和索引分塊(clip texture)技術,用來解決因大量應用紋理而消耗內存、影響系統(tǒng)性能的問題。多分辨率紋理是指將對應相同地區(qū)的地形紋理分成一組不同分辨率的紋理組。在實時運行中,隨著視點變化,選用相應分辨率的紋理,減少內存使用。紋理分塊技術指將較大的地形紋理進行分塊索引,在應用中根據(jù)需要將分塊紋理根據(jù)一定算法調入調出內存,從而實現(xiàn)通過紋理的分塊調度來提高系統(tǒng)的運行效率。
2.3 地貌特征的應用
地貌特征主要指存在于真實地形之上的河流、湖泊、森林等自然景觀以及公路、橋梁、建筑等人文景觀。在地形數(shù)據(jù)庫中添加這些地貌特征,對于增強地形模型的真實性具有重要意義。
目前常見的原始地貌特征數(shù)據(jù)格式有DFAD、DLG和其他矢量數(shù)據(jù)。用戶可以使用MultiGen Creator提供的工具,根據(jù)需要方便地將所需特征轉換為MultiGen的DFD格式,在地形建模過程中使用。DFD數(shù)據(jù)格式使用特征類型碼(FID)對地形特征進行分類,每個特征類型碼對應一組定義特征表面材質屬性的代碼(SMC)。兩者結合決定特征數(shù)據(jù)映射到地形模型上時的紋理、材質以及顏色等屬性。
將地貌特征數(shù)據(jù)映射到地形模型上的方法主要分為預先映射和事后映射。預先映射主要指在地形模型生成之前設置需要映射的地貌特征。地形的多邊形將圍繞地貌特征生成,例如將河流選擇為預先映射方式處理,則河流會成為地形多邊形的組成部分。這對于地面仿真應用具有更加真實的視覺效果,但是會大量增加地形多邊形的數(shù)量。事后映射方式指在地形模型生成之后,再投影所需地貌數(shù)據(jù)。
3 基于MultiGen Creator的三維對象建模
在計算機輔助設計(CAD)、三維動畫和其他領域,通常使用大量的曲線曲面以及復雜的紋理構建三維模型。但從視景仿真領域的觀點看來,這種基于工程設計或動畫的建模思路,由于沒有考慮渲染效率,根本不能滿足實時系統(tǒng)的要求。使用3DMAX、MAYA等建模工具創(chuàng)建的三維模型,必須進行精簡優(yōu)化,才能在實時系統(tǒng)中使用。雖然建模人員可以使用MultiGen Creator提供的Vsimplify工具對引入模型簡化,但仍然需要大量繁瑣的手工工作,例如構建適當?shù)腖OD、面缺失等問題。因此,多數(shù)情況下更多使用MultiGen Creator重新建模。
與MultiGen Creator所提供的三維地形建模中強大的批處理功能相比,在三維實體建模方面MultiGen Creator略顯簡單,看起來不如3DMAX等建模軟件便捷。但建模目的不同,建模思路也不盡相同。MultiGen Creator主要針對實時系統(tǒng)設計,通過高效的層次數(shù)據(jù)結構、LOD技術以及紋理技術等方面的設計優(yōu)化,在協(xié)調處理模型真實感與實時渲染之間具有其他建模軟件無法比擬的優(yōu)勢。
使用MultiGen Creator進行對象建模,應在首先滿足實時渲染的基礎上,盡可能地提高模型的逼真度。建模人員綜合運用好MultiGen Creator提供的建模功能,同樣可以構建具有高度真實感的實體模型。
(1)邏輯化層次結構。MultiGen Creator采用的openflight格式是一種高效的邏輯化層次數(shù)據(jù)結構。因此,建模人員必須針對對象模型的特點,采用模塊化設計方法,合理細分層次節(jié)點。這種做法不僅有助于模型的編輯、LOD設置、外部引用以及數(shù)據(jù)庫的重組和優(yōu)化,同時也為提高實時系統(tǒng)效率構建了良好的基礎。
(2)LOD技術。LOD是一組代表同一物體不同分辨率的模型組。實時系統(tǒng)在處理模型時,會根據(jù)設定的LOD距離切換不同細節(jié)層次的模型,從而有效地提高系統(tǒng)多邊形利用效率。因此,在建模過程中合理地設置LOD層次顯得尤為重要。通常的做法是首先構建細節(jié)層次最高的模型,然后通過自動(Vsimplify工具)和手工(如構建包圍盒)結合的方式,自高而低地構造不同細節(jié)層次模型。
(3)紋理映射技術。使用紋理貼圖代替物體建模過程中可模擬或難以模擬的細節(jié),可以有效地提高模型的逼真度和渲染速度。例如使用透明紋理模擬門窗和欄桿,可以有效地降低模型的復雜度。而利用各向同性構建樹木、標牌等的BillBoard技術,創(chuàng)建的模型僅是單個平面。紋理圖片的來源大多是拍攝實物對象的三維正投影照片,經修正處理得到。需要注意的是,紋理大小應是2的冪次,否則在Vega驅動時無法正常顯示。
在MultiGen Creator環(huán)境下也可以進行構建和連接物體的運動建模。Creator提供了DOF技術,DOF節(jié)點可以控制其子節(jié)點按照設置的自由度范圍進行移動和轉動,使物體表現(xiàn)出合乎邏輯的運動方式。聲音節(jié)點也可以在物體建模的過程中加入,從而豐富視聽內容,增強視景仿真的綜合效果。
4 OpenFlight API輔助建模
OpenFlightAPI是MultiGen Creator提供的用于操作Creator和OpenFlight(flt)格式文件的編程接口,它由一系列C語言的頭文件和相應函數(shù)庫組成。OpenFlight API提供讀、寫和建立flt格式文件的功能,用戶也可以利用它自定義數(shù)據(jù)格式及創(chuàng)建插件。在輔助建模方面,使用OpenFlight API可以幫助建模人員以編程的形式方便、準確地完成手工難以完成的建模任務,例如規(guī)定弧度的彎曲物體等一些真實尺寸要求較高情況。使用編程方式讀取數(shù)據(jù)創(chuàng)建控制線、放樣面,再結合手工處理,可以極大地加速建模過程。甚至對于地形模型,也可以使用OpenFlight API進行編程處理。
下面是利用OpenFlight API創(chuàng)建flt文件的部分偽代碼。利用從CAD中導出的數(shù)據(jù),在flt文件中創(chuàng)建放樣面,再結合手工處理放樣(Loft),生成精確的機翼模型。圖3為部分放樣和完全放樣的模型圖。
#include ″mgapiall.h″//必須包括此頭文件
mgrec *dbroot,*AerofoilNode,*AFPart1,*pNode,*vNode;
mgInit(&argc,argv);//初始化OpenFlight API runtime
if(!(dbroot=mgNewDb(″XXX.flt″))) {//創(chuàng)建數(shù)據(jù)庫
mgExit();
}
//創(chuàng)建一組具有層次關系的數(shù)據(jù)庫節(jié)點
AerofoilNode=mgNewRec(fltGroup);
mgAttach(dbroot,AerofoilNode);
AFPart1=mgNewRec(fltGroup);
mgAttach(AerofoilNode,AFPart1);
for(index1<NUMPOLY創(chuàng)建多邊形數(shù)量)
{ //創(chuàng)建多邊形節(jié)點
polynode=mgNewRec(fltPolygon);
mgAppend(dbroot,polynode);
for(index2<NUMVEX該多邊形頂點數(shù)量)
{//創(chuàng)建Vertex節(jié)點
vNode=mgNewRec(fltVertex);
mgAppend(prec,vNode);
mgSetCoord3d(vrec,fltCoord3d,x,y,z);
}
……
mgWriteDb(dbroot);//關閉數(shù)據(jù)庫
mgCloseDb(dbroot);
mgExit();
……
視景仿真已經成為現(xiàn)代仿真技術的一個新的研究領域,在軍事模擬訓練、影視娛樂等諸多領域得到了廣泛應用。虛擬環(huán)境中仿真對象及其場景建模是整個視景仿真系統(tǒng)建立的基礎。如何有效地協(xié)調實時運行中真實感與實時渲染的關系,是虛擬環(huán)境建模的重點。本文就如何使用MultiGen Creator創(chuàng)建高效的三維地形、對象模型進行了討論,同時介紹了利用MultiGen的Openflight API進行編程輔助建模的方法。希望能對業(yè)界的同行提供一定的借鑒。
參考文獻
1 王 乘,周均清,李立軍.Creator可視化仿真建模技術[M].武漢:華中科技大學出版社,2005
2 甚 蔚,夏立文.虛擬現(xiàn)實技術[M].北京:北京希望電子出版社,2002
3 MultiGenUser′s Guide[M].Multigen-Paradigm Inc,U.S.A,2002
4 萬 剛.虛擬地景仿真中地物的幾何建模技術[J].系統(tǒng)仿真學報,2001;13(增刊)
5 李 穎,薛海斌,朱伯立等.OpenGL技術應用實例精粹[M].北京:國防工業(yè)出版社,2001,45~70
6 曾芬芳.虛擬現(xiàn)實技術[M].上海:上海交通大學出版社,1997