劉 旸, 陳浩政, 高良田, 郭春雨, 袁利毫, 喬 岳
(1.哈爾濱工程大學 船舶工程學院, 哈爾濱 150001; 2.中國艦船研究院, 北京 100000)
船舶制造是集水、電、氣、重型機械裝配一體作業的高危行業,在校園內很難完成這樣的大型裝備類專業實驗,以往主要依靠校企聯合培養模式。受到船廠施工作業的限制,學生在船廠學習的時間有限、參觀內容有限,另外船廠能提供的師資力量有限、不能共享學習資源,且實驗資金耗費較大。
虛擬船廠、船舶交互仿真實驗教學系統的研發是為學生建立開放式實驗教學環境,使學生通過 “互聯網”[1]實現虛擬船廠、船舶實驗資源的完全共享,在三維場景中自由體驗和探索,實現人機互動,并且學生能夠自行檢驗學習效果,不受時間、空間和實驗條件的限制,可完成遠程實驗,實現教學資源的最大化共享[2-3]。虛擬船廠、船舶交互仿真實驗教學系統作為課堂教學和船廠實地實驗的輔助和補充資源,虛實結合[4],提供一種有危險性的大型裝備實驗新的實驗教學和考核模式[5],同時,讓學生掌握時代發展新生的學習工具和學習模式,給予他們更多獲取知識的渠道和能力。
虛擬現實(Virtual Reality,VR)是目前國內外科技界關注的一大熱點[6],VR技術是一種綜合應用各種技術構造逼真的人工模擬環境,并能有效地模擬人在自然環境中的各種感知行為的高級人機交互技術[7]。VR技術一直受到質量與速度的瓶頸限制,導致基于公共網絡的真三維虛擬現實系統應用受限[8]。本文建立的虛擬船廠、船舶交互仿真實驗教學系統采用多細節層次(Levels of Detail,LOD)、分層調用、烘焙等技術,一是將虛擬場景均衡建模,確保擁有高質量畫面效果的前提下模型文件最小;二是實現場景模型文件網絡智能加載,確保系統流暢運行[9]。同時利用各種VR設備實現三維虛擬場景的全沉浸式體驗,實現虛擬系統的功能要求和效果。
虛擬船廠船舶交互仿真實驗教學系統的開發流程如圖1所示。
圖1 系統開發流程圖
(1) 首先采用3DMax創建虛擬船廠和船舶的三維模型,將需要進行人機交互的結構分離成獨立的模型。
(2) 利用Photo Shop處理好所有模型的材質貼圖,并完成貼圖工作。
(3) 將模型保存為.FBX格式文件并導入到Unity3D中,在Unity3D場景中添加攝像機和燈光,設置碰撞檢測面,同時進行渲染烘焙生成最終的紋理貼圖。
(4) 應用GUI組件在主界面上顯示導航圖,以第一人稱和高空視角編程實現系統的漫游。應用Visual Studio C#語言實現仿真系統的教學、考核和交互功能。
(5) 通過Unity3D的跨平臺功能將其發布為網頁版,使虛擬船廠和船舶仿真系統實現跨平臺使用。
(6) 基于高端虛擬設備HTC Pro頭盔和Omni跑步機編寫接口程序,開發全沉浸虛擬交互系統,并應用虛實融合設備實現整個實驗過程的可觀察性。
(1) 參考原型選擇。綜合國內幾大設備與工藝一流的大型船舶制造企業,配合船舶與海洋工程專業教學內容,將其布局方案、建造流程與工藝按照材料碼頭—鋼料堆場—鋼料預處理—鋼料加工—平、曲分段建造—舾裝集配—噴涂—總組—進塢—下水—碼頭舾裝這一建造流程來設計[10],再配以辦公區、生活區和相應的設備設施,形成一座功能齊全的現代化船舶制造企業,各類場景、設備按照1∶1設計制作。
散貨船是我國三大運輸船舶類型之一,同時也是船舶工程專業本科生教學常用船型[11],具有典型性。考慮到專業課程學習對整船感受較少,虛仿軟件容易配合,尤其船舶是各類機電設備和可燃物品密集型產品,易燃、易爆,船廠實習不易參觀,因此將虛擬船舶學習內容放在船體結構構件、甲板設備與布置、消防救生設備布置、國際海事組織(IMO)安全標志、上建艙室布置標準等方面。系統以57 000 t巴拿馬型散貨船作為母型船,該船長190 m,寬32 m,主甲板高17.85 m,1∶1建立虛擬場景。
(2) 系統結構設計。造船廠是大型復雜制造企業,船舶是結構復雜設備眾多的大型工業產品,因此開發虛擬船廠、船舶交互仿真實驗教學系統是一項復雜的虛擬操作系統工程。系統結構設計上要兼顧環境仿真、操作仿真以及虛擬設備交互仿真等環節,應用Unity3D和Visual Studio C#軟件搭建系統的總體結構主要分為5個部分:虛擬船廠、虛擬船舶、教學與考核系統、場景仿真和漫游系統、虛擬交互系統。系統框圖如圖2所示,系統需構建的資源如圖3所示。圖4為建設完成的部分虛擬船廠、船舶場景。
(3) 教學與考核功能設計。系統采用語音教學和圖文教學等方式配合虛擬場景的認知和學習。系統語音教學采用兩種方式:一是碰撞觸發語音,考慮到虛擬現實軟件的沉浸感,設置了語音碰撞檢索開關,當漫游到開關邊界時,系統自動打開語音教學開關,這種方式適合在較開闊空間使用,不會造成觸發誤判。二是在車間內部和艙室設備較密集處,采用點擊觸發語音,通過鼠標點擊語音教學按鈕開啟語音教學內容,如圖5(a)所示。圖文教學方式主要是點擊按鈕、設備、標志時彈出學習對話框,如圖5(c)所示為手動報警器的學習界面。

