劉發(fā)久
(山西農(nóng)業(yè)大學(xué)信息學(xué)院,山西太谷030800)
基于Unity3D的虛擬校園
劉發(fā)久
(山西農(nóng)業(yè)大學(xué)信息學(xué)院,山西太谷030800)
虛擬校園是數(shù)字校園建設(shè)的基礎(chǔ),它的研究和創(chuàng)建對(duì)以后數(shù)字校園的建設(shè)有重要的現(xiàn)實(shí)意義。文章以山西農(nóng)業(yè)大學(xué)信息學(xué)院為例,采用多場(chǎng)景建模方法,構(gòu)建了虛擬校園的三維場(chǎng)景。運(yùn)用Unity3D跨平臺(tái)引擎,結(jié)合C#腳本語言,實(shí)現(xiàn)人機(jī)交互控制。在虛擬校園環(huán)境中,用戶可進(jìn)行三維空間的漫游、導(dǎo)覽,并能夠方便、詳盡的查詢校園各部分的相關(guān)信息。系統(tǒng)運(yùn)行效果良好、維護(hù)簡(jiǎn)單,說明了Unity3D是設(shè)計(jì)、開發(fā)虛擬現(xiàn)實(shí)平臺(tái)的有效工具。
虛擬漫游;虛擬校園;Unity3D;游戲引擎
近幾年隨著計(jì)算機(jī)技術(shù)的發(fā)展,校園信息化建設(shè)也快速發(fā)展,而虛擬校園是校園信息化建設(shè)的重要組成部分[1]。傳統(tǒng)的虛擬校園都是建立在二維平面地圖和影像地圖的基礎(chǔ)上,已經(jīng)不能滿足學(xué)校對(duì)外招生宣傳、校園導(dǎo)航、信息化管理的多元化功能需求[2]。三維虛擬校園基于虛擬現(xiàn)實(shí)技術(shù)和網(wǎng)絡(luò)技術(shù),它更直觀形象,更逼近校園的實(shí)景,并具有更好的交互性,能夠給使用者一種逼真、身臨其境的感覺。當(dāng)前,三維虛擬校園已成為校園門戶網(wǎng)不可缺少的重要欄目,對(duì)學(xué)校的對(duì)外形象宣傳、招生宣傳、信息化管理將產(chǎn)生重要的作用。本文采用3DMax為場(chǎng)景建模工具,選用Unity3D游戲引擎為開發(fā)平臺(tái),設(shè)計(jì)、開發(fā)了基于Web環(huán)境的三維虛擬校園,并深入討論了三維場(chǎng)景建模和漫游、交互設(shè)計(jì)中的一些關(guān)鍵技術(shù)。
Unity 3D是一套包括圖形、聲音、物理等功能的游戲引擎,提供了一個(gè)強(qiáng)大的關(guān)卡編輯器,支持大部分主流3D軟件格式,使用C#或JavaScript等高級(jí)語言實(shí)現(xiàn)腳本功能,使開發(fā)者無需了解底層復(fù)雜的技術(shù),快速地開發(fā)具有高性能、高品質(zhì)的游戲產(chǎn)品。Unity3D是跨平臺(tái)的3D游戲引擎,支持的平臺(tái)包括PC、Mac、Linux、Web、IOS、Android、Xbox360、PS3等大部分主流游戲平臺(tái)[3]。在很多時(shí)候,可以選擇在PC平臺(tái)開發(fā)和測(cè)試,然后只要很少的改動(dòng),就可以將游戲移植到其他平臺(tái)。
1.1虛擬校園開發(fā)流程
虛擬校園的開發(fā)遵循軟件開發(fā)的一般步驟,依次是分析、設(shè)計(jì)、開發(fā)、測(cè)試、修改反復(fù)且漸進(jìn)的完成所規(guī)劃的功能[4]。系統(tǒng)開發(fā)的流程可以分為兩大部分:第一部份是構(gòu)建校園的三維模型,其工作的主要內(nèi)容是利用三維建模軟件3DMax對(duì)校園地形、建筑和環(huán)境建模;第二部分是在虛擬校園環(huán)境中實(shí)現(xiàn)用戶與環(huán)境間的交互,其工作的主要內(nèi)容是編寫互動(dòng)腳本,利用腳本把靜態(tài)的三維模型與Unity3D連接起來,賦予模型交互的能力。系統(tǒng)開發(fā)的詳細(xì)流程如圖1所示。
圖1 虛擬校園開發(fā)流程
1.2虛擬校園設(shè)計(jì)
虛擬校園的設(shè)計(jì)目標(biāo)是給使用者提供一個(gè)盡可能逼真的校園仿真環(huán)境,并實(shí)現(xiàn)用戶與環(huán)境間的交互。虛擬校園的設(shè)計(jì)、規(guī)劃如下:
1)用戶可通過網(wǎng)絡(luò)訪問、瀏覽。為了適應(yīng)不同的網(wǎng)絡(luò)環(huán)境和硬、軟件設(shè)備,仿真場(chǎng)景不能過大,本文將校園劃分為6個(gè)子場(chǎng)景,并解決了子場(chǎng)景間的不可見問題。
2)校園三維展示功能。建立學(xué)校主要景觀如教學(xué)樓、體育場(chǎng)、圖書館、宿舍樓等建筑物的精細(xì)模型,盡量接近現(xiàn)實(shí)。
3)漫游功能。用戶可以通過鍵盤、鼠標(biāo)控制在校園內(nèi)隨意游覽,也可以通過導(dǎo)航菜單直接到達(dá)指定區(qū)域。
4)多媒體展示服務(wù)??梢栽趫?chǎng)景中嵌入視頻、音頻、文字等宣傳資料,訪問者到達(dá)特定區(qū)域后,可通過點(diǎn)播列表選擇播放內(nèi)容,現(xiàn)場(chǎng)感更強(qiáng)、三維展示更生動(dòng)。
5)設(shè)置鳥瞰圖、導(dǎo)航圖方便用戶對(duì)校園整體的了解。
2.1模型的構(gòu)建
模型是虛擬校園的基礎(chǔ),能夠直接影響到系統(tǒng)的仿真效果。校園模型主要包地表模型、建筑模型和環(huán)境模型。
地表模型可根據(jù)校園的等高線地形圖生成,首先用CAD對(duì)其進(jìn)行預(yù)處理,然后導(dǎo)入3DMax生成由不規(guī)則三角形面構(gòu)成的地表模型。建筑模型可根據(jù)校園平面規(guī)劃設(shè)計(jì)圖和樓宇的立面圖生成,將這些圖導(dǎo)入3DMax中生成精確的三維建筑模型。對(duì)于建筑物表面的細(xì)節(jié)例如陽臺(tái)、門窗、護(hù)欄等并沒有單獨(dú)建模,而是采用紋理映射的方法,用紋理圖片來代替復(fù)雜的模型結(jié)構(gòu)。環(huán)境模型主要包括樹木、花草和植被。校園場(chǎng)景中有大量的樹木,為了降低場(chǎng)景的復(fù)雜度,并未對(duì)樹木建模,而是采用廣告牌的制作方式?;ú莺椭脖徊捎昧思y理映射的方法。在模型的構(gòu)建中還考慮到對(duì)模型的優(yōu)化,通過采用刪除不可見面、減少材質(zhì)數(shù)量、壓縮貼圖等優(yōu)化方法,簡(jiǎn)化了模型,減少了模型的大?。?]。
圖2 虛擬校園模型
2.2場(chǎng)景設(shè)計(jì)
如果場(chǎng)景中包含了過多的模型,就會(huì)增加系統(tǒng)的載入時(shí)間和執(zhí)行時(shí)間,導(dǎo)致用戶在操作上出現(xiàn)長(zhǎng)時(shí)間的等待。為了改善這種情況,系統(tǒng)采用了多場(chǎng)景模式,即將校園劃分為多個(gè)完全獨(dú)立的子場(chǎng)景,并對(duì)每個(gè)子場(chǎng)景單獨(dú)建模。通過對(duì)校園的分割,減少了子場(chǎng)景中的模型數(shù)量,降低了子場(chǎng)景的復(fù)雜度,提高了渲染速度。在多場(chǎng)景模式中,用戶希望在哪個(gè)子場(chǎng)景中漫游,就載入哪個(gè)子場(chǎng)景而無須載入全部校園信息,這減少了系統(tǒng)的載入時(shí)間,使其更適合網(wǎng)絡(luò)瀏覽。本文將校園分為校門、教學(xué)樓和實(shí)驗(yàn)樓,圖書館,體育館,體育場(chǎng)和宿舍區(qū)1,食堂和宿舍區(qū)2等6個(gè)子場(chǎng)景,子場(chǎng)景間按“九宮格”的方式排布,其分布如圖3所示。
圖3 校園場(chǎng)景布局
由于子場(chǎng)景的獨(dú)立性,各子場(chǎng)景之間是完全不可見的,也就是說用戶在某個(gè)子場(chǎng)景中不可能看到其它子場(chǎng)景中的景物,但這并不符合實(shí)際情況,比如,站在圖書館門前應(yīng)該能看到體育館的側(cè)面輪廓。傳統(tǒng)的解決方法是在子場(chǎng)景的邊界設(shè)置綠化帶、雕塑等建筑物來遮擋用戶的視線,但這會(huì)影響仿真效果,降低用戶的體驗(yàn)感。本文通過對(duì)子場(chǎng)景的擴(kuò)展有效解決了子場(chǎng)景間的不可見問題,其擴(kuò)展原則是:擴(kuò)展有相鄰子場(chǎng)景的邊界,擴(kuò)展的寬度為用戶的視距,然后將相鄰子場(chǎng)景邊界處視距范圍內(nèi)的景物映射到擴(kuò)展區(qū)域的相應(yīng)位置。圖4為擴(kuò)展后的教學(xué)樓和實(shí)驗(yàn)樓子場(chǎng)景,圖中實(shí)線矩形框表示擴(kuò)展前的場(chǎng)景區(qū)域,虛線矩形框表示擴(kuò)展區(qū)域,實(shí)心矩形表示建筑物,可以看到在擴(kuò)展區(qū)域的景物實(shí)際上是相鄰子場(chǎng)景對(duì)應(yīng)區(qū)域的映像。
圖4 擴(kuò)展后的教學(xué)樓和實(shí)驗(yàn)樓場(chǎng)景
2.3交互設(shè)計(jì)與實(shí)現(xiàn)
將創(chuàng)建好的校園場(chǎng)景模型導(dǎo)入U(xiǎn)nity3D開發(fā)環(huán)境,然后使用C#編寫互動(dòng)腳本實(shí)現(xiàn)用戶與環(huán)境間的交互[6]。系統(tǒng)的交互設(shè)計(jì)主要包括校園漫游、場(chǎng)景鏈接交互和信息交互。
2.3.1校園漫游
漫游是虛擬校園的主要功能,系統(tǒng)支持用戶以第一人稱視角在校園中參觀、瀏覽。用戶借助鼠標(biāo)和鍵盤在校園中運(yùn)動(dòng),↑、↓、←、→鍵分別控制向前、向后、向左、向右運(yùn)動(dòng),鼠標(biāo)用于改變行進(jìn)方向。實(shí)現(xiàn)校園漫游功能的步驟如下:
1)構(gòu)建虛擬人物。導(dǎo)入人物模型,并命名為Player;新建一臺(tái)攝影機(jī)(Camera),將攝影機(jī)放到Player的頭部,并將其設(shè)置為Player的子對(duì)象,將環(huán)境觀察視角切換到攝影機(jī),實(shí)現(xiàn)了第一人稱視角;為Player添加一個(gè)膠囊碰撞體(CapsuleCollider)組件,用來感知碰撞和模擬碰撞后的效果,例如,碰到墻后會(huì)停下來,調(diào)節(jié)膠囊的大小,使其剛好包裹Player;為Player添加一個(gè)剛體(Rigibody)組件,使Player的運(yùn)動(dòng)符合物理規(guī)則,例如,由于受到重力作用,跳起后不會(huì)飛向天空而是會(huì)重新落回地面。
2)控制虛擬人物運(yùn)動(dòng)。為了使虛擬人物運(yùn)動(dòng),需要?jiǎng)?chuàng)建腳本PlayerMove,并將腳本指定給Player。下面舉例向前運(yùn)動(dòng)的代碼。
3)實(shí)例化虛擬人物。由于在每個(gè)場(chǎng)景中漫游都需要使用虛擬人物,因而創(chuàng)建Player的Prefab,并命名為PlayerPrefab;使用PlayerPrefab,通過編寫腳本InstantiatePlayer實(shí)例化虛擬人物,并將腳本指定給每個(gè)場(chǎng)景中的空對(duì)象。下面舉例實(shí)例化虛擬人物的代碼。
2.3.2場(chǎng)景鏈接交互
虛擬校園由6個(gè)場(chǎng)景構(gòu)成,用戶可通過場(chǎng)景間的交互鏈接自由地選擇漫游場(chǎng)景。系統(tǒng)提供兩種場(chǎng)景鏈接方式:其一是當(dāng)用戶到達(dá)場(chǎng)景中的特定位置時(shí),通過觸發(fā)碰撞事件實(shí)現(xiàn)場(chǎng)景間的鏈接;其二是用戶通過導(dǎo)航菜單直接鏈接到指定場(chǎng)景。文中主要介紹通過觸發(fā)碰撞事件實(shí)現(xiàn)場(chǎng)景鏈接的方法,其實(shí)現(xiàn)步驟如下:
1)創(chuàng)建Cube對(duì)象,調(diào)整Cube的位置和大小,使其剛好包括場(chǎng)景中的某個(gè)擴(kuò)展區(qū)域;將Cube的Box Collider組件的Is Trigger屬性設(shè)為真;刪除Cube的Mesh Renderer組件;用擴(kuò)展區(qū)域所對(duì)應(yīng)的場(chǎng)景名命名對(duì)象。
2)編寫場(chǎng)景鏈接腳本,并將其添加到Cube對(duì)象上。下面舉例場(chǎng)景鏈接的代碼。
3)重復(fù)執(zhí)行以上操作,為場(chǎng)景的每一個(gè)擴(kuò)展區(qū)域創(chuàng)建對(duì)應(yīng)的Cube對(duì)象
2.3.3信息交互
用戶在漫游的過程中,可以通過信息交互,方便、快捷地查詢校園各部分的相關(guān)信息。系統(tǒng)提供兩種信息交互方式:其一是通過點(diǎn)擊物體實(shí)現(xiàn)信息交互。例如,用戶點(diǎn)擊公告板可以彈出信息瀏覽子窗體,查詢學(xué)校最新公告和課程表等信息;其二是通過觸發(fā)碰撞事件實(shí)現(xiàn)信息交互。比如,當(dāng)用戶到達(dá)圖書館門口,就會(huì)出現(xiàn)圖書館的信息提示菜單,用戶可選擇通過視頻、音頻或文字介紹,查詢圖書館的歷史、建筑布局和館藏書籍等信息。碰撞交互的過程與場(chǎng)景鏈接的過程類似,本文主要介紹點(diǎn)擊交互的實(shí)現(xiàn)方法。點(diǎn)擊交互應(yīng)用了3D拾取技術(shù),即由攝影機(jī)和屏幕上的點(diǎn)擊位置確定一條射線,射線射向世界空間,最先和射線相交的物體就是被選中的物體。下面舉例是查詢公告板信息的部分代碼。
文中將虛擬現(xiàn)實(shí)技術(shù)應(yīng)用到數(shù)字化校園建設(shè)中,采用多場(chǎng)景建模方法,利用3DMax構(gòu)建了三維校園模型。借助Unity3D游戲引擎實(shí)現(xiàn)了校園漫游,場(chǎng)景鏈接交互和信息交互。最后利用Unity3D的多平臺(tái)部署功能,將其發(fā)布到Web平臺(tái)。用戶通過網(wǎng)絡(luò)在計(jì)算機(jī)上進(jìn)行漫游,對(duì)校園景觀、校內(nèi)的各種設(shè)施和服務(wù)等獲得身臨其境的感受。通過系統(tǒng)的開發(fā),也證明了Unity3D是設(shè)計(jì)、開發(fā)虛擬現(xiàn)實(shí)平臺(tái)的有效工具。
[1]朱惠娟.基于Unity3D的虛擬漫游系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012,21(10):36-38.
[2]歐陽攀,李強(qiáng),盧秀慧.基于Unity3D的虛擬校園開發(fā)研究與實(shí)現(xiàn)[J].現(xiàn)代電子技術(shù),2013,4(2):19-22.
[3]金璽曾.Unity 3D手機(jī)游戲開發(fā)[M].北京:清華大學(xué)出版社,2013.
[4]李遠(yuǎn)鑫,蔣海鷗,徐亦飛,等.基于Web3D的交互式虛擬社區(qū)[J].計(jì)算機(jī)工程,2011,37(11):289-290.
[5]劉海川,王小鵬,王磊.虛擬校園模型構(gòu)建及優(yōu)化[J].電子科技,2010(11):1-3.
[6]任宏萍,周犇.基于Virtools的虛擬校園在線交互設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)工程與科學(xué),2011,33(11):117-119.
Virtual campus based on Unity3D
LIU Fa-jiu
(College of information,Shanxi Agricultural University,Taigu 030800,China)
Virtual campus is the foundation of digital campus construction,the research on it has great significance to the further study on digital campus.Taking college of information,Shanxi Agricultural University as an example,this paper adopt the modeling method in multi-scene and build 3D scene of virtual campus.The Unity3D cross-platform engine and C#script language are applied on man-machine interactive control.The virtual campus enables the users to navigate the 3D virtual space,to guide and browse,and to inquire conveniently about relevant campus information at full length.The system runs well and maintain expediently,which means Unity3D is an effective tool for designing and developing a virtual reality platform.
virtual system of navigating;virtual campus;Unity3D;game engine
TN02
A
1674-6236(2016)12-0037-03
2015-06-27稿件編號(hào):201506227
劉發(fā)久(1958—),男,遼寧大連人,碩士,教授。研究方向:游戲開發(fā)、虛擬現(xiàn)實(shí)、人工智能。