劉霞 李曉華
摘 要
本文以真實(shí)校園(布局設(shè)計(jì)、交通、景觀、教學(xué)及生活環(huán)境)為藍(lán)本,實(shí)現(xiàn)訪問者以第一人稱視角進(jìn)行虛擬校園漫游,訪問者可通過W、A、S、D按鍵控制漫游路徑,增加了系統(tǒng)的交互性。
關(guān)鍵詞
虛擬漫游;Unity3D;3DsMax;虛擬校園
中圖分類號: TP391.9 ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.19694/j.cnki.issn2095-2457 . 2020 . 06 . 85
0 引言
虛擬現(xiàn)實(shí)技術(shù)是綜合計(jì)算機(jī)圖形技術(shù)、人機(jī)交互技術(shù)、電子信息、仿真技術(shù)及立體顯示技術(shù)等多種技術(shù)的實(shí)用技術(shù)。它通過模擬虛擬環(huán)境從而給人沉浸感,如同進(jìn)入真實(shí)世界,同時(shí)該技術(shù)具有交互性,用戶與虛擬環(huán)境可以相互作用。
虛擬漫游系統(tǒng)[1]是虛擬現(xiàn)實(shí)(Virtual Reality,簡稱VR)技術(shù)的運(yùn)用,以對象的實(shí)際數(shù)據(jù)為基礎(chǔ),創(chuàng)建一個(gè)虛擬的環(huán)境,讓用戶有身臨其境的沉浸感,具有逼真性和實(shí)時(shí)交互性。虛擬校園漫游系統(tǒng)是數(shù)字校園建設(shè)的基礎(chǔ),可以為學(xué)校樹立良好的形象,提高學(xué)校的知名度,宣傳校園文化,還可以作為校園規(guī)劃的輔助工具。虛擬校園漫游系統(tǒng)以真實(shí)校園(校園布局設(shè)計(jì)、交通、景觀、教學(xué)及生活環(huán)境)為藍(lán)本,實(shí)現(xiàn)訪問者以第一人稱視角進(jìn)行虛擬校園漫游,訪問者可通過W、A、S、D按鍵控制漫游路徑,增加了系統(tǒng)的交互性。
1 主要開發(fā)工具
3Dsmax 3Dsmax[2]是Autodesk公司開發(fā)的三維動(dòng)畫制作軟件 ,它是當(dāng)今世界上主流的三維建模、三維動(dòng)畫制作及渲染軟件,它采用幾何建模技術(shù),逼真度高,操作簡單,被廣泛應(yīng)用于制作室內(nèi)外效果圖、角色動(dòng)畫、虛擬現(xiàn)實(shí)、游戲開發(fā)等領(lǐng)域。它具有強(qiáng)大的渲染功能,渲染速度快、效果好。
Unity3D U3D是Unity Technologies開發(fā)的一款多平臺(tái)的綜合型游戲開發(fā)工具,通常用來制作動(dòng)漫、三維游戲、建筑漫游等,它可以和3Dsmax無縫對接,并且可以將場景文件打包成可執(zhí)行文件。它有豐富的內(nèi)置資源,包括自帶的植物、水體、天空盒、粒子效果等。它主要用來完成場景搭建、漫游交互體驗(yàn)等。
2 開發(fā)流程
首先,結(jié)合校園平面規(guī)劃CAD圖及實(shí)地測量、取景,得到實(shí)際地理數(shù)據(jù)和圖片;以此為參考,在3dmax中建立其對應(yīng)的三維模型;再將這些模型以兼容的格式導(dǎo)入到交互軟件Unity3D中進(jìn)行貼圖、場景構(gòu)建,然后實(shí)現(xiàn)交互漫游;最后導(dǎo)出exe文件,如圖1。
2.1 數(shù)據(jù)采集、處理和建模
場景建模包括建筑物建模和環(huán)境建模,場景所需的空間數(shù)據(jù)可以通過校園平面規(guī)劃CAD圖、實(shí)地測量和采集圖片獲取。本文的信息采集過程如下:
(1)學(xué)院辦公室協(xié)助提供學(xué)校早期的平面規(guī)劃CAD圖,獲得場景的分布和位置信息等主要數(shù)據(jù);
(2)實(shí)地測量學(xué)校后期建設(shè)的建筑物,獲取它的外形信息,如長、寬、高度數(shù)據(jù);
(3)對各建筑物進(jìn)行拍照,用Photosho進(jìn)行處理留作貼圖和材質(zhì)用;
(4)收集校園主要植物信息,確定種植的樹種。
(5)使用3DsMax進(jìn)行建筑物的建模(環(huán)境建模部分包括樹木、草坪和天空,這些選用U3D自帶的模型),將其發(fā)布成FBX格式的文件。
2.2 模型導(dǎo)入U(xiǎn)3D
具體步驟:
(1)運(yùn)行U3D,創(chuàng)建工程項(xiàng)目。
(2)U3D自帶的Tree、Water(Basic)、Water(Pro Only)快速創(chuàng)建虛擬環(huán)境,使用Create Terrain創(chuàng)建并編輯地形;使用Skyboxes完成天空的繪制。使用Direction Light創(chuàng)建燈光。
(3)將各類建筑物模型的.FBX格式文件導(dǎo)入到U3D中,在U3D中指定模型的材質(zhì)和貼圖。
(4)對天空、地面、墻壁和樓梯添加碰撞組件,避免漫游時(shí)出現(xiàn)穿越剛體的錯(cuò)誤效果。
3 系統(tǒng)交互設(shè)計(jì)
3.1 漫游功能的設(shè)計(jì)
人機(jī)交互技術(shù)是通過計(jì)算機(jī)輸入、輸出設(shè)備,以有效的方式實(shí)現(xiàn)人與計(jì)算機(jī)對話的技術(shù)。本系統(tǒng)的人機(jī)交互方式是讓用戶通過W、S、A、D按鍵控制漫游路徑。關(guān)鍵代碼如下:
Var Speed=25;
function Update () {
//鍵盤漫游
if (Input.GetKey (KeyCode.A)) {
transform.Translate(-Speed*Time.deltaTime,0,0, Space.Self);}
if (Input.GetKey (KeyCode.D)) {
transform.Translate( Speed* Time.deltaTime,0,0,Space.Self);}
if (Input.GetKey (KeyCode.W)) {
transform.Translate(0, 0, Speed*Time.deltaTime, Space.Self);}
if (Input.GetKey (KeyCode.S)) {
transform.Translate(0,0,-Speed*Time.deltaTime,Space.Self);}
3.2 GUI界面交互設(shè)計(jì)
當(dāng)單擊“開始”時(shí),能夠進(jìn)行場景的跳轉(zhuǎn),進(jìn)入場景,實(shí)現(xiàn)漫游。當(dāng)單擊“退出系統(tǒng)”時(shí)會(huì)自動(dòng)退出程序。
部分代碼如下:
Function OnGui(){
GUI.Label(Rect(270,140,400,200),str);
If(GUI.Button(Rect(240,300,100,25),”開始”))
{Application.LoadLevel(“l(fā)aizhiyuan02”);}
If(GUI.Button(Rect(550,300,100,25),”退出系統(tǒng)”))
{Application.Quit();}
}
3.3 碰撞檢測技術(shù)
碰撞檢測是模擬現(xiàn)實(shí)中的人或物體在遇到障礙物時(shí)發(fā)生的本能反應(yīng)。當(dāng)漫游角色碰到墻壁、大地、天空等物體時(shí),不能繼續(xù)向前,以此保證漫游的逼真性。U3D支持碰撞檢測,方式有兩種,一種是利用碰撞器,另一種是利用觸發(fā)器。使用碰撞器檢測,發(fā)生碰撞的物體之間會(huì)有碰撞模擬,會(huì)產(chǎn)生反彈或停頓。有些情況只需要檢測物體之間是否發(fā)生接觸,不需要產(chǎn)生碰撞效果,這種情況下可以使用觸發(fā)器進(jìn)行接觸檢測。
碰撞信息檢測:
Void OnCollisionEnter(Collision c)
{Debug.Log(c.gameObjet.name);}
觸發(fā)信息檢測:
void OnTriggerEnter(Collider collider){Debug.Log("starting”);}//開始接觸
void OnTriggerExit(Collider collider){Debug.Log("ending");}//接觸結(jié)束
void OnTriggerStay(Collider collider){Debug.Log("continuing");}//接觸持續(xù)中
4 軟件優(yōu)化
對該漫游系統(tǒng)的可執(zhí)行文件進(jìn)行了黑盒測試,系統(tǒng)運(yùn)行有些緩慢。分析原因主要是因?yàn)殡娔X硬件配置較低,這對模型數(shù)量和模型復(fù)雜度提出了要求。在保證逼真度的前提下,減少了部分環(huán)境建模,同時(shí)在建模過程中盡量減少模型的分段數(shù)和迭代次數(shù)。在U3D平臺(tái)上,對燈光進(jìn)行優(yōu)化,U3D有頂點(diǎn)燈光和像素?zé)艄鈨煞N渲染方式,頂點(diǎn)燈光只計(jì)算游戲模型的頂點(diǎn)照明和通過插值計(jì)算得出模型表面的所有光線;像素?zé)艄庑枰獙ζ聊幻總€(gè)像素進(jìn)行計(jì)算,耗費(fèi)資源。優(yōu)化程序,刪除腳本中不需要的方法;除了必要的地形和建筑,盡量縮小視角范圍;常用的變量或方法定義為全局靜態(tài)變量或方法;盡量少地使用除法和模運(yùn)算。
5 結(jié)論
隨著虛擬現(xiàn)實(shí)技術(shù)的發(fā)展,今后的軟件系統(tǒng)會(huì)更加友好,如何增加用戶的沉浸感、增強(qiáng)系統(tǒng)的交互性,是一個(gè)很有價(jià)值的課題。該系統(tǒng)實(shí)現(xiàn)了碰撞檢測和虛擬漫游,通過該項(xiàng)目的歷練可以促進(jìn)對Unity3D更深入地掌握,而Unity3D的強(qiáng)大功能將會(huì)帶領(lǐng)我們進(jìn)入一個(gè)欣欣向榮的、生機(jī)蓬勃的、充滿挑戰(zhàn)的新領(lǐng)域。
參考文獻(xiàn)
[1]https://baike.baidu.com/item/虛擬漫游/8458400?fr=aladdin.
[2]時(shí)代印象.3dsMax2016完全自學(xué)教程[M].北京: 人民郵電出版社,2017年:(1-10頁).
[3]https://baike.baidu.com/item/Unity3D/3064002?fr=aladdin.
[4]https://www.cnblogs.com/520YAOER/p/9709693.html.
[5]https://gameinstitute.qq.com/community/detail/118653.