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