李海勝,王 清
(鄭州鐵路職業技術學院 軟件學院,河南 鄭州 450052)
2008年,Esperient公司推出了實時(real time)三維視景仿真軟件Esperient Creator3.0(EspCreator).EspCreator以其強大的交互功能廣泛應用于產品展示、培訓、教育與娛樂等領域.目前,EspCreator已被波音、洛克希德·馬丁公司和聯邦技術等全球排名前十的航空與防御公司采用.而在國內,使用EspCreator進行三維視景仿真系統的開發幾乎是一項空白.文章介紹了EspCreator,提出了基于EspCreator開發三維視景仿真系統的技術路線,該路線對使用EspCreator進行三維視景仿真系統的開發具有一定的參考意義.
基于EspCreator進行三維視景仿真系統的開發,與基于其他開發平臺(如Cult3D,Virtools,Vega/Prime)類似,其流程如圖1所示.

圖1 開發流程圖
三維模型的本質是點、線、面的集合;集合的不同組合構成各種三維模型.在建模過程中,須在保證精度的基礎上減少模型包含的點、線、面的數量,防止場景運行畫面不連貫、停滯的現象發生.這種現象本質上是幀率Frames Per Second(FPS)過低產生的,FPS反映了系統實時渲染所需的時間.FPS<30,畫面會顯得不連續;FPS>60,則可以顯著提高交互感與逼真感.
此外,使用紋理映射將多邊形(墻面、地板、細小復雜物體等)以貼圖的形式展現.這種方式能夠有效減少多邊形個數(特別是細碎多邊形),模型真實感、質感更強,能夠得到逼真的顯示效果.要注意的是,多邊形個數不是影響幀率的唯一因素.MultiGen Creator提供了三種模型優化策略:Level Of Detail(LOD)技術、紋理技術與實例化技術,能在保證精度的同時有效地優化場景模型[1]208.
模型導入EspCreator過程中,如需保持模型貼圖,則需將模型使用Deep Exploration保存為Right Hemisphere Binary(.rh)格式.但是,.rh格式似乎不能產生最佳的圖形顯示效果[2]792.
EspCreator為場景中的三維模型提供了物理屬性設置選項,用于描述模型的物理特性.EspCreator提供的物理屬性有Object is wall(設置物體為墻,常用于碰撞檢測)、Object is floor or ground(設置物體為地面)、Object is Liquid(設置物體為液體)等;此外,EspCreator還提供了碰撞形狀、靜摩擦力、彈性系數、液體密度等參數精細描述物體的物理特征.剛體的運動受上述參數、環境、重力、場景中其他剛體的影響.
1.3.1 菜單設置交互
國內目前較流行的仿真平臺Cult3D提供了Event Map 窗口進行交互控制設置.通過設置相應的觸發器、對象和動作及其相關參數,建立事件、動作和場景的相互關系,從而進行交互[3]251.同Cult3D的交互模式類似,EspCreator的交互控制主要通過“Object(對象)+ Animation(動畫)”的方式完成.首先選擇對象,為對象添加動畫,設置動畫激活模式、動畫參數即可完成對象的交互控制.
EspCreator中每一個對象均有Properties、Alterations、Overrides、UV Wraps、Animations與Physical六種屬性.而交互控制主要使用Animations屬性.EspCreator為Animations屬性提供了60余種動畫,有Object Transforms(平移,旋轉,縮放)、Color Changes(顏色變化)、real time physics(實時物理)、keyboard and joystick controls等.綜合使用這些動畫可輕松實現背景變換、材質變換、紋理變換、聲音播放、操作提示等功能.對象的Animations屬性可添加不同種類的多個動畫,動畫之間相互獨立或互為激活條件.
EspCreator中動畫的Active(激活模式)有多種,有Immediate(立即)、Triggered(觸發)、Collision(碰撞)、User Pick(拾取)、Pick/Rev Re-Pick(拾取/重置未拾取)Trigger/Reset UnTrig(觸發/重置未觸發)等.根據不同的交互要求,為動畫選擇相應的激活模式.Triggered觸發是某一對象的動畫以其自身或其他對象的Trigger動畫為激活條件,是交互控制的難點.
例如,給對象B(場景對象)添加“Move01”動畫,使其沿X方向移動,而動畫的Active(激活模式)是Trigger/Reset UnTrig即觸發激活;給對象A(按鈕、場景對象等)添加“Trigger Animation01”動畫,激活模式為“User Pick”,Trigger屬性為對象B的“Move01”動畫.運行該場景,鼠標單擊拾取對象A,對象B開始移動,實現交互控制.Trigger觸發的流程,如圖2所示.

