張紹江
(天津中德職業(yè)技術(shù)學(xué)院,天津,300350)
基于Unity虛擬校園漫游系統(tǒng)的設(shè)計與開發(fā)
張紹江
(天津中德職業(yè)技術(shù)學(xué)院,天津,300350)
隨著虛擬現(xiàn)實技術(shù)的不斷發(fā)展和計算機硬件系統(tǒng)性能的不斷提高,虛擬現(xiàn)實技術(shù)已被廣泛應(yīng)用于眾多領(lǐng)域,虛擬校園漫游系統(tǒng)就是其中之一,它讓學(xué)生足不出戶就能游覽校園全貌,感受校園文化,對學(xué)校的對外宣傳起到積極作用。文章使用Unity游戲引擎設(shè)計了一套虛擬校園漫游系統(tǒng),并介紹了該系統(tǒng)的開發(fā)流程和使用的關(guān)鍵技術(shù)。
虛擬現(xiàn)實;虛擬校園;漫游;Unity
虛擬現(xiàn)實(Virtual Reality,簡稱VR)是在綜合使用計算機圖形圖像技術(shù)、傳感器技術(shù)、人機交互技術(shù)、網(wǎng)絡(luò)技術(shù)、多媒體技術(shù)等創(chuàng)設(shè)的一個以視覺感受為主,包括聽覺等多種感受在內(nèi)的人工虛擬世界,并在這個虛擬世界中運用多種交互手段給人一種多感官的刺激,是一種高級的人機交互系統(tǒng)[1]。同時,虛擬現(xiàn)實不僅是一個演示載體,還是一個設(shè)計工具,它以視覺為主要形式產(chǎn)生一個多維的信息空間,為我們創(chuàng)建和體驗虛擬世界提供了有利的支持[2]。隨著虛擬現(xiàn)實技術(shù)的不斷發(fā)展和計算機硬件系統(tǒng)性能的大幅提升,虛擬現(xiàn)實技術(shù)的應(yīng)用領(lǐng)域從最初的軍事仿真已逐漸過渡到文物保護、交通模擬、城市規(guī)劃、室內(nèi)設(shè)計、游戲開發(fā)、教育教學(xué)等諸多領(lǐng)域,并取得了巨大的發(fā)展。其中虛擬校園漫游系統(tǒng)就是虛擬現(xiàn)實技術(shù)在校園景觀展示方面的應(yīng)用。
Unity是一款跨平臺的游戲開發(fā)引擎,主要應(yīng)用于虛擬現(xiàn)實、建筑可視化、三維視頻游戲等互動系統(tǒng)的開發(fā)。其主要特點是入門簡單、自動化程度高,可同時運行在windows和Mac OS操作系統(tǒng)下,支持C#、JavaScript、Boo三種腳本語言,其成品可發(fā)布至windows、Mac、Android等多種平臺。
按照虛擬現(xiàn)實系統(tǒng)開發(fā)的一般流程,可以將虛擬校園漫游系統(tǒng)的開發(fā)流程分為素材的收集與整理、三維場景的建立與優(yōu)化及系統(tǒng)交互的開發(fā)4個部分,如圖1所示。
圖1 虛擬校園漫游系統(tǒng)的開發(fā)流程圖
素材的收集與整理為三維場景的建立提供校園內(nèi)部建筑、場地、道路等尺寸數(shù)據(jù)和外觀圖像素材;三維場景建立后要優(yōu)化并導(dǎo)入到Unity中進行使用;最后在Unity中進行系統(tǒng)交互的開發(fā)。
(一)三維場景建模技術(shù)
在三維場景的建立過程中,校園中的地面、建筑等主要使用3DS MAX軟件來完成。先通過丈量好的尺寸數(shù)據(jù)或施工圖紙繪出建筑外觀輪廓線,再制作建筑物外墻,然后通過布爾運算和對多邊形中的頂點、邊、面和元素進行修改,完成建筑模型的建立。最后,將處理好的建筑外觀圖像作為建筑模型的貼圖進行應(yīng)用,如圖2所示。
圖2 使用3DS MAX進行建筑建模圖
在3DS MAX中建立的三維模型需要導(dǎo)出到Unity中進行使用。常用的方法是在3DSMAX中將文件導(dǎo)出為.FBX文件,連同貼圖一同放置到Unity的資源文件夾中。打開Unity后,即可自動加載,供開發(fā)人員使用。
對于天空盒的建立,Unity中提供了一個設(shè)置選項,可以方便地使用Unity中默認(rèn)的天空盒資源,或者自定義5張可無縫連接圖片進行天空盒的設(shè)置。
(二)三維場景的優(yōu)化技術(shù)
三維場景中面數(shù)的多少直接關(guān)系到系統(tǒng)運行的效率,因此要盡量降低模型的面數(shù),以達(dá)到系統(tǒng)流暢運行的目的[3]。
1.三維建筑的優(yōu)化
一是將漫游過程中看不到的面降低其復(fù)雜程度,使用一個平面來代替;二是使用紋理貼圖技術(shù),將面數(shù)較多的外墻文字、門窗部分的模型,復(fù)雜的光影效果等元素進行先期渲染,然后作為虛擬校園中建筑的貼圖使用,以達(dá)到減少面數(shù)的目的。
2.樹木、路燈、隔離墩等場景元素的優(yōu)化
在校園場景中,離不開樹木、隔離墩、垃圾桶等場景元素,數(shù)量多且不是重點??墒褂肈oubleBoarding(交叉板)技術(shù)進行優(yōu)化,即使用兩個互相垂直且中心交叉的平面,并為其添加樹木、隔離墩等場景元素的透明紋理。
3.實時交互技術(shù)
系統(tǒng)交互主要在Unity中開發(fā)。虛擬校園漫游系統(tǒng)中的交互主要是鍵盤與鼠標(biāo)的交互,通過鍵盤和鼠標(biāo)的控制改變場景中漫游視角的瀏覽位置與角度,主要使用C#腳本語言編寫的腳本文件來實現(xiàn)。例如向前移動的交互代碼為:
此外,GUI也是虛擬校園漫游系統(tǒng)的主要交互方式,負(fù)責(zé)系統(tǒng)漫游方式的選擇、系統(tǒng)的幫助和退出。例如,創(chuàng)建“自動漫游”功能按鈕的代碼如下:
4.碰撞檢測技術(shù)
碰撞檢測是虛擬現(xiàn)實中一項重要技術(shù),是基于現(xiàn)實生活中一個普遍存在的事實:兩個不可穿透的對象不能共享相同的空間區(qū)域[4]。碰撞檢測技術(shù)的主要目的是檢測兩個物體之間是否發(fā)生了碰撞,如果發(fā)生碰撞將如何進行處理。好的碰撞檢測要求物體在場景中可以平滑移動[5]。在Unity中,內(nèi)置了盒形碰撞器、球體碰撞器、膠囊碰撞器、網(wǎng)格碰撞器等來實現(xiàn)物體之間的碰撞檢測。用于進行碰撞檢測的函數(shù)有:
MonoBehaviour.OnCollisionEnter(Collision colli sionInfo)、
MonoBehaviour.OnCollisionExit(Collision collision Info)、
MonoBehaviour.OnCollisionStay(Collision collision Info),分別表示當(dāng)進入碰撞器、退出碰撞器和逗留碰撞器時所觸發(fā)的函數(shù)。
(一)系統(tǒng)的總體規(guī)劃與功能設(shè)計
虛擬校園漫游系統(tǒng)一般是在網(wǎng)頁瀏覽器上展示學(xué)校整體面貌的系統(tǒng),為使用戶能夠直觀獲取校園的外觀特征,校園中的建筑、場地等都真實重現(xiàn),并且用戶可以通過鼠標(biāo)、鍵盤自主控制觀看角度。虛擬校園漫游系統(tǒng)主要實現(xiàn)以下功能:
1.漫游功能
系統(tǒng)的漫游功能包含自動漫游與交互式漫游兩種方式。自動漫游是指漫游路徑已固定的方式,在該方式下瀏覽視角將按照規(guī)劃好的路徑進行運動,用戶不能改變其狀態(tài)。交互式漫游是用戶可以通過鼠標(biāo)、鍵盤等交互方式控制瀏覽視角與位置的方式,這種方式需要用戶手動控制,靈活性更強。
2.GUI功能
系統(tǒng)提供操作方便的GUI用戶界面,用于控制手動漫游與交互式漫游之間的相互切換,以及幫助、退出系統(tǒng)等功能。
(二)系統(tǒng)主要功能的實現(xiàn)
1.自動漫游功能的實現(xiàn)
自動漫游功能是按照預(yù)先設(shè)定好的路徑進行的漫游,可以通過為顯示漫游瀏覽內(nèi)容的主攝像機(以后稱為“漫游攝像機”)設(shè)定動畫的方式來實現(xiàn)。這需要在Animation(動畫)面板中為漫游攝像機設(shè)置關(guān)鍵幀動畫,如圖3所示。
圖3 為漫游攝像機設(shè)置關(guān)鍵幀動畫圖
2.交互式漫游功能的實現(xiàn)
由于交互式漫游功能是用戶控制漫游攝像機進行瀏覽的方式,整個漫游的路徑受用戶控制,為避免漫游攝像機與建筑、樹木等碰撞后“穿入”其內(nèi)部的情況,需要為場景中的物體添加碰撞器,進行碰撞檢測。
交互式漫游使用Unity中的第一人稱角色控制器來實現(xiàn),給人以強烈的沉浸感。在實現(xiàn)上使用一個名稱為“First Person Controller”的物體作為用戶操作的對象,同時添加“Character Controller”這一角色控制組件和Mouse Look、Character Motor、FPSInput Controller三個C#腳本組件,即可實現(xiàn)交互式漫游功能。
3.GUI界面的實現(xiàn)
GUI界面主要用于實現(xiàn)手動漫游與交互式漫游之間的切換、打開幫助和退出系統(tǒng)等功能,以界面功能按鈕為主。例如,由手動漫游向交互式漫游進行切換時,用戶只需使用鼠標(biāo)點擊“交互式漫游”按鈕,然后系統(tǒng)將關(guān)閉自動漫游攝像機,打開交互漫游攝像機,完成功能的轉(zhuǎn)換。具體程序如下:
void OnGUI(){
if(GUI.Button(newRect(400,560,100,50),"交互式漫游")){
其他功能按鈕使用同樣的方法進行創(chuàng)建,并為其添加被點擊時所執(zhí)行的語句。完成后的效果,如圖4所示。
圖4 GUI界面功能按鈕圖
隨著計算機技術(shù)和虛擬現(xiàn)實技術(shù)的不斷發(fā)展,虛擬現(xiàn)實技術(shù)已經(jīng)成為用戶通過計算機來獲取知識信息的新途徑。虛擬校園漫游系統(tǒng)是使用Unity進行開發(fā)的能夠在瀏覽器上使用的校園展示系統(tǒng),它為學(xué)生及其家長提供了一個了解學(xué)校的平臺,對學(xué)校的對外宣傳起到了積極的作用。
[1]石教英.虛擬現(xiàn)實基礎(chǔ)及實用算法[M].北京:科學(xué)出版社,2002:1-3.
[2]Steven M.Drucker,David Zeltzer.Intelligent Camera Control in a Virtual Environment[J].USA:Computing&Electronic Books,1998,34-57.
[3]賈民政,劉書香.3ds Max中低多邊形模型的創(chuàng)建方法研究.北京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報[J],2012 (7):36-39.
[4]王祎.虛擬現(xiàn)實中碰撞檢測關(guān)鍵技術(shù)研究[D].吉林:吉林大學(xué),2009.
[5]王樹斌.淺析Unity3d開發(fā)游戲流程及常用技術(shù)[J].電腦知識與技術(shù),2012,8(22):5351-5352.
編輯 朱榮華
G712
A
2095-8528(2014)02-065-03
2014-07-03
張紹江(1980-),男,天津市人,碩士,天津中德職業(yè)技術(shù)學(xué)院藝術(shù)系講師,研究方向為影視動畫與虛擬現(xiàn)實。