張旭帆,閆 鶴,寇 程
(1.西安測繪總站,陜西 西安 710043)
虛擬環境中的定向越野訓練
張旭帆1,閆 鶴1,寇 程1
(1.西安測繪總站,陜西 西安 710043)

將虛擬現實技術引入定向越野訓練研究中,為定向越野訓練提供了一種全新的手段。以游戲引擎——Unity3D為虛擬環境的開發平臺,利用DEM數據和影像圖,以3ds Max軟件實現虛擬環境中的三維建模和貼圖,將軍事地形學和相關測繪知識融入訓練中,實現了定向越野的虛擬訓練系統,增強了訓練的效果和娛樂性。
虛擬;定向越野;Unity3D
虛擬現實技術是以沉浸性、交互性和構想性為基本特征的計算機高級人機界面,綜合應用了計算機圖形學、仿真技術、多媒體技術、人工智能技術、計算機網絡技術、并行處理技術,模擬人的視覺、聽覺、觸覺等感官功能,使人能夠沉浸在計算機生成的虛擬境界中,并能通過語言、手勢等自然方式與之進行實時交互,創建了一種適人化的多維信息空間[1]。定向越野運動是一項帶有軍事色彩的體育運動,最初以軍隊和教育部門的軍事訓練、測繪部門的科普工作為中心進行。參加者借助地圖和指北針,以徒步越野賽跑的形式,按順序到達地圖上所標示的各個點標(亦稱檢查點),以最短的時間完成規定賽程。
利用Unity3D創建一個虛擬環境,用以進行定向越野訓練,可有效解決實際訓練中場地受限的問題。Unity是一款穩定、高效的跨平臺3D游戲引擎,以其強大的跨平臺特性與絢麗的3D渲染效果而聞名[2]。利用虛擬環境進行訓練,也是定向越野在訓練方式上的突破。
系統設計的核心原則涉及游戲的設計思路和必須遵守的原則。在設計的過程中,絕對不可以違背設計原則,一旦設計與這些原則有沖突,需要重新設計[3-4]。要根據設計原則,進行模型構建、數據準備和游戲環境的設計,最后在Unity3D中進行渲染,才能達到相應效果,如圖1所示。
游戲的設計必須遵循定向越野運動的規則和特性,在虛擬環境中,利用游戲的形式進行訓練可以增強訓練的娛樂性。在游戲中,根據影像數據選擇一條具有明顯特征的行進路線,在行進過程中設置兩個點標和遇到迷路的幫助功能。

圖1 系統示意圖
2.1 交互設計
訓練系統中采用第一人稱視角,增強受訓者在虛擬環境中的沉浸感,可通過Unity3D自身附著在First Person Controller上的C#和Java腳本實現。當用戶移動鼠標時,MouseLook腳本控制角色在水平和豎直兩個平面內視野的旋轉;FPSWalker腳本控制人物行走、跳躍、奔跑、旋轉等功能。在行進過程中,使用W、A、S、D四個鍵實現前后左右來控制行走功能。例如,前進的代碼如下:

另外一種重要的交互功能是GUI界面的設計。在定向越野過程中,受訓者可通過選擇按鈕進行相應步驟,也可切換場景和退出訓練,如圖2所示。部分代碼如下:

圖2 GUI界面設計

2.2 碰撞檢測
碰撞檢測也稱為干涉檢測或接觸檢測,是基于現實生活中一個普遍存在的事實:兩個不可穿透的對象不能共享相同的空間區域。碰撞檢測作為VR系統中的一個關鍵組成部分,主要任務是判斷物體模型之間、模型與場景之間是否發生了碰撞,以及給出碰撞位置、穿刺深度等信息[5]。
在導入Unity3D場景中的各種模型上,也需通過Component→Physics加上不同的碰撞器。只有附加碰撞器后,模型才能執行附加的腳本。Unity一共為對象提供了5種碰撞器,分別是Box Collider、Sphere Collider、Capsule Collider、Mesh Collider和 Wheel Collider,可根據模型的碰撞方式選擇相應的碰撞器。
2.3 屏幕自適應
用 Unity 開發移動平臺的游戲不可避免地會遇到屏幕分辨率的問題:不同的屏幕分辨率使得原本正常的 UI 變得亂七八糟。在 Unity 中可用一個 plane作為背景,UI 則是繪制在離攝像機最近的位置,可以認為是繪制在攝像機上的。因此分辨率的不同會導致 UI 的位置和大小出現錯誤[6]。
將游戲開發環境的屏幕分辨率,與當前屏幕分辨率的 X 軸和 Y 軸相除,就可得出相應的縮放比例,所有 UI 控件的坐標都乘以相應的比率系數,就可保持UI 的相對位置不變。同時,若 UI 控件較多時,沒必要對每一個都去控制大小,可在 UI 函數的開始設置縮放矩陣,這樣所有的 UI 都會受矩陣的控制。部分代碼如下:

