中國(guó)傳媒大學(xué)南廣學(xué)院 周 靈 周曉梅 郝 婧
一種基于Unity 3D的場(chǎng)景交互漫游
中國(guó)傳媒大學(xué)南廣學(xué)院周靈周曉梅郝婧
本論文闡述了基于Unity3D為虛擬漫游系統(tǒng)開(kāi)發(fā)平臺(tái),以3D Max軟件來(lái)實(shí)現(xiàn)模型制作和材質(zhì)賦予,討論并實(shí)現(xiàn)了虛擬現(xiàn)實(shí)在室內(nèi)虛擬漫游交互系統(tǒng)中的關(guān)鍵性應(yīng)用技術(shù)。在Unity3D中實(shí)現(xiàn)了鍵盤(pán)操控人物漫游、鼠標(biāo)鍵移動(dòng)視角、替換材質(zhì)及顯示對(duì)話框的相關(guān)技術(shù)。在現(xiàn)實(shí)家裝的基礎(chǔ)上,通過(guò)模擬仿真構(gòu)建具有沉浸感和交互性的虛擬環(huán)境。虛擬漫游系統(tǒng)不僅能為裝修設(shè)計(jì)行業(yè)提供全新的一種規(guī)劃方式,也提供了全新的展現(xiàn)與交互感受。
Unity3D;虛擬建模;場(chǎng)景漫游
虛擬漫游系統(tǒng)是虛擬現(xiàn)實(shí)技術(shù)(VR)較為重要的一部分。依據(jù)研究結(jié)果,Unity3D確實(shí)是目前虛擬現(xiàn)實(shí)系統(tǒng)的最專業(yè)的引擎,用它來(lái)開(kāi)發(fā)的虛擬場(chǎng)景,有著更佳的用戶反饋。
本研究在虛擬場(chǎng)景漫游中實(shí)現(xiàn)了鍵盤(pán)操控人物漫游、鼠標(biāo)鍵移動(dòng)視角、替換材質(zhì)及顯示對(duì)話框的相關(guān)技術(shù)。在現(xiàn)實(shí)家裝的基礎(chǔ)上,通過(guò)模擬仿真構(gòu)建具有沉浸感和交互性的虛擬環(huán)境。虛擬漫游系統(tǒng)不僅能為裝修設(shè)計(jì)行業(yè)提供全新的一種規(guī)劃方式,也提供了全新的展現(xiàn)與交互感受。
虛擬漫游交互系統(tǒng)根據(jù)應(yīng)用層面,可以分為:僅供參觀者瀏覽的簡(jiǎn)單虛擬家裝環(huán)境和以第一人稱為視角,加入一系列碰撞功能,以虛擬現(xiàn)實(shí)技術(shù)為基礎(chǔ)建立的虛擬現(xiàn)實(shí)漫游系統(tǒng)。在開(kāi)發(fā)虛擬漫游交互系統(tǒng)的過(guò)程中,首先對(duì)系統(tǒng)進(jìn)行需求分析,設(shè)計(jì)各種模型可能的交互行為;然后采集建模需要的有關(guān)數(shù)字化信息,利用3D Max制作3D仿真模型,尋找合適的平臺(tái)來(lái)實(shí)現(xiàn)漫游。通過(guò)實(shí)驗(yàn)幾款軟件的交互功能做了比較,最終確定使用Unity3D來(lái)實(shí)現(xiàn)交互式的虛擬漫游系統(tǒng),模擬人物在建筑內(nèi)部行走、參觀建筑內(nèi)家具行為以及為模型更換材質(zhì)等。虛擬漫游交互系統(tǒng)開(kāi)發(fā)主要分為以下幾個(gè)步驟:基礎(chǔ)數(shù)據(jù)的采集、資料的收集與整理、三維模型的建立、三維模型的優(yōu)化、材質(zhì)與貼圖設(shè)計(jì)、導(dǎo)入到 Unity3D、結(jié)合Javascript語(yǔ)言進(jìn)行場(chǎng)景美化及交互式虛擬漫游系統(tǒng)的實(shí)現(xiàn)。整體設(shè)計(jì)使虛擬場(chǎng)景的全貌與局部、大場(chǎng)景與小細(xì)節(jié)相結(jié)合。本論文的研究重點(diǎn)是虛擬漫游功能在Unity3D 中的設(shè)計(jì)與實(shí)現(xiàn)。系統(tǒng)總體設(shè)計(jì)流程圖如圖1所示。
圖1 系統(tǒng)設(shè)計(jì)流程圖
三維場(chǎng)景的設(shè)計(jì)與實(shí)現(xiàn)主要從三維場(chǎng)景的空間表示、三維物體的模型表示、三維場(chǎng)景的視覺(jué)表示、三維模型的輸出和燈光布置五個(gè)部分進(jìn)行分析,通過(guò)這幾個(gè)部分把需要做的內(nèi)容展現(xiàn)出來(lái)。
3.1三維場(chǎng)景的空間表示
虛擬漫游交互系統(tǒng),最初的空間表示開(kāi)發(fā)分為三個(gè)階段:精確建模范圍、整體框架布置和墻體模型構(gòu)建。首先,精確建模范圍主要用到的方法是測(cè)量和換算。為了更真實(shí)的表現(xiàn)真實(shí)世界,精細(xì)建模所表現(xiàn)的細(xì)節(jié)越多越好,綜合程度越低越好,但這會(huì)帶來(lái)龐大的數(shù)據(jù)量。同時(shí),表現(xiàn)建筑的細(xì)節(jié)的另一有力手段是精細(xì)貼圖,所以模型的精細(xì)程度直接影響整體建筑的真實(shí)感。除了建筑模型以外,結(jié)構(gòu)≥0.5m的附屬模型也值得注意,例如窗架、電視墻、圍墻、踢腳線、屋頂結(jié)構(gòu)等。另外,需精細(xì)建模的建筑模型的外形和紋理必須與實(shí)際建筑保持一致。
精確模型后,開(kāi)始布置家裝的整體框架。由于整體框架不算復(fù)雜,這里選擇直接在3D Max三維建模軟件中進(jìn)行1:1繪制,里面的環(huán)境基本還原實(shí)際中的家庭裝修環(huán)境,首先在建立新文件,選擇文件新建命令,打開(kāi)新建場(chǎng)景對(duì)話框,指定要保留的對(duì)象的類型。
建模的第三階段是建造分體模型。首先為墻體放置窗戶和門(mén)框。首先根據(jù)實(shí)際尺寸拉出一個(gè)長(zhǎng)方形,再選擇基本幾何體的下拉菜單,選擇復(fù)合對(duì)象,單擊布爾拾取操作對(duì)象B,再單擊長(zhǎng)方形,墻體上就扣出了一個(gè)符合目標(biāo)要求的窗戶洞??鄢皯舳春?,在幾何體菜單中選擇窗選項(xiàng),此時(shí)有遮蓬式窗、平開(kāi)窗、固定窗等六種窗戶樣式可以選擇。依據(jù)整體大批需要,這里選擇固定窗。在前視圖中拉出固定窗,修改參數(shù),拖動(dòng)模型到墻體的窗洞上即可。門(mén)扇的制作方法相同??臻g表示圖見(jiàn)圖2。
圖2 空間表示圖
圖3 人物模型動(dòng)畫(huà)
3.2三維物體的模型表示
對(duì)于房間內(nèi)部模型的設(shè)計(jì),根據(jù)工藝不同主要是分為四部分,家具類,裝飾類,布藝類和電器類。家具類的搭建基本為大面積的立方體的搭建和細(xì)節(jié)的刻畫(huà);裝飾類的構(gòu)造主要依靠復(fù)雜的幾何圖形及修改器的大量應(yīng)用;布藝類的制造主要依靠可編輯多邊形中點(diǎn)和面的細(xì)致調(diào)整,使布藝品表面有凹凸不平感,其目的是方便貼圖更生動(dòng)的依附于模型上;電器類的構(gòu)造最為復(fù)雜,一般為五到八個(gè)復(fù)雜的小模型實(shí)現(xiàn),目的是為了增加模型的真實(shí)感。但依據(jù)工藝的分類也不是絕對(duì)分類,例如床的模型制作,床頭和床架運(yùn)用到的是家具類的搭建方法,而床上用品(被罩、枕頭、抱枕)則運(yùn)用到的是布藝類的建造方法。
3.3三維場(chǎng)景的視覺(jué)表示
世界上所有的事物都利用它表面的顏色、光線強(qiáng)度、紋理、折射率和反射率來(lái)表現(xiàn)各自的特性。所以三維場(chǎng)景的視覺(jué)表示就主要體現(xiàn)在模型賦予的材質(zhì)上,材質(zhì)更貼近實(shí)際,貼圖后模型才會(huì)更加逼真。利用3Ds Max材質(zhì)球中明暗器基本參數(shù)中的各向異性(phong,strauss,blinn,oren-nayar-blinn)對(duì)高光、顏色、反射率、折射率等參數(shù)進(jìn)行設(shè)置,即可得到質(zhì)感豐富的材質(zhì)。各向異性其實(shí)就是人們通常所理解的反光,也叫陰影類型。
在本設(shè)計(jì)中,模型的材質(zhì)主要分為瓷器材質(zhì),金屬材質(zhì),玻璃材質(zhì)和木紋材質(zhì)四個(gè)部分。瓷器材質(zhì)主要運(yùn)用于碗碟、洗臉盆、馬桶和裝飾品中;金屬材質(zhì)主要運(yùn)用于器皿、家具邊角和電器中;玻璃材質(zhì)主要運(yùn)用于鏡面、茶幾、相框和酒具等透明材質(zhì)的模型中;木紋材質(zhì)主要運(yùn)用于地板、天花板、床頭柜等木質(zhì)結(jié)構(gòu)的模型中。
3.4三維場(chǎng)景的燈光布置
光有三個(gè)基本特性:光強(qiáng)、方向和顏色。光強(qiáng)是指強(qiáng)度與到光源距離的運(yùn)算關(guān)系按照平方反比定律。即假如點(diǎn)b距離光源的距離為2x,點(diǎn)a距離光源的距離為x,那么點(diǎn)b所接收到的強(qiáng)度就是點(diǎn)a的1/4;方向是指根據(jù)光源與物體的相對(duì)位置,光源位置可分為四類:(1)正面光:會(huì)產(chǎn)生一個(gè)沒(méi)有影子的影象,深度和形狀是靠光影的排列表現(xiàn)出來(lái)的,會(huì)產(chǎn)生平面的二維視覺(jué)感受,也稱為平光。(2)45度側(cè)面光:這種光形態(tài)中有豐富的影調(diào),由深度而產(chǎn)生立體的效果。(3)90度側(cè)面光:這種照明通常用于戲劇性的場(chǎng)景,有著明暗的強(qiáng)烈對(duì)比,影子修長(zhǎng)而具有表現(xiàn)力,物體結(jié)構(gòu)十分明顯,被稱做“質(zhì)感照明”。(4)逆光:光線從被攝對(duì)象身后射出,正對(duì)攝像機(jī),在明亮的場(chǎng)景下會(huì)呈現(xiàn)出被攝對(duì)象深色的剪影,這種高反差影象簡(jiǎn)單又具有表現(xiàn)力;顏色:包括自然光照明顏色和人工光照明顏色。
本場(chǎng)景中的燈光布置為了更好地表現(xiàn)出場(chǎng)景模型的紋理效果,分別放置了主光和輔光。布置燈光的過(guò)程,為防止燈光效果疊加造成混亂,選擇逐步添加燈光,這樣既可以清楚地明白每一盞燈光對(duì)場(chǎng)景的作用,也能避免添加多余的燈光而導(dǎo)致不需要的效果和更多的渲染時(shí)間。
3.5三維模型的輸出
通過(guò)3D Max建立了場(chǎng)景與場(chǎng)景中的模型后,將要把模型導(dǎo)入U(xiǎn)nity3D。Unity支持從大多數(shù)3D軟件中導(dǎo)出的模型文件,可讀取的文件類型有.FBX/.dae/.dxf等格式文件;同時(shí)還支持.mov/.avi/.asf/. mpg/.mpeg等視頻格式,將以上格式的文件添加到unity工程時(shí),這些文件都將自動(dòng)導(dǎo)入并轉(zhuǎn)化格式為oggtheora;若導(dǎo)入的文件為.aiff/. wav/.mp3等格式的音頻文件,將在Unity中轉(zhuǎn)化為oggvorbis。本作品中全部為模型文件。先打開(kāi)渲染場(chǎng)景對(duì)話框,設(shè)置文件的輸出尺寸,然后在渲染輸出中選擇文件的保存路徑,為了防止Unity中讀取錯(cuò)誤,這里要注意路徑中所有文件夾必為英文。選擇輸出格式,設(shè)置為.FBX,然后單擊渲染,即可輸出模型。
場(chǎng)景交互系統(tǒng)的實(shí)現(xiàn)體現(xiàn)在人機(jī)交互上,而人機(jī)交互的實(shí)現(xiàn)主要依靠JavaScript語(yǔ)言在Unity3D中實(shí)現(xiàn)。主要分為角色動(dòng)作功能、漫游視角功能、模型碰撞功能、更換貼圖功能四個(gè)部分。
4.1角色動(dòng)作功能的實(shí)現(xiàn)
虛擬場(chǎng)景漫游交互系統(tǒng)的漫游功能主要依靠人物模型在場(chǎng)景中行走實(shí)現(xiàn),首先導(dǎo)入人物模型.FBX文件,模型自帶擺動(dòng)動(dòng)畫(huà),分為行走和休息兩部分。選中對(duì)象“Girl01”找到Inspector面板,勾選Import Animation選項(xiàng),在Clips面板下截取想要表現(xiàn)的模型動(dòng)畫(huà)的片段,這里分別截取了行走動(dòng)作的動(dòng)畫(huà)和行走停止動(dòng)作的動(dòng)畫(huà)。接下來(lái)需要實(shí)現(xiàn)人機(jī)互動(dòng)功能,可以通過(guò)鼠標(biāo)或鍵盤(pán)控制任務(wù)。在Assets文件下找到code文件夾,新建名為people.js文件為人物模型編寫(xiě)程序。聲明變量和對(duì)象,控制動(dòng)畫(huà)速度,同步渲染時(shí)間,在場(chǎng)景中找到名為“Girl01”的對(duì)象。
保存人物動(dòng)畫(huà)程序,將此程序文件拖拽到人物模型上,即將這段動(dòng)畫(huà)程序賦給人物模型。試運(yùn)行工程,按鍵盤(pán)WASD可控制人物在場(chǎng)景中進(jìn)行相對(duì)位移,停止操控時(shí)人物呈現(xiàn)休息狀態(tài)。人物模型動(dòng)畫(huà)見(jiàn)圖3。
4.2漫游視角功能的實(shí)現(xiàn)
漫游視角功能核心內(nèi)容在于攝像機(jī)的程序編寫(xiě)。其功能體現(xiàn)在按 W、A、S、D 鍵,人物向前、左、右、后移動(dòng)時(shí)攝像機(jī)跟隨視角變化,看到不同的場(chǎng)景。在此場(chǎng)景中件攝像機(jī)置于人物模型頭部,選用Frustum Culling(平接頭體剪裁),可以使超過(guò)人物頭頂部分的物體不顯示。攝像機(jī)視野角度為45度,選擇透視投影。跟隨距離為5,高度1.2,另外要為物體添加剛體屬性,賦予物體質(zhì)量、阻力和角阻力,再添加重力防止人物發(fā)生碰撞后發(fā)生浮動(dòng)。
4.3模型碰撞功能的實(shí)現(xiàn)
模型之間或模型與墻壁之間使用Box Collider進(jìn)行碰撞檢測(cè)。此設(shè)計(jì)中為每個(gè)模型、墻體、門(mén)框都使用了Box Collider技術(shù)。門(mén)框和餐廳處墻體由于是結(jié)構(gòu)復(fù)雜的整體,所以使用基于網(wǎng)格的碰撞檢測(cè),因?yàn)槿魧?duì)門(mén)框進(jìn)行Box Collider碰撞檢測(cè),人無(wú)法通過(guò)。
在Unity3D中集成碰撞檢測(cè)模塊,當(dāng)角色靠近被碰撞物體時(shí),系統(tǒng)根據(jù)碰撞檢測(cè)算法檢測(cè)該物體的高度,如果被碰撞物體的高度低于預(yù)設(shè)高度則人物模型可以通過(guò),反之,模型將會(huì)被擋住,如圖4所示碰撞檢測(cè)原理圖。
本系統(tǒng)的測(cè)試主要是調(diào)試設(shè)計(jì)的代碼和功能,對(duì)作品進(jìn)行分模塊的調(diào)試運(yùn)行,檢驗(yàn)是否有錯(cuò)誤發(fā)生;檢測(cè)無(wú)誤后,方可輸出為.exe文件,以方便用戶瀏覽,并有效避免設(shè)計(jì)被二次修改,經(jīng)檢測(cè),本系統(tǒng)能滿足家裝虛擬仿真的需求。未來(lái)可以在系統(tǒng)適時(shí)更新、虛擬家裝系統(tǒng)的細(xì)節(jié)展示設(shè)計(jì)和體感漫游技術(shù)方面做更深入研究。
圖4 碰撞檢測(cè)原理圖
[1]卞峰,江漫清,桑永英,等.虛擬現(xiàn)實(shí)及其應(yīng)用進(jìn)展[J].計(jì)算機(jī)仿真,2007(6):1-4.
[2]江河.虛擬現(xiàn)實(shí)結(jié)合交互式多媒體學(xué)習(xí)設(shè)計(jì)研究[J].攀枝花學(xué)院報(bào),2010,27(6):21-25.
[3]許微.虛擬現(xiàn)實(shí)技術(shù)的國(guó)內(nèi)外研究現(xiàn)狀與發(fā)展[J].現(xiàn)代商貿(mào)工業(yè),2009(2):279-280.
[4]林深華,范志尚,蔣建兵等.基于Android平臺(tái)Unity3D游戲設(shè)計(jì)與實(shí)現(xiàn)[J].企業(yè)科技與發(fā)展,2013(10):40.
[5]倪樂(lè)波,戚鵬,遇麗娜,等.Unity3d虛擬展示技術(shù)的研究與應(yīng)用[J].數(shù)字技術(shù)與應(yīng)用,2010(12):54-55.
周靈(1984—),江蘇常州人,博士研究生,講師,主要研究方向:數(shù)字媒體技術(shù)、教育技術(shù)。
江蘇高校哲學(xué)社會(huì)科學(xué)研究項(xiàng)目“嬗變與重構(gòu):媒介融合時(shí)代大學(xué)生媒介素養(yǎng)培養(yǎng)模式研究”(2015SJD324); 2016年中國(guó)傳媒大學(xué)南廣學(xué)院校級(jí)科研培育項(xiàng)目“翻轉(zhuǎn)課堂理念下的教學(xué)模式改革實(shí)踐研究”(2016KYPY052);江蘇省高校自然科學(xué)研究項(xiàng)目“云存儲(chǔ)在校園媒體資產(chǎn)管理系統(tǒng)中的關(guān)鍵技術(shù)研究”(14KJD520011)。