趙必廈, 馮開平, 羅立宏
(廣東工業(yè)大學(xué),廣東 廣州 510006)
廣東工業(yè)大學(xué)數(shù)字媒體技術(shù)研發(fā)實(shí)驗(yàn)室近年來在多通道大屏幕展示系統(tǒng)的研究方面取得重大的進(jìn)展,目前已成功研發(fā)出基于虛擬現(xiàn)實(shí)技術(shù)的21通道(環(huán)幕12通道,虛擬地面9通道)360度環(huán)幕投影系統(tǒng),并將17通道(環(huán)幕8通道,虛擬地面9通道)270度環(huán)幕投影系統(tǒng)成功應(yīng)用于上海世博會(huì)廣州案例館的水環(huán)境展示,效果良好。
多通道虛擬現(xiàn)實(shí)交互展示系統(tǒng),也就是270度環(huán)幕投影系統(tǒng),該系統(tǒng)主要由三維仿真子系統(tǒng)和多通道視頻播放子系統(tǒng)構(gòu)成,而系統(tǒng)的難點(diǎn)在于架構(gòu)三維仿真子系統(tǒng)(以下簡稱三維仿真系統(tǒng))。
本文是對(duì)在原有系統(tǒng)基礎(chǔ)上進(jìn)行二次開發(fā)與實(shí)現(xiàn)的新系統(tǒng)中的子系統(tǒng)——多通道三維仿真系統(tǒng)實(shí)現(xiàn)過程的描述。
按照層次設(shè)計(jì)的思想,系統(tǒng)可以劃分為專業(yè)應(yīng)用層、數(shù)據(jù)層和硬件支撐環(huán)境,系統(tǒng)詳細(xì)結(jié)構(gòu)圖,如圖1所示。專業(yè)應(yīng)用層包括系統(tǒng)監(jiān)控模塊(簡稱監(jiān)控模塊)、系統(tǒng)綜合管理模塊(簡稱管理模塊)、三維虛擬場景顯示模塊(簡稱游戲模塊,因?yàn)樵撃K具有交互功能,就像是一個(gè)游戲)、視頻播放模塊(簡稱視頻模塊)、感應(yīng)模塊、通信模塊;數(shù)據(jù)層包括數(shù)據(jù)訪問控制模塊(簡稱數(shù)控模塊)、日志模塊以及綜合數(shù)據(jù)庫(包含配置信息參數(shù)庫和虛擬模型庫);硬件支撐環(huán)境包括高性能PC機(jī)、融合設(shè)備、投影設(shè)備、音響設(shè)備、感應(yīng)設(shè)備和其它設(shè)備。
圖1 系統(tǒng)結(jié)構(gòu)圖
三維仿真系統(tǒng)實(shí)現(xiàn)原理如圖2所示。首先使用 3ds Max軟件建模,然后把模型文件導(dǎo)入Creator軟件里編輯后生成模型文件,把模型文件導(dǎo)入LynxPrime工具里邊編輯,生成場景數(shù)據(jù),借助VegaPrime引擎編碼實(shí)現(xiàn)仿真系統(tǒng),渲染場景數(shù)據(jù),并輸出到顯示設(shè)備中。體驗(yàn)用戶在交互設(shè)備的作用下與仿真系統(tǒng)進(jìn)行交互,交互數(shù)據(jù)通過交互設(shè)備與仿真系統(tǒng)共同訪問COM控件庫來實(shí)現(xiàn)。
圖2 三維仿真系統(tǒng)實(shí)現(xiàn)原理
仿真系統(tǒng)需包含以下幾類文件:仿真程序、場景文件、模型文件、路徑文件、聲音文件。如表1所示。
表1 三維仿真系統(tǒng)需包含的文件類型
三維仿真系統(tǒng)的實(shí)現(xiàn)分為如下幾個(gè)過程:需求分析、數(shù)據(jù)采集、三維建模、構(gòu)建仿真系統(tǒng)、測試、發(fā)布與維護(hù)。系統(tǒng)構(gòu)建流程圖如圖3所示。
圖3 系統(tǒng)構(gòu)建流程圖
本系統(tǒng)選擇3ds Max與Creator協(xié)同建模的方式來建立三維模型。
在建模過程中,會(huì)產(chǎn)生一系列的過程文件:3ds max的 max模型文件、貼圖和材質(zhì)文件,Creator的flt(OpenFlight File)模型文件。最后使用Vega Prime自帶的轉(zhuǎn)換工具“to_vsb.exe”把flt文件轉(zhuǎn)換成vsb文件輸出的模型文件。由于vsb文件是已經(jīng)編譯好了的二進(jìn)制文件,而flt文件只是基于xml的文檔數(shù)據(jù),顯然vsb文件加載速度比flt文件加載速度要快。
在建模的過程中,需要注意以下的問題:
1)模型的面數(shù)不能太多,否則影響渲染速度,或者渲染不出來。
為了控制和解決面數(shù)問題,使用低多邊形方法建模,避免使用曲面、放樣等建模方法。結(jié)構(gòu)細(xì)節(jié)盡量用紋理表示,燈光渲染到紋理中。
2)模型的燈光要合理,不能太多,太多會(huì)影響渲染速度,也不能太少,太少會(huì)顯得很暗。
3)為了解決3ds Max文件轉(zhuǎn)化為Creator文件后,所產(chǎn)生的鋸齒邊的問題,勾選LynX中的反走樣選項(xiàng),把顯卡設(shè)置成圖像質(zhì)量優(yōu)先于速度。
系統(tǒng)具有8大模塊,分別是監(jiān)控模塊、管理模塊、游戲模塊、視頻模塊、感應(yīng)模塊、通信模塊、數(shù)控模塊、日志模塊,其中監(jiān)控模塊、管理模塊、游戲模塊、視頻模塊、感應(yīng)模塊是獨(dú)立可執(zhí)行文件,其它模塊以構(gòu)件的形式存在。
監(jiān)控模塊包括模塊監(jiān)控、網(wǎng)絡(luò)通信、應(yīng)急處理、日志查看等功能;管理模塊包括場景管理、場景交互、應(yīng)急處理、日志管理等功能;游戲模塊包括場景渲染、聲音播放、場景交互、同步通信等功能;視頻模塊包括視頻與聲音播放、同步通信等功能;感應(yīng)模塊包括位置感應(yīng)、輸出感應(yīng)位置信息等功能;通信模塊主要基于COM/DCOM技術(shù)以及TCP/IP協(xié)議,負(fù)責(zé)整個(gè)系統(tǒng)的本地通信與及對(duì)外通信;日志模塊負(fù)責(zé)記錄系統(tǒng)日志,便于維護(hù)與管理;數(shù)控模塊負(fù)責(zé)數(shù)據(jù)訪問控制,存取數(shù)據(jù)信息。
3.2.1 本地通信
程序與模塊調(diào)用的關(guān)系如表2所示。表中主要展示了在系統(tǒng)啟動(dòng)、視頻播放、場景播放、退出場景時(shí)8大模塊的進(jìn)程啟動(dòng)的情況。其中,●表示必須啟動(dòng),○表示需要時(shí)啟動(dòng),×表示不需要啟動(dòng)。
表2 程序與模塊調(diào)用的關(guān)系
3.2.2 遠(yuǎn)程通信
服務(wù)器與客戶端之間,通過服務(wù)器的監(jiān)控模塊與客戶端的監(jiān)控模塊相互之間建立 TCP/IP協(xié)議,搭建基于CS模式的機(jī)群,監(jiān)控模塊再把遠(yuǎn)程消息在本地傳輸?shù)较鄳?yīng)的應(yīng)用層模塊,應(yīng)用層的模塊響應(yīng)并處理消息,完成通信。機(jī)群之間的通信模型如圖4所示。
圖4 機(jī)群之間的通信模型
使用LynX Prime編輯器編輯adf文件(即應(yīng)用配置文件),圖5展示了adf文件的實(shí)例圖。
圖5 LynX Prime編輯器應(yīng)用配置文件示例圖
首先需要編輯視野范圍,也就是Channel類的Offsets屬性。Offset屬性有6個(gè)屬性值:X、Y、Z、Heading、Pitch、Roll。如圖 7所示的 Vega右手坐標(biāo)系,x軸正方向指向面對(duì)著的方向,y軸正方向指向左手邊的方向,z軸正方向指向上面的方向。X、Y、Z就是右手坐標(biāo)系的坐標(biāo)值;Heading屬性表示航向角,正值為向左轉(zhuǎn),負(fù)值為向右轉(zhuǎn);Pitch屬性表示俯仰角,正值為向上轉(zhuǎn),負(fù)值為向下轉(zhuǎn);Roll屬性表示橫滾角,正值為逆時(shí)針轉(zhuǎn),負(fù)值為順時(shí)針轉(zhuǎn)。
在環(huán)幕設(shè)置中,選擇 Projection(投影)屬性為Symmetric(對(duì)稱投影),設(shè)置FOV(Field Of View)屬性的 Horizontal(水平)值和 vertical(垂直)值,然后分別為每一個(gè)通道設(shè)置不同的Offsets屬性的航向角Heading的值。一般而言,只需要設(shè)置水平視野范圍。也就是只設(shè)置Horizontal值和Heading值。
在地面設(shè)置中,選擇 Projection(投影)屬性為 Orthographic(正投影),把 Offsets屬性的俯仰角Pitch的值設(shè)為-90,表示向下旋轉(zhuǎn)90度,再設(shè)置Projection屬性的Frustum屬性值。Frustum屬性采用二維坐標(biāo)系,原點(diǎn)為左下角,坐標(biāo)走向,如圖6所示。
圖6 Vega右手坐標(biāo)系
在系統(tǒng)構(gòu)建過程中,為了更好地調(diào)試仿真系統(tǒng),直觀地查看模型以及檢測系統(tǒng)的整體展示效果,需要在一臺(tái)PC機(jī)上觀看多個(gè)通道的效果。因而,需要把已經(jīng)配置好的只顯示單通道的 adf文件修改成能顯示多個(gè)通道的adf文件。
如圖7所示,首先創(chuàng)建9個(gè)Channel類的實(shí)例,然后分別重命名,接著把它們?nèi)客线M(jìn)Window類的實(shí)例 myWindow里邊,同時(shí)在Observer類的實(shí)例myObserver里的Channels中添加進(jìn)來。最后修改每一個(gè)通道的視野范圍即可。
圖7 單機(jī)演示9通道的adf文件配置
為了顯示多個(gè)通道,需要對(duì)各個(gè)通道的Channel類的 Draw Area屬性進(jìn)行設(shè)置。Draw Area屬性是以左下角為原點(diǎn)的二維坐標(biāo)系,有效顯示范圍為[0,1]。
表3 各個(gè)通道的Channel類的Draw Area屬性的設(shè)置
按照表3設(shè)置各個(gè)通道的Draw Area屬性,得到的9個(gè)通道就是圖8所示的通道。
圖8 單機(jī)顯示多個(gè)通道邏輯示意圖
圖9 展示的是單機(jī)模擬8通道環(huán)幕的效果。
圖9 單機(jī)模擬8通道環(huán)幕效果圖
新舊系統(tǒng)的功能和性能的對(duì)比項(xiàng)如表 4所示,通過對(duì)比,可以較明顯地看出新系統(tǒng)的優(yōu)越性。
本系統(tǒng)的原型是 2010年上海世博會(huì)廣州案例館360度內(nèi)環(huán)幕虛擬體驗(yàn)區(qū)的軟件系統(tǒng)。通過對(duì)原型進(jìn)行改良和優(yōu)化,使系統(tǒng)的功能得到進(jìn)一步完善,性能得到進(jìn)一步提高,系統(tǒng)穩(wěn)定、高效地運(yùn)行。
本文對(duì)于虛擬仿真領(lǐng)域系統(tǒng)的構(gòu)建以及多通道技術(shù)在虛擬現(xiàn)實(shí)領(lǐng)域的應(yīng)用具有一定的參考價(jià)值。
本文的下一步設(shè)想是把 Vega Prime的技術(shù)元素,使用開源的OSG(OpenSceneGraph)技術(shù)代替,從而實(shí)現(xiàn)更好的科研價(jià)值和商業(yè)價(jià)值。
表4 新舊系統(tǒng)對(duì)比
[1] 彭 亮,黃心漢. 基于VC和Vega Prime聯(lián)合開發(fā)的巡航導(dǎo)彈仿真系統(tǒng)研究[J]. 中南大學(xué)學(xué)報(bào)(自然科學(xué)版),2010,(1): 219-224.
[2] 褚彥軍,唐 碩. 基于 Vega Prime的通用視景仿真系統(tǒng)研究[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2009,17:4104-4107.
[3] 孫科峰,李 潔. 基于 Vega Prime的多場景仿真系統(tǒng)框架[J]. 計(jì)算機(jī)仿真,2007,(12): 193-195.
[4] 張玉雙,陶應(yīng)學(xué),岳玉芳. 多通道技術(shù)在視景仿真系統(tǒng)中的應(yīng)用[J]. 計(jì)算機(jī)工程與設(shè)計(jì),2006,(11):2102-2104.
[5] 黃健熙,毛 鋒,許文波,等. 基于 VegaPrime的大型流域三維管理系統(tǒng)實(shí)現(xiàn)[J]. 系統(tǒng)仿真學(xué)報(bào),2006,(10): 2819-2823.
[6] 張德鋒,王華兵,薛 原,等. 基于Vega Prime的視景仿真技術(shù)研究與應(yīng)用[J]. 計(jì)算機(jī)仿真,2006,(7):191-195.