薛麗麗 楊楠 董健
摘要:隨著信息技術的發(fā)展,室內(nèi)設計領域中將用戶“投射”到室內(nèi)虛擬逼真環(huán)境。該文研究基于Unity3D平臺的室內(nèi)虛擬交互設計系統(tǒng),采用主流建模軟件3DMAX建模,在Unity3D平臺上實現(xiàn)交互控制,實現(xiàn)導航路徑漫游、裝修設計中的物件添刪、位置移動、材質更換等交互功能。
關鍵詞:虛擬現(xiàn)實;Unity3D;交互設計;室內(nèi)漫游
中圖分類號:TP37 文獻標識碼:A 文章編號:1009-3044(2014)28-6666-02
1 概述
近年來虛擬現(xiàn)實在科技領域引起了廣泛的關注,采用虛擬技術達到的逼真效果、沉浸式體驗使其在眾多行業(yè)得到應用,尤其表現(xiàn)在室內(nèi)虛擬交互設計中。早前的室內(nèi)設計效果圖只能以靜態(tài)的方式展現(xiàn),而目前通過虛擬現(xiàn)實技術用戶可以“走進”室內(nèi)環(huán)境,多角度的瀏覽,并進行交互操作。虛擬現(xiàn)實技術達到的直觀動態(tài)的展示效果對于室內(nèi)虛擬交互設計是極其重要的。各虛擬現(xiàn)實制作軟件中,Uinty3D 擁有嵌套多種開發(fā)語言的功能和特點,使得其在虛擬現(xiàn)實項目上得到了認可。研究Unity3D平臺的室內(nèi)虛擬交互設計系統(tǒng)具有一定的應用價值。
2 系統(tǒng)技術分析
虛擬漫游技術是虛擬技術的一個重要組成部分。這種技術開發(fā)的虛擬漫游給人一種身臨其境、逼真的效果。系統(tǒng)通過提供鼠標、鍵盤、電子頭盔、數(shù)據(jù)手套等虛擬現(xiàn)實硬件設備使得用戶能夠和虛擬場景進行交互。
2.1 系統(tǒng)功能架構設計
本系統(tǒng)主要包括漫游與自由視角模式、材質的動態(tài)更換、家具的添加與刪除、場景背景音樂的開關、場景中電視的開關、人物在地圖中的定位導航。具體功能結構如圖1所示:
2.2 系統(tǒng)技術平臺架構
室內(nèi)虛擬交互設計系統(tǒng)采用Unity 3D技術,Unity 3D可以充分、實時的處理大量的模型。同時,Unity 3D也支持多種腳本語言(C#,JavaScript等)。展示平臺分為數(shù)據(jù)模型、數(shù)據(jù)庫、Unity 3D服務、開發(fā)接口和表現(xiàn)層5層結構。Unity 3D服務:系統(tǒng)的運行邏輯。包括相機控制、碰撞檢測、動作觸發(fā)、聲音控制等。用戶可以在室內(nèi)自由漫游,可以點擊墻上的電視打開或關閉或者對房間的家具進行添加刪除和移動等。如圖2所示。
3 室內(nèi)虛擬交互設計系統(tǒng)的實現(xiàn)
3.1漫游模式切換
室內(nèi)漫游中,除了第一人視角通過鍵盤或鼠標完成漫游外,還有通過指定攝像機路徑進行漫游。本系統(tǒng)中研究了兩個攝像機Camera01、Camera02按照指定路徑漫游,Camera03自由視角漫游。
攝像機漫游過程中,設置角色的上述屬性之余最關鍵的一點是要建立角色與墻面、角色與物體等的碰撞屬性。在沒有設置碰撞屬性的情況下,角色會穿越墻面或物體,給“障礙物”添加碰撞器,達到碰撞效果。碰撞器是一群組件,它包含了很多種類。本系統(tǒng)使用Mesh Collider,Mesh Collider通過附加在GameObject上的網(wǎng)格構建碰撞效果,根據(jù)所附加對象的Transform屬性設定其位置和大小。
function oneWindow (windowID : int) //漫游窗口內(nèi)的按鈕
{ GUI.skin=ManyouGUIskins;//以下漫游菜單按鈕用GUISkin作為顯示狀態(tài)
if(GUI.Button(Rect(161,9,25,27),"","guanbi"))
{Window0 = false;}
if(GUI.Button(Rect(1,11,139,78),"","manyou1"))//漫游1為指定路徑
{ Camera01.active = true;//Camera01為激活狀態(tài)
Camera02.active = false;//Camera02為關閉狀態(tài)
Camera03.active = false;//Camera03為關閉狀態(tài)
Window0 = false;
}}......
室內(nèi)虛擬交互系統(tǒng)中關鍵一點就是室內(nèi)漫游技術的實現(xiàn),本系統(tǒng)將指定路徑漫游與自由視角漫游相結合的方式全方位的展現(xiàn)了漫游的技術,讓用戶更加多角度的瀏覽室內(nèi)環(huán)境。
3.2材質的動態(tài)更換
在室內(nèi)展示中,我們常需要動態(tài)地實現(xiàn)墻紙、地板等材質的更換以獲得不同的展示效果。材質更換功能需要調用庫中的圖片即可實現(xiàn),具體使用方法為調用ChangeTexture函數(shù)、PlayerPrefs.GetInt( ) 方法。
var ChosenColor : int;//聲明一個整形變量ChosenColor
var vehicle01 : Renderer;//聲明一個渲染器vehicle01
var Textures : Texture2D[];//聲明一個二維紋理數(shù)組Textures
利用ChangeTexture函數(shù)完成材質更換。在ChangeTexture函數(shù)中如果整形變量colors的值大于或等于數(shù)組Textures的長度,沒有材質更換,反之在數(shù)組范圍內(nèi),則將
材質賦予給渲染器。數(shù)組的長度根據(jù)材質圖片數(shù)量所定。
4 系統(tǒng)測試及總結
4.1系統(tǒng)測試
系統(tǒng)設計中直接將界面大小規(guī)定為1024*576,運行Dome時無需再設定界面大小。打開系統(tǒng),進入初始界面,界面清晰明了,各個按鈕對應進入不同的場景界面。說明界面場景中只存放一張說明介紹圖使得從初始界面跳轉到說明界面,加載迅速,此界面測試良好。
點擊按鈕,進入室內(nèi)漫游界面,在該界面實現(xiàn)不同的交互功能,通過測試發(fā)現(xiàn)借助于物體模型的優(yōu)化,減少模型面數(shù)使之適合室內(nèi)使用,更換性能配置較高的電腦進行操作,可以解決系統(tǒng)中存在的運行緩慢的問題。
4.2 總結
Unity3D與JavaScript語言的結合運用,實現(xiàn)了室內(nèi)虛擬交互設計系統(tǒng)的研究。在Unity3D中實現(xiàn)了一系列的交互功能,如自動漫游、手動漫游、場景切換、家具添加、材質更換等。滿足了用戶直觀瀏覽并與之交互的需求。相信通過知識的不斷積累,以及技術能力的不斷提高,此系統(tǒng)能實現(xiàn)完全交互。不僅給消費者帶來便捷,同時能夠服務于設計師。
參考文獻:
[1] Grigore C·Burdea,[法]Philippe Coiffet.虛擬現(xiàn)實技術[M]. 魏迎梅,譯.北京:電子工業(yè)出版社,2005.
[2] Mel slater,Anthony Steed.計算機圖形學與虛擬環(huán)境[M].程成,徐玉田,譯.北京:機械工業(yè)出版社,2004.
[3] 華倫·巴克蘭德.在虛擬和現(xiàn)實之間[J].北京電影學院學報,2002(3).
[4] Joe Gradeek.虛擬現(xiàn)實系統(tǒng)制作指南[M].何定,華宏,譯.北京:電子工業(yè)出版社,1996.
[5] Chris Marrin,Bruce Campbell. 2l天學通VRML[M].王海燕,譯.北京:人民郵電出版社,1998.