張旭帆,閆 鶴,寇 程
(1.西安測繪總站,陜西 西安 710043)
虛擬環(huán)境中的定向越野訓(xùn)練
張旭帆1,閆 鶴1,寇 程1
(1.西安測繪總站,陜西 西安 710043)
將虛擬現(xiàn)實技術(shù)引入定向越野訓(xùn)練研究中,為定向越野訓(xùn)練提供了一種全新的手段。以游戲引擎——Unity3D為虛擬環(huán)境的開發(fā)平臺,利用DEM數(shù)據(jù)和影像圖,以3ds Max軟件實現(xiàn)虛擬環(huán)境中的三維建模和貼圖,將軍事地形學(xué)和相關(guān)測繪知識融入訓(xùn)練中,實現(xiàn)了定向越野的虛擬訓(xùn)練系統(tǒng),增強了訓(xùn)練的效果和娛樂性。
虛擬;定向越野;Unity3D
虛擬現(xiàn)實技術(shù)是以沉浸性、交互性和構(gòu)想性為基本特征的計算機高級人機界面,綜合應(yīng)用了計算機圖形學(xué)、仿真技術(shù)、多媒體技術(shù)、人工智能技術(shù)、計算機網(wǎng)絡(luò)技術(shù)、并行處理技術(shù),模擬人的視覺、聽覺、觸覺等感官功能,使人能夠沉浸在計算機生成的虛擬境界中,并能通過語言、手勢等自然方式與之進行實時交互,創(chuàng)建了一種適人化的多維信息空間[1]。定向越野運動是一項帶有軍事色彩的體育運動,最初以軍隊和教育部門的軍事訓(xùn)練、測繪部門的科普工作為中心進行。參加者借助地圖和指北針,以徒步越野賽跑的形式,按順序到達地圖上所標示的各個點標(亦稱檢查點),以最短的時間完成規(guī)定賽程。
利用Unity3D創(chuàng)建一個虛擬環(huán)境,用以進行定向越野訓(xùn)練,可有效解決實際訓(xùn)練中場地受限的問題。Unity是一款穩(wěn)定、高效的跨平臺3D游戲引擎,以其強大的跨平臺特性與絢麗的3D渲染效果而聞名[2]。利用虛擬環(huán)境進行訓(xùn)練,也是定向越野在訓(xùn)練方式上的突破。
系統(tǒng)設(shè)計的核心原則涉及游戲的設(shè)計思路和必須遵守的原則。在設(shè)計的過程中,絕對不可以違背設(shè)計原則,一旦設(shè)計與這些原則有沖突,需要重新設(shè)計[3-4]。要根據(jù)設(shè)計原則,進行模型構(gòu)建、數(shù)據(jù)準備和游戲環(huán)境的設(shè)計,最后在Unity3D中進行渲染,才能達到相應(yīng)效果,如圖1所示。
游戲的設(shè)計必須遵循定向越野運動的規(guī)則和特性,在虛擬環(huán)境中,利用游戲的形式進行訓(xùn)練可以增強訓(xùn)練的娛樂性。在游戲中,根據(jù)影像數(shù)據(jù)選擇一條具有明顯特征的行進路線,在行進過程中設(shè)置兩個點標和遇到迷路的幫助功能。
圖1 系統(tǒng)示意圖
2.1 交互設(shè)計
訓(xùn)練系統(tǒng)中采用第一人稱視角,增強受訓(xùn)者在虛擬環(huán)境中的沉浸感,可通過Unity3D自身附著在First Person Controller上的C#和Java腳本實現(xiàn)。當用戶移動鼠標時,MouseLook腳本控制角色在水平和豎直兩個平面內(nèi)視野的旋轉(zhuǎn);FPSWalker腳本控制人物行走、跳躍、奔跑、旋轉(zhuǎn)等功能。在行進過程中,使用W、A、S、D四個鍵實現(xiàn)前后左右來控制行走功能。例如,前進的代碼如下:
另外一種重要的交互功能是GUI界面的設(shè)計。在定向越野過程中,受訓(xùn)者可通過選擇按鈕進行相應(yīng)步驟,也可切換場景和退出訓(xùn)練,如圖2所示。部分代碼如下:
圖2 GUI界面設(shè)計
2.2 碰撞檢測
碰撞檢測也稱為干涉檢測或接觸檢測,是基于現(xiàn)實生活中一個普遍存在的事實:兩個不可穿透的對象不能共享相同的空間區(qū)域。碰撞檢測作為VR系統(tǒng)中的一個關(guān)鍵組成部分,主要任務(wù)是判斷物體模型之間、模型與場景之間是否發(fā)生了碰撞,以及給出碰撞位置、穿刺深度等信息[5]。
在導(dǎo)入Unity3D場景中的各種模型上,也需通過Component→Physics加上不同的碰撞器。只有附加碰撞器后,模型才能執(zhí)行附加的腳本。Unity一共為對象提供了5種碰撞器,分別是Box Collider、Sphere Collider、Capsule Collider、Mesh Collider和 Wheel Collider,可根據(jù)模型的碰撞方式選擇相應(yīng)的碰撞器。
2.3 屏幕自適應(yīng)
用 Unity 開發(fā)移動平臺的游戲不可避免地會遇到屏幕分辨率的問題:不同的屏幕分辨率使得原本正常的 UI 變得亂七八糟。在 Unity 中可用一個 plane作為背景,UI 則是繪制在離攝像機最近的位置,可以認為是繪制在攝像機上的。因此分辨率的不同會導(dǎo)致 UI 的位置和大小出現(xiàn)錯誤[6]。
將游戲開發(fā)環(huán)境的屏幕分辨率,與當前屏幕分辨率的 X 軸和 Y 軸相除,就可得出相應(yīng)的縮放比例,所有 UI 控件的坐標都乘以相應(yīng)的比率系數(shù),就可保持UI 的相對位置不變。同時,若 UI 控件較多時,沒必要對每一個都去控制大小,可在 UI 函數(shù)的開始設(shè)置縮放矩陣,這樣所有的 UI 都會受矩陣的控制。部分代碼如下:
3.1 三維場景的開發(fā)
三維場景中包含諸多元素,可分為常用元素與不常用元素兩種。常用元素是場景中一些較重要的元素,需要使用腳本來實現(xiàn)一些特殊功能,如用戶控制的主角對象、通關(guān)的必要條件等,因此常用元素將直接影響系統(tǒng)的繼續(xù)運行;而不常用元素在三維世界中主要起裝飾作用,如場景中的天空、云朵、樹木和地形等,不會影響系統(tǒng)主線,但它們可以提升系統(tǒng)的整體效果。任何一款完美的游戲都需要使用這些不常用元素來配合,它們的存在往往是場景畫面的保證[7]。
三維場景的開發(fā)即虛擬環(huán)境的構(gòu)建。首先創(chuàng)建地形,Unity中有一套非常好的地形編輯器,可讓開發(fā)者構(gòu)建任何復(fù)雜的地形。為了使三維場景更加貼近實地,使用訓(xùn)練場地的DEM數(shù)據(jù)在三維場景中生成地形。先將DEM數(shù)據(jù)導(dǎo)入Globel Mapper中,利用該軟件對數(shù)據(jù)進行處理,導(dǎo)出一張地形灰度圖(圖3);再將其轉(zhuǎn)成.raw格式文件;最后將.raw文件直接導(dǎo)入Unity中,即可生成相應(yīng)的地形。然后根據(jù)當?shù)氐挠跋駡D,在地形上添加元素,如樹木、草坪、石頭和河流等,如圖4所示。
圖3 地形灰度圖
圖4 場景俯視圖
3.2 三維模型的構(gòu)建
在一個完整的游戲場景中,僅有地形是不夠的。根據(jù)影像圖和系統(tǒng)的需要,場景中還需要大量的模型來增加場景的真實感。模型是3D游戲重要的組成部分,可分為兩種:靜態(tài)模型,如游戲場景中的桌子、椅子等;帶動畫的模型,如主角、敵人等會行走、懂AI的模型。訓(xùn)練系統(tǒng)中加入的都是靜態(tài)模型。
先用3ds Max和Photoshop構(gòu)建場景中需要的各種模型和貼圖;再將模型導(dǎo)出為Unity3D可以兼容的.fbx格式;最后將模型與貼圖一起放入Project中,并將模型文件、材質(zhì)文件和貼圖文件作好分類。部分模型如圖5所示。
圖5 部分模型示意圖
3.3 導(dǎo)入視頻與音頻
Unity3D游戲引擎一共支持4個音樂格式的文件:.aiff和.wav適用于較短的音樂文件,可用作游戲打斗音效;.mp3和.ogg適用于較長的音樂文件可用作游戲背景音樂。
實現(xiàn)了訓(xùn)練系統(tǒng)的所有設(shè)計后,就可將系統(tǒng)打包。Unity提供了諸多平臺供使用者打包,如Web平臺、PC/Mac平臺、IOS平臺和Flash平臺,可根據(jù)需求選擇相應(yīng)平臺。
默認情況下點擊Unity的執(zhí)行文件會彈出一個設(shè)置分辨率和渲染質(zhì)量的對話框,可在Editor→Project Setting→Player中設(shè)置Display Resolution Dialog的值為disable,這樣就能去掉該對話框,然后需要設(shè)置默認分辨率以及在Quality Setting中設(shè)置默認渲染質(zhì)量。設(shè)置完成后,通過File→Build Settings進行發(fā)布,并且把場景按照順序拖放至Current中,以實現(xiàn)鏈接跳轉(zhuǎn)。最后生成一個exe格式的可執(zhí)行文件與一個數(shù)據(jù)文件夾,文件夾與可執(zhí)行文件的名稱要保持一致,并保持目錄一致,不然無法正常運行。
在系統(tǒng)發(fā)布之前,從用戶群中抽樣幾個用戶進行體驗,3D游戲不同于2D游戲,很多人在初次接觸3D游戲時,會產(chǎn)生不同程度的暈眩感,可通過調(diào)整人物在游戲中的前進速度,視野旋轉(zhuǎn)速度來平衡不同人的感覺,通過用戶體驗調(diào)整虛擬環(huán)境中的美工設(shè)計、人機交互功能、UI設(shè)計等方面的問題,使整個系統(tǒng)不斷完善。
本文實現(xiàn)了在虛擬環(huán)境中進行定向越野訓(xùn)練。訓(xùn)練系統(tǒng)采用三維建模軟件、Unity3D引擎和其他輔助軟件共同完成,實現(xiàn)了在虛擬環(huán)境中進行訓(xùn)練,豐富了訓(xùn)練手段,既可結(jié)合軍事地形學(xué)用于軍事訓(xùn)練,也可用于定向越野愛好者平時的訓(xùn)練,還可用于大眾的日常娛樂。另外本文研究的關(guān)鍵技術(shù)也可以應(yīng)用于包括電子、科技、安全、醫(yī)學(xué)等其他相關(guān)的虛擬現(xiàn)實和仿真領(lǐng)域[8]。
[1] 郭燁旻.基于粒子系統(tǒng)的三維云模擬方法及其研究[D].長春:東北師范大學(xué),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] 翁穎明.卓越游戲的誕生:游戲設(shè)計內(nèi)幕[M]. 北京:清華大學(xué)出版社, 2010
[4] 黃石,李志遠,陳洪.游戲架構(gòu)設(shè)計與策劃基礎(chǔ)[M].北京:清華大學(xué)出版社, 2010
[5] 歐陽攀,李強,盧秀慧.基于Unity3D的虛擬校園開發(fā)研究與實現(xiàn)[J].現(xiàn)代電子技術(shù),2013,36(4):19-22
[6] 陳俊鋒.基于 Unity3D 的跨平臺手機網(wǎng)絡(luò)游戲的研究與實現(xiàn)[D]. 廣州:中山大學(xué), 2013
[7] 宣雨松.Unity3D游戲開發(fā)[M]. 北京:人民郵電出版社, 2012
[8] 丁妹,胡志秋.虛擬建筑模型場景漫游系統(tǒng)[J].信息技術(shù)與信息化, 2005(1):46-57
P208
B
1672-4623(2016)07-0047-03
10.3969/j.issn.1672-4623.2016.07.014
張旭帆,碩士,研究方向為模式識別與智能系統(tǒng)。
2015-03-26。