3.1 三維場景的開發
三維場景中包含諸多元素,可分為常用元素與不常用元素兩種。常用元素是場景中一些較重要的元素,需要使用腳本來實現一些特殊功能,如用戶控制的主角對象、通關的必要條件等,因此常用元素將直接影響系統的繼續運行;而不常用元素在三維世界中主要起裝飾作用,如場景中的天空、云朵、樹木和地形等,不會影響系統主線,但它們可以提升系統的整體效果。任何一款完美的游戲都需要使用這些不常用元素來配合,它們的存在往往是場景畫面的保證[7]。
三維場景的開發即虛擬環境的構建。首先創建地形,Unity中有一套非常好的地形編輯器,可讓開發者構建任何復雜的地形。為了使三維場景更加貼近實地,使用訓練場地的DEM數據在三維場景中生成地形。先將DEM數據導入Globel Mapper中,利用該軟件對數據進行處理,導出一張地形灰度圖(圖3);再將其轉成.raw格式文件;最后將.raw文件直接導入Unity中,即可生成相應的地形。然后根據當地的影像圖,在地形上添加元素,如樹木、草坪、石頭和河流等,如圖4所示。

圖3 地形灰度圖

圖4 場景俯視圖
3.2 三維模型的構建
在一個完整的游戲場景中,僅有地形是不夠的。根據影像圖和系統的需要,場景中還需要大量的模型來增加場景的真實感。模型是3D游戲重要的組成部分,可分為兩種:靜態模型,如游戲場景中的桌子、椅子等;帶動畫的模型,如主角、敵人等會行走、懂AI的模型。訓練系統中加入的都是靜態模型。
先用3ds Max和Photoshop構建場景中需要的各種模型和貼圖;再將模型導出為Unity3D可以兼容的.fbx格式;最后將模型與貼圖一起放入Project中,并將模型文件、材質文件和貼圖文件作好分類。部分模型如圖5所示。

圖5 部分模型示意圖
3.3 導入視頻與音頻
Unity3D游戲引擎一共支持4個音樂格式的文件:.aiff和.wav適用于較短的音樂文件,可用作游戲打斗音效;.mp3和.ogg適用于較長的音樂文件可用作游戲背景音樂。
實現了訓練系統的所有設計后,就可將系統打包。Unity提供了諸多平臺供使用者打包,如Web平臺、PC/Mac平臺、IOS平臺和Flash平臺,可根據需求選擇相應平臺。
默認情況下點擊Unity的執行文件會彈出一個設置分辨率和渲染質量的對話框,可在Editor→Project Setting→Player中設置Display Resolution Dialog的值為disable,這樣就能去掉該對話框,然后需要設置默認分辨率以及在Quality Setting中設置默認渲染質量。設置完成后,通過File→Build Settings進行發布,并且把場景按照順序拖放至Current中,以實現鏈接跳轉。最后生成一個exe格式的可執行文件與一個數據文件夾,文件夾與可執行文件的名稱要保持一致,并保持目錄一致,不然無法正常運行。
在系統發布之前,從用戶群中抽樣幾個用戶進行體驗,3D游戲不同于2D游戲,很多人在初次接觸3D游戲時,會產生不同程度的暈眩感,可通過調整人物在游戲中的前進速度,視野旋轉速度來平衡不同人的感覺,通過用戶體驗調整虛擬環境中的美工設計、人機交互功能、UI設計等方面的問題,使整個系統不斷完善。
本文實現了在虛擬環境中進行定向越野訓練。訓練系統采用三維建模軟件、Unity3D引擎和其他輔助軟件共同完成,實現了在虛擬環境中進行訓練,豐富了訓練手段,既可結合軍事地形學用于軍事訓練,也可用于定向越野愛好者平時的訓練,還可用于大眾的日常娛樂。另外本文研究的關鍵技術也可以應用于包括電子、科技、安全、醫學等其他相關的虛擬現實和仿真領域[8]。
[1] 郭燁旻.基于粒子系統的三維云模擬方法及其研究[D].長春:東北師范大學,2010
[2] LU G P, XUE G H, CHEN Z. Design and Implementation of Virtual Interactive Scene Based on Unity3D[J].Advanced Materials Research, 2011, 317: 2 162-2 167
[3] 翁穎明.卓越游戲的誕生:游戲設計內幕[M]. 北京:清華大學出版社, 2010
[4] 黃石,李志遠,陳洪.游戲架構設計與策劃基礎[M].北京:清華大學出版社, 2010
[5] 歐陽攀,李強,盧秀慧.基于Unity3D的虛擬校園開發研究與實現[J].現代電子技術,2013,36(4):19-22
[6] 陳俊鋒.基于 Unity3D 的跨平臺手機網絡游戲的研究與實現[D]. 廣州:中山大學, 2013
[7] 宣雨松.Unity3D游戲開發[M]. 北京:人民郵電出版社, 2012
[8] 丁妹,胡志秋.虛擬建筑模型場景漫游系統[J].信息技術與信息化, 2005(1):46-57
P208
B
1672-4623(2016)07-0047-03
10.3969/j.issn.1672-4623.2016.07.014
張旭帆,碩士,研究方向為模式識別與智能系統。
2015-03-26。