圖2 系統結構框圖

圖3 系統建設資源匯總

(a) 鳥瞰船廠

(b) 廠區和車間內景

(c) 虛擬船舶

(d) 設備、艙室與結構
為了學生能夠方便評價自身的學習效果,系統內置了100道與場景配合的考題,以第1次答題累積分數,評分在系統左上角實時更新,如圖5(d)所示。如果回答錯誤,在試題下方顯示正確答案,如圖5(b)所示。

(a) 語音教學

(b) 答題系統

(c) 圖文教學

(d) 考核系統
虛擬船廠、船舶交互仿真系統系統分為學生端和教師端。學生端具有登陸、教學、導航、安全教育和參觀裝備選擇等系統功能和模塊,教師端主要進行學生用戶和考核成績的管理。
(4) 用戶體驗設計。為增強漫游時的真實感體驗,基于Unity3D開發虛擬船廠、船舶仿真系統的第一人稱視角漫游功能,見圖4(b),當學生在操作仿真系統時,可根據自身的需求控制漫游方向和視角,以及跑、跳、登高、跳轉等動作,對應的鍵盤、鼠標和虛擬手柄功能鍵見表1。由于虛擬船廠占地遼闊,車間、場地眾多,制造流程復雜,同時開發了鳥瞰高空視角,見圖4(a)。啟動后系統帶領用戶按造船流程完成高空漫游體驗。系統與外界交互采用了多種方式,即可使用鼠標、鍵盤通過普通電腦鏈入互聯網操作,也可使用虛擬頭盔、手柄、跑步機等虛擬外設完全“沉浸”在虛擬系統中,獲得更逼真的虛擬現實體驗。

