(中國(guó)艦船研究設(shè)計(jì)中心,武漢 430064)
虛擬現(xiàn)實(shí)技術(shù)[1](VR)是一種使用各種先進(jìn)的計(jì)算機(jī)軟、硬件構(gòu)建虛擬場(chǎng)景,用以實(shí)現(xiàn)對(duì)自然環(huán)境的逼真模擬和實(shí)時(shí)交互體驗(yàn)的先進(jìn)技術(shù)。將虛擬現(xiàn)實(shí)技術(shù)引入綜合船橋設(shè)計(jì)中,并通過三維實(shí)時(shí)視景仿真,對(duì)綜合船橋設(shè)計(jì)和設(shè)備布置效果進(jìn)行直觀展示和輔助仿真分析,可節(jié)約一定的時(shí)間和經(jīng)濟(jì)成本。
MutliGen Cerator[2]工作在“所見即所得”的三維環(huán)境中,能使用戶清楚了解建模的每一個(gè)步驟,以及數(shù)據(jù)庫(kù)每一處改動(dòng)。MultiGen Creator與CAD等其他建模軟件的區(qū)別在于,他考慮了如何生成逼真的大面積地形、地貌等地理環(huán)境,以及如何創(chuàng)建低多邊形數(shù)的模型,簡(jiǎn)化和減少實(shí)時(shí)應(yīng)用的程序要求,提高模型實(shí)時(shí)性。目前,MultiGen Creator產(chǎn)品有基于Windows操作系統(tǒng)的版本,極大地方便了用戶的使用。
MultiGen Creator的開放式文件格式OpenFlight可以說是視景仿真領(lǐng)域的行業(yè)規(guī)范。同時(shí),MultiGen Creator還具有強(qiáng)大的兼容性,能與眾多的圖像處理軟件格式兼容,如:VRML、3DMax、AutoCAD、Photoshop或是Wavetront的數(shù)據(jù)文件。
3D Max也是虛擬現(xiàn)實(shí)領(lǐng)域常用的三維建模工具[3]。3D Max具有非常強(qiáng)大的點(diǎn)、線、面、幾何體編輯功能,如編輯網(wǎng)格、放樣、NURBS曲面、布爾運(yùn)算等功能,對(duì)對(duì)象的細(xì)節(jié)描述非常生動(dòng),渲染能力非常強(qiáng),適用于建立精細(xì)對(duì)象模型。
但是對(duì)于3D Max文件來說,數(shù)據(jù)量的控制是一個(gè)難以解決的問題。一般的3D Max文件都要大于100 k,一個(gè)小小的駕駛艙工作電話模型就有10 M。這樣的模型文件大小對(duì)于需要進(jìn)行實(shí)時(shí)交互的船舶駕駛艙三維視景仿真來說,是相當(dāng)大的負(fù)擔(dān)。
為了解決視景仿真實(shí)時(shí)性與船舶駕駛艙模型逼真度之間的矛盾,將3D Max與MultiGen Creator結(jié)合運(yùn)用,進(jìn)行組合建模,見圖1。表1為駕駛艙模型的分類以及建模工具選擇。
圖1 船舶駕駛艙三維模型
建模工具適用船舶駕駛艙內(nèi)對(duì)象模型文件大小MultiGen Creator船體結(jié)構(gòu)海圖室設(shè)備 一般描述對(duì)象,如:普通盤臺(tái)、推進(jìn)臺(tái)、雷達(dá)臺(tái)等單一對(duì)象模型<100 k3D Max 對(duì)細(xì)節(jié)描述要求高的對(duì)象,如:分羅經(jīng)、電話、高檔皮椅,舵輪等單一對(duì)象模型>10 M
圖2為基于三維建模工具M(jìn)ultiGen Creator和實(shí)時(shí)視景仿真環(huán)境Vega 的綜合船橋建模流程圖[4]。
圖2 三維建模流程圖
仿真建模的第一步必須進(jìn)行資料的收集和整理,然后依據(jù)仿真對(duì)象需要表現(xiàn)的細(xì)節(jié)程度,選擇不同的仿真建模工具進(jìn)行原型建模。一般來說,選擇3D Max和Maya等工具進(jìn)行精細(xì)部件的建模,通過轉(zhuǎn)換工具導(dǎo)入Creator進(jìn)行模型的修復(fù)和優(yōu)化。所有模型建模優(yōu)化完畢,就可以加載到實(shí)時(shí)視景仿真環(huán)境Vega中進(jìn)行仿真研究。
通常情況下,一個(gè)大型場(chǎng)景是由多人進(jìn)行三維建模,然后依據(jù)模型的原始位置、尺寸、相對(duì)關(guān)系進(jìn)行整合拼接而成。通過實(shí)踐和效果對(duì)比,總結(jié)出兩種不同的模型整合方法。
1) 小場(chǎng)景的模型整合。如果需要建立的三維場(chǎng)景不是特別龐大,涉及模型對(duì)象數(shù)量有限(如:對(duì)象小于100個(gè)),這時(shí)可采用“小圖拼大圖”方法來完成整個(gè)場(chǎng)景建模。這時(shí)只需要注意局部模型文件的繪制比例、相對(duì)位置,以及其在OpenFlight文件結(jié)構(gòu)中的層次位置即可。
這種方式簡(jiǎn)單、快捷,生成后的全場(chǎng)景三維模型不會(huì)丟失紋理,且便于保存。主要缺陷是隨著局部模型的不斷加入,場(chǎng)景不斷豐富,所生成的.FLT文件不斷增大。這樣在導(dǎo)入實(shí)時(shí)視景仿真環(huán)境Vega時(shí)就會(huì)造成加載速度慢,刷新時(shí)間較長(zhǎng),不利于實(shí)時(shí)漫游。文中建立的船舶駕駛艙模型基本上仍屬于小場(chǎng)景,適用于此種方法。
2) 大場(chǎng)景復(fù)雜景物模型整合[5]。對(duì)于大場(chǎng)景、復(fù)雜景物的三維建模,比如整條船的三維建模,采用小場(chǎng)景建模方法顯然不合適。因?yàn)橐粭l船不僅有復(fù)雜的船體結(jié)構(gòu),船上有各種儀器、設(shè)備,而且管路很多,如果把所有對(duì)象模型都復(fù)制到一個(gè)文件中,這個(gè)文件顯然是太龐大了。這時(shí)必須采用外部引用方式來完成大場(chǎng)景的拼接。這時(shí),每個(gè)模型對(duì)象的紋理文件和三維模型文件都被單獨(dú)保存,相對(duì)獨(dú)立。當(dāng)運(yùn)行視景仿真程序時(shí),計(jì)算機(jī)將只顯示要求,通過OpenFlight數(shù)據(jù)關(guān)系進(jìn)行快速的視景裝配。這樣CPU的處理負(fù)擔(dān)被大大減輕了,不會(huì)因?yàn)橐淮涡哉{(diào)入過多的模型而死機(jī)或者使得漫游速度過慢。
網(wǎng)上3D Max的模板資源較為豐富,這為建立駕駛艙內(nèi)的精細(xì)對(duì)象模型提供了便利,如:高檔皮椅,電話等。但這些基于3D Max的模型文件并不能直接被視景仿真使用,必須對(duì)其進(jìn)行修復(fù)和優(yōu)化處理。圖3和圖4分別顯示了一個(gè)剛剛導(dǎo)入的3DS模型各個(gè)三角面信息和一個(gè)常規(guī)的Creator OpenFlight層次結(jié)構(gòu)。
圖3 3D Max模型導(dǎo)入Creator后的層次化結(jié)
圖4 正常的OpenFlight層次結(jié)
對(duì)比圖3、4可以看出,圖3所示模型的子父組關(guān)系非常紊亂,而且大大小小的三角面數(shù)量很多,所以優(yōu)化是必要的[6]。主要優(yōu)化步驟如下:
1) 忽略看不見的細(xì)節(jié)。例如,如果管子內(nèi)部不必顯示,用實(shí)心體來代替。
2) 忽略對(duì)整體視覺效果影響不大的細(xì)節(jié)。在機(jī)械系統(tǒng)中有很多傾斜的邊緣,他們?cè)?D Max中并不重要。如果在3D Max中對(duì)這些細(xì)節(jié)建模,特別是內(nèi)圓角,模型的面數(shù)會(huì)有很大的增加,因此將這些細(xì)節(jié)忽略。
3) 用紋理表現(xiàn)一些細(xì)節(jié)。許多機(jī)械式系統(tǒng)有鉚釘或硬邊會(huì)占用很多面,改變的方法是渲染模型,即通過凹凸映射表現(xiàn)這些細(xì)節(jié),獲取位圖,然后應(yīng)用位圖到模型的表面。比如駕駛艙窗戶四周的鉚釘。
4) 用簡(jiǎn)單模型替代復(fù)雜模型。在大型仿真場(chǎng)景系統(tǒng),圓柱體通常用三棱柱或四邊形代替。
5) 編輯模型的子對(duì)象和刪除對(duì)場(chǎng)景效果影響甚微的子節(jié)點(diǎn)。
船舶駕駛艙雖然屬于小場(chǎng)景,但是其模型還是比較豐富的。為了提升仿真的實(shí)時(shí)性,對(duì)三維模型進(jìn)行了一定的優(yōu)化[7]。
1) 刪除、合并面。對(duì)于漫游中看不見的面和操控臺(tái)內(nèi)部的面都進(jìn)行刪除。對(duì)于位置臨近、邏輯關(guān)系上屬于同一對(duì)象的面進(jìn)行合并。
2) 重復(fù)模型的實(shí)例化。實(shí)例是指模型數(shù)據(jù)庫(kù)中模型對(duì)象的一個(gè)參考副本,他在內(nèi)存中僅裝入一次,類似于動(dòng)態(tài)連接庫(kù)文件,這樣可以節(jié)省大量的硬盤和內(nèi)存空間。對(duì)于船舶駕駛艙中的多部工作電話,采用了實(shí)例化技術(shù)。
3) 簡(jiǎn)化紋理。在不失視覺效果的前提下,用小尺寸的紋理圖片代替大尺寸的圖片。例如用16×16像素的圖片代替128×128像素的圖片。
4) 運(yùn)用層次細(xì)節(jié)(LOD)技術(shù)。對(duì)于具有復(fù)雜
結(jié)構(gòu)的模型對(duì)象,建立細(xì)節(jié)層次描述不同的多個(gè)版本。當(dāng)遠(yuǎn)距離觀察該物體時(shí),調(diào)用細(xì)節(jié)層次最粗糙的模型。隨著視點(diǎn)不斷貼近該物體,逐步切換細(xì)節(jié)描述精細(xì)的模型。這樣能夠達(dá)到減少多邊形的目的,減少實(shí)時(shí)渲染的開銷。文中對(duì)分羅經(jīng)的處理就采用了LOD技術(shù)。
三維建模技術(shù)是虛擬現(xiàn)實(shí)技術(shù)中的關(guān)鍵技術(shù),也是仿真度是否逼真的關(guān)鍵。結(jié)合綜合船橋這一研究對(duì)象,在研究和對(duì)比了主流三維建模軟件MultiGen Creator和3D Max的基礎(chǔ)上,提出將兩者相結(jié)合來構(gòu)建小范圍復(fù)雜場(chǎng)景的方法,應(yīng)用于實(shí)際項(xiàng)目中取得了較理想的效果。
[1] 張 嵐,蒲小瓊.基于CREATOR與VEGA技術(shù)的虛擬場(chǎng)景優(yōu)化技術(shù)及研究[J].計(jì)算機(jī)應(yīng)用與軟件,2007,24(5):116-118.
[2] 王裕儉.基于MultiGen Creator和Vega的虛擬現(xiàn)實(shí)探討[J].測(cè)繪信息工程,2003(8):14-16.
[3] 王 堅(jiān),孫宇浩.身臨其境:虛擬現(xiàn)實(shí)科學(xué)與技術(shù)[M].杭州:浙江技術(shù)出版社,1999.
[4] 陳 誼,孫悅紅,牛 兵.基于CAD數(shù)據(jù)的3D場(chǎng)景建模及演示技術(shù)研究[R].北京工商大學(xué)計(jì)算機(jī)學(xué)院,2007.
[5] 程效軍,朱 鯉,劉俊領(lǐng).三維建模中的紋理處理[J].遙感信息,2004(2):24-26.
[6] 朱 慶,龔 俊,杜志強(qiáng),等.三維城市模型的多細(xì)節(jié)層次描述方法[J].武漢大學(xué)學(xué)報(bào):信息科學(xué)版,2005,30(11):965-969.
[7] 朱仁成.3DS Max室外建筑藝術(shù)與效果表現(xiàn)[M].北京:電子工業(yè)出版社,2003.