圖2 Trigger觸發流程圖
EspCreator提供了一系列標準GUI組件(標簽、按鈕、滾動條等),使用標準GUI組件可以快速創建交互式界面.設置GUI組件與場景對象動畫的控制關系,實現系統界面與對象的交互控制.
1.3.2 腳本控制交互
EspCreator提供了兩種內置腳本語言Lisp與CScript.文章采用Lisp腳本控制實現了軸承拆裝虛擬實驗系統,如圖3所示.

圖3 軸承拆裝虛擬實驗系統
實驗過程中,須按照提示逐步完成零件的拆卸,才能最終完成實驗;否則,系統提示錯誤對錯誤操作不反應.系統中控制16mm螺釘拆卸的Lisp代碼如下所示:
(if (= luodingPickable 1)
(Progn
(TriggerAnimation "luoding" "Move")
(TriggerAnimation "luoding" "showhide")
(SetObjectOnOff "tipSec" 1)
)
)
.esp是Right Hemisphere交互格式,該格式文件體積小,便于桌面、網絡發布,可通過Esperient Creator Viewer(EspViewer)查看.Esperient Creator Viewer是用于播放.esp文件的獨立程序(EspViewer.exe),能夠與工程一起發布..exe可脫離EspCreator環境獨立運行,常用于桌面發布,是最常見的發布方式.其實質是將.esp與EspViewer.exe打包一起發布.
.esp文件不僅能由EspViewer播放,還能通過EspViewer的ActiveX控件播放,由此可將場景嵌入到網頁中,實現網絡發布.EspCreator作品網絡發布需.esp文件與HTML代碼.將EspCreator“Create HTML Code for ActiveX”菜單生成的HTML代碼嵌入到.htm文件中即可將場景嵌入到網頁內(.esp文件與.htm文件需位于同一目錄下);并且可通過JavaScript實現頁面與EspViewer ActiveX控件之間的通信(鼠標在頁面上單擊、釋放時,JavaScript通過SendAPICommand函數向EspViewer ActiveX控件傳遞Lisp/CScript命令,EspViewer ActiveX控件接收命令,執行相關動作).
按上述流程設計實現了虛擬車間三維視景仿真系統,如圖4所示.通過鼠標拖拽(左鍵旋轉,右鍵縮放,中鍵平移)或鍵盤控制第一人稱視角從任意角度觀察模型;單擊菜單按鈕,鏡頭聚焦場景中對象(設定好觀察角度,添加相機,給相應菜單添加“View Camera Match”動畫即可實現視點切換,無需編程);單擊機床操作開關,模擬機床操作(伴有操作提示、機器運行音效、語音提示);從而達到學員訓練目的.該系統交互控制主要通過為對象Animations屬性添加動畫實現.

(a)虛擬車間三維全景

(b)模擬機車
文章詳細說明了采用EspCreator創建三維視景仿真系統的技術路線即“建模+模型優化+交互控制”,介紹了建模過程、模型優化策略、模型導入技巧,對交互控制的實現原理、難點進行了詳細分析,最終實現了虛擬車間三維視景仿真系統.實驗證明,采用EspCreator創建三維視景仿真系統具有工作量小、交互性強、場景效果逼真等特點.依靠菜單即可實現復雜的交互控制,便捷的產品發布功能使EspCreator在裝備訓練、虛擬實驗室建設等領域具有廣闊的應用前景.
參考文獻:
[1] 龔 琳.基于Creator/Vega的虛擬海戰視景系統仿真[J]. 測繪科學,2012,37(04).
[2] Pieter Pauwels,Ronald De Meyer,Jan Van Campenhout.Linking a Game Engine Environment to Architectural Information on the Semantic Web[J]. Journal of Civil Engineering and Architecture,2011,5(9).
[3] 胡林嵐,包崢嶸.基于Cult3D的機械創新虛擬實驗項目研究[J]. 實驗室研究與探索,2013,32(5).