王守平,陸海燕,寧寶寬,楊思瑤
(沈陽工業(yè)大學(xué) 建筑與土木工程學(xué)院,沈陽 110870)
虛擬現(xiàn)實(shí)技術(shù)是計(jì)算機(jī)技術(shù)與藝術(shù)相結(jié)合的新興產(chǎn)物[1],涉及了計(jì)算機(jī)圖形學(xué)、人機(jī)交互、人工智能等學(xué)科的一項(xiàng)綜合技術(shù),并且它具有交互性、沉浸感、構(gòu)想性3個(gè)最突出的特征。由于虛擬現(xiàn)實(shí)技術(shù)對(duì)真實(shí)環(huán)境的強(qiáng)大的虛擬功能和給用戶帶來的強(qiáng)烈的沉浸感和自然真實(shí)的交互性,所以被廣泛應(yīng)用于醫(yī)學(xué)、游戲、建筑設(shè)計(jì)、航空航天等多個(gè)領(lǐng)域[2]。劉芳英[3]等研究了虛擬現(xiàn)實(shí)技術(shù)在大型公共建筑規(guī)劃動(dòng)態(tài)分析中的應(yīng)用關(guān)鍵技術(shù)和創(chuàng)新論證方案。王要武[4]等論述了虛擬現(xiàn)實(shí)技術(shù)在建筑和房地產(chǎn)業(yè)及建筑教育領(lǐng)域的應(yīng)用,通過分析給出了虛擬現(xiàn)實(shí)技術(shù)在這些領(lǐng)域的應(yīng)用模型。朱惠娟[5]通過實(shí)踐的研究結(jié)果得出Unity3D具有很好的網(wǎng)絡(luò)三維展示和交互功能,是虛擬平臺(tái)設(shè)計(jì)開發(fā)的一個(gè)有力工具的結(jié)論。
Unity3D游戲引擎是目前最專業(yè)、最熱門、最具前景的虛擬現(xiàn)實(shí)開發(fā)工具,它是由UnityTechnologies開發(fā)的一個(gè)讓玩家輕松創(chuàng)建諸如三維視頻游戲、建筑可視化和實(shí)時(shí)的三維動(dòng)畫等類型互動(dòng)內(nèi)容的多平臺(tái)的綜合型游戲開發(fā)工具,是一個(gè)全面整合的專業(yè)游戲引擎[6]。
本文旨在通過Unity3D創(chuàng)建一種全新的建筑方案展示系統(tǒng),主要包括第一人稱漫游、第三人稱漫游、飛行模式、攝像機(jī)動(dòng)畫漫游、聲音處理、信息交互查詢等功能。
本文討論的建筑方案展示系統(tǒng)(如圖1),主要利用建筑信息化模型具有可視化、協(xié)調(diào)性、模擬性、優(yōu)化性及可出圖性等特點(diǎn)[7],對(duì)場景所需模型進(jìn)行創(chuàng)建。將創(chuàng)建完成的模型發(fā)布成FBX格式導(dǎo)入U(xiǎn)nity3D,并在其中給模型重新賦予貼圖與材質(zhì)球,使模型達(dá)到預(yù)期效果。因?yàn)楸鞠到y(tǒng)是一個(gè)信息可視化的系統(tǒng),因此需要強(qiáng)大的數(shù)據(jù)庫做支撐。系統(tǒng)設(shè)計(jì)時(shí)采用SQL作為系統(tǒng)的數(shù)據(jù)庫。以BIM的建筑模型數(shù)據(jù)、材質(zhì)貼圖數(shù)據(jù)和應(yīng)用信息數(shù)據(jù)、為基礎(chǔ)構(gòu)建本文系統(tǒng)所需的數(shù)據(jù)庫,并將數(shù)據(jù)庫放在云端。系統(tǒng)框架如圖2所示。
圖1 建筑方案展示系統(tǒng)
首先進(jìn)行UI界面的搭建,再通過第一人稱與第三人稱瀏覽,讓使用者獲得沉浸式體驗(yàn),得到虛擬現(xiàn)實(shí)技術(shù)所帶來的一種逼真的效果,同時(shí)也可以更好的了解建筑方案的每一個(gè)細(xì)節(jié)。飛行模式是在上空對(duì)地下建筑物的一個(gè)俯瞰,解決在建筑群中無法觀察建筑的整體風(fēng)格問題,可以判斷是否符合審美要求,與周圍建筑是否能相互融合的問題,給設(shè)計(jì)者后期帶來了輔助決策作用。攝像機(jī)動(dòng)畫漫游是一種無需人工操作的漫游方式,實(shí)現(xiàn)多條路線的瀏覽。這樣就解決了對(duì)整體建筑方案不熟悉,容易迷失方向的問題,同時(shí)也可以讓使用者放松下來。最后進(jìn)行聲音處理,聲音可以加深沉浸感和代入感,讓整個(gè)操作的過程變得更加具有生動(dòng)性,使用戶得到更多的操作體驗(yàn)。
圖2 系統(tǒng)框架圖
該系統(tǒng)UI界面主要是通過對(duì)按鈕的監(jiān)聽,進(jìn)行不同事件的觸發(fā)。根據(jù)上述所要實(shí)現(xiàn)的功能,分別制作功能相對(duì)應(yīng)的按鈕。對(duì)于聲音開關(guān)按鈕需要在同一位置制作開啟按鈕與關(guān)閉按鈕,相互監(jiān)聽替換,執(zhí)行相對(duì)應(yīng)的事件。
參見圖3實(shí)現(xiàn)第一人稱瀏覽。在Unity3D標(biāo)準(zhǔn)資源包里,包含了一個(gè)名為Characters的資源包,這是Unity3D建好的關(guān)于人物的資源包,我們需要將這個(gè)資源包導(dǎo)入到項(xiàng)目中來,進(jìn)行預(yù)制體的使用和參數(shù)數(shù)值的修改。
點(diǎn)擊Assets打開它的子菜單并找到Import Package中的Characters資源包,導(dǎo)入到項(xiàng)目中。我們會(huì)看到Assets下多了一個(gè)名為Standard Assets的文件夾,在里面找到第一人稱預(yù)制體放入搭建好的場景中。在Inspector(屬性)面板中修改腳本組件中的移動(dòng)速度與視角變換等一些參數(shù),來適應(yīng)場景的瀏覽。
接下來我們要實(shí)現(xiàn)對(duì)按鈕點(diǎn)擊事件的監(jiān)聽、不同攝像機(jī)的開、關(guān),以及保證每次攝像機(jī)都在同一地點(diǎn)開啟。假定菜單中有兩個(gè)按鈕,名稱分別為“主入口”和“次入口”,在場景中放置兩個(gè)第一人稱預(yù)制體,命名為“Ca1”和“Ca2”,實(shí)現(xiàn)的上述所說的功能,代碼如下:
圖3 第一人稱瀏覽
圖4 第三人稱瀏覽
參見圖4實(shí)現(xiàn)第三人稱瀏覽。在Standard Assets中找到第三人稱的預(yù)制體放入搭建好的場景中,修改移動(dòng)速度與視角變換等參數(shù)。將相應(yīng)的攝像機(jī)作為預(yù)制體的子物體。
參見圖5實(shí)現(xiàn)飛行模式瀏覽。要實(shí)現(xiàn)W、S、A、D鍵分別控制前進(jìn)與回退、左旋與右旋。
圖5 飛行模式
首先導(dǎo)入一個(gè)飛行器模型,新建一個(gè)攝像機(jī),創(chuàng)建其父子關(guān)系,保證中心點(diǎn)在飛行器模型的中心位置,并放在建筑上方,調(diào)整視角。建立腳本,代碼如下:
攝像機(jī)動(dòng)畫漫游要實(shí)現(xiàn)在播放攝像機(jī)動(dòng)畫時(shí),隱藏所有UI元素,做到全屏播放效果,當(dāng)按下鍵盤上ESC鍵的時(shí)候,退出播放,返回主場景。
第一步創(chuàng)建攝像機(jī)動(dòng)畫。添加Animation編輯器。選中制作動(dòng)畫的攝像機(jī),在Animation編輯器中,點(diǎn)擊Add Property添加屬性。把Transform組件的Position和Rotation添加進(jìn)來。鼠標(biāo)拖動(dòng)幀的位置,并改變攝像機(jī)的坐標(biāo)與角度,這樣在該幀就記錄了攝像機(jī)改變之后的坐標(biāo)與角度,當(dāng)播放到該幀時(shí),攝像機(jī)就會(huì)平滑的出現(xiàn)在該位置。每幀之間,所移動(dòng)的位置越小,制作的幀數(shù)越多,那么攝像機(jī)動(dòng)畫越平滑。
第二步編輯狀態(tài)機(jī)控制器。在Parameters視窗下,添加兩個(gè)bool類型的復(fù)選框,分別命名為“play”與“go”,設(shè)為false狀態(tài)。建立如圖6所示動(dòng)畫過渡基礎(chǔ)關(guān)系圖,單擊New State與“動(dòng)畫一”的動(dòng)畫過渡基礎(chǔ)關(guān)系線,添加播放環(huán)境,選擇“play”,狀態(tài)改為true。這就表明當(dāng)狀態(tài)機(jī)控制器中的布爾值“play”的值為true時(shí),就播放“動(dòng)畫一”;在“動(dòng)畫一”與Exit的動(dòng)畫過渡基礎(chǔ)關(guān)系線上,將“play”,狀態(tài)改為false。這就表明當(dāng)狀態(tài)機(jī)控制器中的布爾值“play”的值為false時(shí)退出“動(dòng)畫一”的播放?!皠?dòng)畫二”的編輯與“動(dòng)畫一”的編輯大同小異,只是將布爾值“play”改為了“go”。最后,用代碼控制攝像機(jī)動(dòng)畫的全屏播放與退出。代碼如下:
圖6 狀態(tài)機(jī)控制器的編輯
創(chuàng)建一個(gè)音頻播放器,當(dāng)進(jìn)行場景瀏覽時(shí),加載音頻文件,通過代碼進(jìn)行開關(guān)音頻;
在Hierarchy面板中點(diǎn)擊右鍵選擇Create Empty(創(chuàng)建空物體)命名為Audio;選取Audio,點(diǎn)擊菜單欄Component下面的Audio選擇Audio Source;將音頻拖拽到Audio Source組件中的Audio Clip中,將Loop復(fù)選框進(jìn)行勾選,讓音頻可以重復(fù)播放。創(chuàng)建控制音頻開關(guān)腳本,代碼如下:void Start(){Aud=gameObject.GetComponent
btn1.onClick.AddListener (OnClick1);btn2.onClick.
AddListener(OnClick2);}
void OnClick1(){Aud.mute=true;}void OnClick2()
{Aud.mute=false;}}
本文簡述了Unity3d游戲引擎在建筑方案展示中功能的實(shí)現(xiàn)與應(yīng)用,討論并實(shí)現(xiàn)了虛擬現(xiàn)實(shí)在建筑方案展示中的關(guān)鍵應(yīng)用技術(shù)。實(shí)現(xiàn)了在Unity3D中,包括第一人稱漫游、第三人稱漫游、飛行模式瀏覽、攝像機(jī)漫游動(dòng)畫、聲音處理等功能。本文開發(fā)的建筑方案展示系統(tǒng)具有人機(jī)交互UI界面,場景中的虛擬現(xiàn)實(shí)漫游以及背景音樂的渲染,給使用者帶來沉浸式體驗(yàn),云平臺(tái)的采用,為系統(tǒng)的實(shí)時(shí)交互與信息查詢提供了基礎(chǔ),通過虛擬現(xiàn)實(shí)的瀏覽,可以及時(shí)的發(fā)現(xiàn)在建筑設(shè)計(jì)過程中存在的紕漏。
[1]寧敏.虛擬現(xiàn)實(shí)技術(shù)及其在虛擬校園中的應(yīng)用[J].中國信息化,2017(10):71-73.
[2]洪炳镕,蔡則蘇,唐好選.虛擬現(xiàn)實(shí)及其應(yīng)用[M].北京:國防工業(yè)出版社,2005:2,90-107.
[3]戴成元,劉芳英.虛擬現(xiàn)實(shí)(VR)技術(shù)在大型公共建筑規(guī)劃互動(dòng)分析中的應(yīng)用研究[J].水資源與水工程學(xué)報(bào),2012.23(04):167-170.
[4]王要武,薛小龍,韓喜雙.虛擬現(xiàn)實(shí)技術(shù)在建筑業(yè)中的應(yīng)用研究[J].低溫建筑技術(shù),2004(01),90-91.
[5]朱惠娟.基于Unity3D的虛擬漫游系統(tǒng)[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2012(10):36-39,65.
[6]汪成為.人類認(rèn)識(shí)世界的好幫手虛擬現(xiàn)實(shí)[M].北京:清華大學(xué)出版社,2000.
[7]張德海,陳娜,韓進(jìn)宇.基于BIM的模塊化設(shè)計(jì)方法在裝配式建筑中的應(yīng)用[J].土木建筑工程信息技術(shù),2014(06):81-85.