李婧暉 甘勝江
摘 要:虛擬現實漫游系統以校園漫游為開發目標,結合HTC Vive設備,利用Unity3D引擎進行開發,提供了近乎真實的三維虛擬環境。用戶使用頭戴設備和手柄可以在某個空間內實現精準度極高的移動定位,從而實現在虛擬校園環境中的自由移動以及與環境互動。
關鍵詞:虛擬現實 HTC Vive Unity3D 校園漫游
中圖分類號:P208 文獻標識碼:A 文章編號:1672-3791(2018)04(a)-0014-02
虛擬現實技術就是利用電腦創建一個三維的虛擬世界,用戶可以通過輔助手段沉浸入其中,并和這個虛擬世界發生交互。但是這個虛擬的世界并不存在,是虛擬創造的,在這個創建的場景中,發生的任何事情都不會與真實世界產生實質上的聯系[1]。虛擬世界創建的時候,可以參考真實世界中的物理現象和社會文化。實際應用的時候,合成的虛擬世界和人的精神世界相互作用,人感受的都是虛擬世界。
Unity3D是如今最火爆的一款游戲開發引擎,它可以讓開發者輕松的創建各類型的互動內容,例如:虛擬現實、實時三維動畫、三維視頻游戲、可視化建筑等,具有優秀的實用性和簡便性[2]。
1 虛擬校園漫游系統的開發流程
1.1 系統開發流程
虛擬現實漫游系統的開發目標為,基于學校的真實環境,創建虛擬三維校園場景,用戶使用HTC Vive沉浸在校園場景中,通過手柄操作漫游整個校園,猶如真的在校園中漫步。
該系統開發流程主要分為三步:(1)基于校園CAD圖紙,創建整個校園建筑、地面、景觀的三維模型,主要是利用三維建模工具3DMax。(2)將三維模型導入Unity3D,在Unity3D進行設置與制作。(3)連接HTC Vive,利用腳本進行設置和制作,將模型與Unity3D連接,實現用戶與虛擬校園間的互動。
2 虛擬校園漫游系統的關鍵技術
虛擬校園漫游系統再現了校園的真實環境,重要的是提供了漫游和交互功能,尤為關鍵的是使用了虛擬顯示頭盔設備,讓用戶可以沉浸在虛擬場景中。該系統采用的關鍵技術主要有以下4種。
2.1 HTC Vive設備
用戶利用HTC Vive手柄的pad鍵,點擊PAD鍵時,會出現一個彎曲的箭頭指向地面,當再次點擊即可移動到指定的位置。用戶通過移動自身的方向來改變視角,通過這種方式讓體驗者的沉浸感達到最強。另外需要編寫互動腳本,處理碰撞事件,然后將其指定給待檢測對象。
2.2 3D拾取
在漫游過程中,允許用戶通HTC Vive手柄選中虛擬環境中的物體進行操作,這時就需要3D拾取技術。3D拾取技術的基本思想非常簡單,由攝影機和屏幕上的鼠標點擊位置確定一條射線,射線射向3D世界,最先和此射線相交的物體就是被選中的物體。
2.3 碰撞檢測
碰撞器是一群組件,Unity3D中利用的就是碰撞器來檢測對象之間的碰撞行為。比如:Box Collider(盒碰撞器)、Capsule Collider(膠囊碰撞器)、Mesh Collider(網格碰撞器)、Sphere Collider(球碰撞器)等。碰撞器實現步驟如下:(1)為需要進行碰撞檢測的對象添加碰撞器并修改其size屬性,確保其能將待檢測對象完全包圍。(2)設置碰撞器的Is Trigger屬性設置為ture。(3)將JavaScript腳本綁定到待檢測對象上。
2.4 VR插件
校園VR漫游的成功實現離不開unity官方自帶的一些插件,因此,正確配置VR的相關插件也就尤為重要,下面是配置VR插件的具體步驟:(1)設置Steam VR。SteamVR SDK是一個由 Valve 提供的官方庫,以簡化Vive開發。當前在Asset商店中是免費的,它同時支持Oculus Rift和HTC Vive。同時選中[CameraRig]和[SteamVR],將它們拖到結構窗口,調整坐標位置使其Y坐標為0。(2)導入Vive Input Utility。將Vive Pointers導入場景之中,添加ViveCollider,將兩者的世界坐標設置成和CamerRig一致。為地形添加“Teleportable”腳本,在EventRaycaster上添加組件腳本“Projectile Generator”腳本,最后修改Velocity屬性改變線的弧度即可實現攝像頭移動功能。
3 虛擬現實校園漫游系統的實現
3.1 資料準備
該系統構建在一個真實的校園環境的基礎上,為了盡可能地達到仿真效果,讓系統場景呈現出與校園實景一致的效果,需要先獲取校園的完整CAD圖,根據CAD圖進行建模;通過拍照等方式收集各種素材貼圖,用于在模型表面貼上素材以后顯得與真實場景盡量一致,整理好貼圖文件夾,以便后期調用和查看;下載其他資源或引用自帶的一些資源。
3.2 模型構建
制作校園環境時,為了減少每次載入的模型數量,先將整個校園場景分割成多個子場景,以加快系統加載速度,提升用戶體驗。校園環境中包含了教學樓、圖書館、體育館、體育場、食堂、宿舍等大量3D模型,因此,根據CAD圖紙進行整體布局,然后根據實際情況對校園場景進行更加細致的搭建。
3.3 Unity3D制作
(1)將FBX文件導入Unity3D,導入的模型比例可能有些不對,可在Scale處進行簡單設置,位置可通過手動拖動或輸入數值來確定。(2)制作地形Terrain,設置地形的大小,并給地形賦予材質;制作Main Camera(相機)、Directional light(方向光)、Point light(點光源)、Skybox(天空盒)和First Person Control(漫游控制器);調節Main Color、Shader類型并進行碰撞設置。(3)編寫C#腳本,實現交互功能。包括晝夜場景切換、建筑信息顯示,前者用于切換白天和夜景模式,用戶利用菜單設置顯示白天或者夜景;后者使得用戶在漫游過程中用手柄點擊校園中物體時,查看其相關信息或對其進行某種操作,比如:拾取某個物體。
3.4 手柄控制移動
通過手柄控制在場景中漫游是系統的主要功能,該功能通過利用HTC Vive手柄和頭盔控制攝影機運動, 實現用戶以第一人稱視角對整個校園環境的漫游。主要使用了兩個腳本ChTra.cs和Mo.cs。
(1)ChTra是為了獲取頭部Y軸方向的轉動和在X軸、Z軸方向的移動。并將其賦值給腳本綁定的對象上;(2)Mo是為了控制用戶的移動,根據 deright.GetA ()獲取在TouchPad中按下的位置信息,然后與(0,1)點求夾角,再根據這個角度判斷按下的鍵是手柄TouchPad的上、下、左、右。 移動方向根據綁定ChTra這個腳本的transform信息。以此實現頭盔轉動控制移動的方向,以及的上、下、左、右控制移動的向前、向左、向右、向后移動。
4 結語
本文使用3DMAX進行校園場景建模,利用Unity3D作為開發平臺,結合HTC Vive手柄和頭盔開發了一套沉浸式虛擬校園漫游系統。系統為體驗者提供了一個幾乎真實的虛擬校園環境,用戶佩戴頭盔并使用手柄就可以在這個校園環境中漫游。文中討論并實現了在Unity3D和HTC Vive平臺上構建虛擬現實校園漫游系統的關鍵技術。這些技術同樣可以應用于其他相關的虛擬現實和仿真領域。
參考文獻
[1] 朱惠娟.基于Unity3D的虛擬漫游系統 [J].計算機系統應用,2012,21(10):36-38.
[2] 干建松.基于Unity3d的室內漫游的關鍵技術研究[J].鹽城工學院學報,2011,24(4):56-59.