表1 功能鍵對照表
渲染優化方法是為了控制在最終渲染時,每幀畫面繪制的多邊形數目,以保證模型的實時顯示能夠順暢進行,本系統采用的是 LOD[12]技術。LOD是指使用若干細節層次不同的模型來表示場景中同一個對象,通過對象與攝像機的距離遠近,來決定對象顯示的細節多少,在透視攝像機下,距離攝像機越遠,實際顯示的大小越小,所以選用合理的低細節層次模型,既能保證使用者看不出明顯的顯示效果損失,也能使渲染系統的負載大幅度降低。優化過程如下:
(1) 應用模型輕量化軟件,將不同格式的資源模型處理成高、中、低3種復雜程度的.FBX模型,導入Unity3D進行測試,滿意后保存。
(2) 建立一個空的Game Object,為其添加LOD屬性。在LOD Group設置里面按照模型的層級添加模型,一個物體的所有層級模型添加在一個Game Object下。
(3) 根據相機的預覽調節LOD Group的LOD效果,即確認高、中、低3種層級模型轉換的距離,滿意后保存。
當需要進入某個艙室或場景學習時再調用相應的模型,例如當使用者在船舶主甲板漫游時,上層建筑和船體內部的三維模型不必調用。因此可將系統劃分為若干個調用層次和調用區域,根據用戶的需求智能加載。這樣可以將虛擬船廠和船舶仿真系統拆分,化整為零,避免CPU一次性加載的模型量過大,減少系統運行等待時間,提升使用體驗。
將完成材質貼圖的三維模型在3DMax中添加光源效果處理,三維模型會對光產生反射,通過渲染,三維模型會產生陰影、倒影,增加了三維模型的真實度。若想保留這種特效可以選擇兩種方式,一種是直接加光照信息賦予三維模型,即烘培貼圖技術(Render To Textures)。另外一種在漫游程序中添加光源設定程序。使用烘培貼圖技術將光照信息賦予貼圖之上,使光照信息變成了貼圖的一部分,不需要CPU計算,這種光照貼圖使用上與普通貼圖沒有區別,運行加載速度非常快。這種方法去除了編譯程序時復雜的光能傳遞計算,消除了加載復雜光能傳遞使漫游效果的不穩定性,有利于網絡虛擬仿真軟件提高運行效率。烘培貼圖過程如下:
(1) 設置照明、反射、透明度等參數到滿意為止,渲染出圖;
(2) 選擇Render To Textures選項,進入烘培貼圖的窗口,在Output Path選項中設置烘培貼圖保存路徑;
(3) 選擇要處理的模型,單擊Add,選擇CompleteMap,此選項包含其他選項所有的設置特點,稱為完整烘培。在該界面下單擊Render To Textures窗口渲染,得到光照條件下的烘培貼圖,烘培貼圖會自動貼回模型上。如圖6所示,為虛擬船娛樂室沙發的烘焙貼圖效果。

(a) 娛樂室沙發烘焙貼圖效果

(b) 烘焙貼圖
為方便系統對用戶的管理,設定只有管理員錄入的用戶才可以登錄本系統。當用戶數量眾多時,單個錄入效率較低,因此系統開發了用戶批量導入的外掛程序。如圖7所示,打開批量導入對話框,找到用戶賬號的文件,設置用戶初始密碼,彈出導入成功提示界面,即可將用戶賬號批量導入到賬戶系統管理數據庫中。

