【摘 要】隨著虛擬現(xiàn)實(shí)交互技術(shù)的研究和運(yùn)用日益深入和廣泛,對(duì)虛擬場(chǎng)景的真實(shí)感和沉浸感都提出更高的要求。目前交互引擎也種類繁多,而且大都功能強(qiáng)大,畫面效果表現(xiàn)力亦很強(qiáng),本文提出以u(píng)nity3D為交互引擎系統(tǒng)的開(kāi)發(fā)解決方案,介紹采用unity3D游戲引擎構(gòu)建虛擬河下古鎮(zhèn)交互漫游系統(tǒng)的框架,著重闡述虛擬場(chǎng)景交互漫游的方法及實(shí)現(xiàn),包括一個(gè)以三維等手段的系統(tǒng)完整制作流程以及一個(gè)以路徑漫游、天氣變化系統(tǒng)、碰撞檢測(cè)等技術(shù)點(diǎn)的引擎具體運(yùn)用。
【關(guān)鍵詞】虛擬場(chǎng)景 交互漫游 三維游戲引擎
虛擬交互漫游又稱虛擬現(xiàn)實(shí),是近年來(lái)迅速發(fā)展起來(lái)的一個(gè)利用計(jì)算機(jī)技術(shù)開(kāi)發(fā)的綜合研究領(lǐng)域。利用其技術(shù)表現(xiàn)的三維虛擬場(chǎng)景空間,可使人身臨其境。名人場(chǎng)景、文物等古跡遺址數(shù)字化再現(xiàn)是當(dāng)前文化遺產(chǎn)保護(hù)的研究熱點(diǎn),隨著虛擬現(xiàn)實(shí)技術(shù)和三維游戲引擎開(kāi)發(fā)日益成熟和發(fā)展,使得對(duì)河下古鎮(zhèn)進(jìn)行全方位的三維模擬展示成為可能。
河下古鎮(zhèn)主體建筑主要包括河下古鎮(zhèn)沿河主要景區(qū)的古街建筑。系統(tǒng)使用maya構(gòu)建三維場(chǎng)景模型和貼圖,交互漫游和三維預(yù)覽使用游戲引擎unity3D實(shí)現(xiàn)。具體框架分為三維場(chǎng)景搭建,Unity3D平臺(tái)開(kāi)發(fā)中的物理碰撞、行走漫游、天氣變化系統(tǒng)等部分。
一、三維場(chǎng)景搭建
(一)三維模型搭建與模型優(yōu)化
系統(tǒng)中的三維模型都是采用多邊形(polygons)建模方式進(jìn)行搭建。在創(chuàng)建場(chǎng)景中不規(guī)則較復(fù)雜物體時(shí),由于物體結(jié)構(gòu)較為復(fù)雜,可采用了曲線放樣的建模方法。根據(jù)不規(guī)則物體的輪廓,利用CV曲線講物體結(jié)構(gòu)繪制出來(lái),然后進(jìn)行曲線放樣得到完全符合物體參照?qǐng)D的NURBS模型,最后通過(guò)NURBS to Polypons工具講模型轉(zhuǎn)化成多邊形模型。
由于交互引擎對(duì)真?zhèn)€場(chǎng)景面數(shù)有局限性,因此減少場(chǎng)景中模型的個(gè)數(shù)和總體面片數(shù)量可以有效降低場(chǎng)景對(duì)計(jì)算機(jī)物理性能的需求。采用整體刪減線面和合并點(diǎn)線的方法對(duì)模型行進(jìn)精減,去除一些多余的線和繁復(fù)的細(xì)節(jié)。完成模型精減工作之后使用maya中的Cleanup工具檢查模型,修改出現(xiàn)的點(diǎn)線面錯(cuò)誤并優(yōu)化模型。
(二)貼圖烘焙與繪制
由于對(duì)三維場(chǎng)景模型進(jìn)行了大量的優(yōu)化和精減,嚴(yán)格控制了模型的面數(shù),從另一程度上也使得模型本身的細(xì)節(jié)有所丟失,為了讓低精度模型仍然顯示高精度模型的細(xì)節(jié),對(duì)場(chǎng)景中的一些重要物體進(jìn)行了高精度模型制作,在maya中將分好UV的低模包裹高模選擇Normal(法線)工具進(jìn)行法線貼圖烘焙。
二、Unity3D平臺(tái)開(kāi)發(fā)
Unity3D是一個(gè)創(chuàng)建諸如三維視頻游戲、建筑可視化、實(shí)時(shí)三維動(dòng)畫等類型互動(dòng)內(nèi)容的多平臺(tái)的綜合型游戲開(kāi)發(fā)工具,是一個(gè)全面整合的專業(yè)游戲引擎。其平臺(tái)類似于Director,Blender game engine等利用交互的圖型化開(kāi)發(fā)環(huán)境為首要方式的軟件其編輯器運(yùn)行在Windows 和Mac OS X下,可發(fā)布游戲至Windows、Mac、Wii、iPhone和Android平臺(tái)。
(一)物理碰撞測(cè)試
本系統(tǒng)是模擬第一人稱視角游戲開(kāi)發(fā)的一套場(chǎng)景虛擬交互漫游,畫面以第一人稱為視角,通過(guò)敲擊鍵盤上的對(duì)應(yīng)鍵位在虛擬場(chǎng)景中自由行走。為避免在行走中與墻壁、門、樹(shù)干等物體發(fā)生物體重疊也就是穿插,需要給物體添加物理碰撞成分,以確保在漫游時(shí)不肆意穿插。
在本系統(tǒng)的碰撞測(cè)試中重點(diǎn)完成的就是第一人稱視角主體與地面的碰撞,因此事先做了一個(gè)基本的物體與地面碰撞測(cè)試。描述如下:當(dāng)物體碰到地面,輸出被物體碰撞的地面的name“Ground”,則表述檢測(cè)到物體碰撞了地面。具體實(shí)施步驟:
1.編寫代碼
在“Project”面板中單擊“Create”旁邊的小三角,選擇“javascript”創(chuàng)建一個(gè)名為“collision”的js文件。雙擊它,系統(tǒng)啟動(dòng)Monodevelop來(lái)編輯js文件。
清除里面默認(rèn)創(chuàng)建的代碼。寫上。
function OnCollisionEnter(obj:Collision)
{
Debug.Log(obj.gameObject.name);
}
2.運(yùn)行程序
程序運(yùn)行結(jié)果,當(dāng)立方體與地板碰撞時(shí),unity3d底部狀態(tài)欄會(huì)輸出地面的name。
由此得知碰撞測(cè)試完成,基于這個(gè)原理可以給場(chǎng)景中對(duì)應(yīng)的物體加載物理碰撞。
(二)行走漫游
實(shí)現(xiàn)行走功能可以使系統(tǒng)操作者在通過(guò)敲擊鍵盤上相應(yīng)鍵位并結(jié)合鼠標(biāo)使用在虛擬場(chǎng)景中自由移動(dòng)行走和飛行鳥瞰全景或者任意觀看虛擬場(chǎng)景物體,實(shí)現(xiàn)完全自主虛擬游覽從而達(dá)到交互漫游目的。
(三)天氣變化系統(tǒng)
在通過(guò)對(duì)整個(gè)虛擬場(chǎng)景進(jìn)行燈光系統(tǒng)測(cè)試之后,確定光源位置和光照方向,并且規(guī)劃
出天氣變化方案。在古鎮(zhèn)場(chǎng)景交互漫游系統(tǒng)中使用了Unity中的Unisky插件制作天氣變化系統(tǒng),通過(guò)調(diào)整平行光模擬早晨和傍晚的光照天氣,使用雨天粒子系統(tǒng)模擬制作出了雨天和下雪天場(chǎng)景。
三、結(jié)束語(yǔ)
虛擬交互漫游技術(shù)對(duì)歷史文化遺產(chǎn)保護(hù)、重現(xiàn)和文化傳播具有實(shí)際應(yīng)用價(jià)值。其系統(tǒng)涉及了從電腦美術(shù)到計(jì)算機(jī)語(yǔ)言技術(shù)的多個(gè)技術(shù)領(lǐng)域,在后面的工作中模型優(yōu)化、貼圖繪制、Unity3D引擎開(kāi)發(fā)等方面仍值得進(jìn)一步學(xué)習(xí)、探討和研究。
參考文獻(xiàn):
[1] 曹彤.虛擬博物館的三維場(chǎng)景構(gòu)造及交互漫游實(shí)現(xiàn)[J].計(jì)算機(jī)工程與設(shè)計(jì),2007,28(24):6006-6007
[2] 干建松.基于Unity3d的室內(nèi)漫游仿真系統(tǒng)[J].淮陰師范學(xué)院學(xué)報(bào)(自然學(xué)報(bào)),2011,10(06):515-518
[3] 朱旦晨,宋桂嶺.基于Unreal3的虛擬博物館系統(tǒng)的實(shí)現(xiàn)[J].計(jì)算機(jī)與現(xiàn)代化,2010,12:48-52
[4] 曹彤,鮑泓.沉浸式雙通道虛擬博物館的設(shè)計(jì)與開(kāi)發(fā)[J].系統(tǒng)仿真學(xué)報(bào),2008,20(13):3593-3595
作者簡(jiǎn)介:
楊雪,女,1985年9月4日出生,江蘇淮安人。北京大學(xué)數(shù)字交互媒體專業(yè),碩士學(xué)位。
現(xiàn)任江蘇省淮安信息職業(yè)技術(shù)學(xué)院傳媒藝術(shù)系教師,助教職稱。