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