圖7 批量導入用戶界面
系統選用高端虛擬現實設備HTC Pro和Omni跑步機等可穿戴設備,開發全沉浸虛擬交互模塊。HTC Pro采用激光掃描定位,定位器采用Lighthouse室內定位技術,依靠激光和光敏傳感器來確定頭戴顯示器和控制器的位置,可在6 m2內自由移動,精度可達1.94 mm。畫面組合后分辨率可達2 880×1 600 PPI,刷新頻率為90 Hz,視場角為110°,數據顯示延遲為22 ms,不易產生虛擬病。
Light house技術的原理[13]是定位器通過內嵌的紅外發光二極管陣列對外閃爍,通知操控手柄及頭戴式顯示設備開始新一輪的掃描周期并保持同步狀態,然后通過內嵌的直流電動機輪流帶動鐳射激光發生器生成一個面型的激光欄,激光欄先是橫掃過設定區域內的操控手柄及頭戴式顯示設備,得到x軸的角度值及其到達時間,然后激光欄豎向掃描設定區域內的操控手柄及頭戴式顯示設備,得到y軸角度值及其到達時間,最后根據這些參數,計算出操控手柄與頭戴式顯示設備在設定空間內的位置。
Steam VR Plugin是基于Open VR開發的針對虛擬現實頭戴式顯示設備應用的Unity3D通用API插件。通過Unity Asset Store獲取API插件,對VR頭戴式顯示設備進行控制與管理,實現與Unity3D場景的各種交互功能(見圖8(a)、(b))。手柄控制器功能設置部分程序如下:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class HTCControllerLeft : MonoBehaviour
{SteamVR_TrackedObject trackedObject;
public float TranslateSpeed = 1f;
public float RotationSpeed = 10f;
private void Awake()
{trackedObject=GetComponent
void Start( )
{ }
void Update( )
{var device = SteamVR_Controller.Input((int)trackedObject.index);
if (device.GetTouch(SteamVR_Controller.ButtonMask.Trigger))
{Debug.Log("按了“trigger”“扳機鍵”");}
if (device.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger))
{Debug.Log("按下了“trigger”“扳機鍵”");}
if (device.GetTouchUp(SteamVR_Controller.ButtonMask.Trigger))
{Debug.Log("松開了 “trigger” “扳機鍵”");}}

(a) VR開發設備

(b) 頭盔中顯示的虛擬跳轉功能

(c) 手柄控制器功能設計
應用Omni針對Unity3D開發的專用插件資源包OmniSDKUnity開發虛擬跑步機應用程序。OmniSDKUnity包含用于喚醒、控制及訪問Omni外部設備的API及接口,一個角色控制器預制件,一個示例場景和少量的UI、材質等可用資源,可實現虛擬世界中無限范圍的自由行走、跑步等高沉浸度的體驗(見圖8(a)),其開發流程圖如圖9所示。
為教師能實時觀察和指導學生的實驗過程,通常可采取兩類方法。一類是為實驗者創建虛擬人模或虛擬手模,將實驗者動作數據捕捉到虛擬人或虛擬手上[14]。前者需要購置全身慣性動作捕捉設備(服),

圖9 Omni跑步機開發流程圖
一般只針對部分有特殊需求的專業。后者僅展示手部的虛擬操作,一般對手部動作要求較高的實驗經常采用。以上方式系統開發成本較高,系統研發周期較長。另一類是通過一定的算法和調試,使用虛實融合設備將實驗者人像與虛擬場景融合,實現虛實疊加效果,這類方法制作成本較低,更有利于教師評價學生實驗過程和效果。
本系統使用藍屏法[15]解決現實環境前后背景分離問題。圖像前后背景合成公式為:
Co=Cf+(1-αf)Ck
(1)
式中:Cf為前景色;Ck為背景色;Co為合成圖像,αf為f點處的透明度值。當背景色Ck為單色時,Ck接近常數,通過錄像設備實時捕捉場景中動態畫面的前、背景色,將數字信號輸入到摳像機中,通過調節式(1)中αf值去除背景色,從而獲得人像畫面,再與虛擬系統傳輸過來的數字信號疊加起來,通過終端顯示設備呈現出來,如圖10所示。

(a) 現實場景

(b) 虛擬疊加效果
為提高虛實疊加的準確程度,需要調節實驗者身高與虛擬環境比例一致。一個簡單的做法是在虛擬環境中建立人體身高標尺(見圖10(b)),該標尺與虛擬景物比例一致。固定攝像機,將人像投攝到虛擬環境中,調節焦距將實驗者身高調整到虛擬標尺中相應的身高處即可。
虛擬船廠、船舶交互仿真實驗教學系統主要配合船舶設計原理、計算機輔助船舶設計與制造、船舶設備與舾裝、船廠實習等課程相關教學內容。在課堂教學、虛擬實驗教學的同時,配合模型教具的應用。如圖11所示,為配合本軟件系統設計的各類實驗教具,包括船廠布局組合模型、分段裝配模型、總段裝配模型、船體結構剖視模型等。其中船體結構剖視模型按實船1∶200縱剖打印,長1.54 m,分艏、舯、艉3段結構,船體各部位板架結構清晰可見。實驗課成績既考慮虛擬系統的自動評分成績,也包括操作過程評分、模型裝配和實驗報告的成績。在虛擬仿真教學的基礎上,盡可能地讓學生接觸實際,充分體現虛實結合、互相補充、能實不虛的原則[16]。

圖11 分段裝配、船廠布局和船模教具
本文介紹的基于Unity 3D和 Visual Studio C#開發的虛擬船廠、船舶交互仿真實驗教學系統,將VR技術、網絡技術、先進教學方法引入到虛擬仿真實驗教學中來,組建了學習、漫游、考評一體化的實驗平臺,并結合傳統實驗教學,為師生創建了可完全共享的開放式實驗教學資源,彌補了教學手段缺乏改革創新、學生學習興趣不高[17]、優質教學資源匱乏等問題。
隨著三維建模技術和VR技術的不斷發展,VR軟件的沉浸感、交互性和構想性將會更加精美,未來將不斷升級和完善虛擬船廠的細節功能、開發其他類型船舶的實驗和考評系統,在相應課程中積極應用輔助教學活動。