劉凱
摘要:隨著當今科技的不斷發(fā)展,三維虛擬仿真技術(shù)漸漸走到人們的日常生活之中,通過虛擬現(xiàn)實來使人們對所要進行的事進行大概的評估和預測。建筑三維漫游是現(xiàn)在三維虛擬技術(shù)應用最廣泛的方法之一,本次選取一個古代小鎮(zhèn)作為的虛擬漫游的場景,使用Unity3D引擎作為開發(fā)工具,實現(xiàn)了一個建筑漫游系統(tǒng),具有一定的使用價值。
關鍵詞: 虛擬現(xiàn)實;unity3D;優(yōu)化模型;貼圖
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2015)25-0156-02
Implementation of a Roaming System based on Unity
LIU Kai
(NanYang institute of Technology, Nanyang 473000,China)
Abstract:With the continuous development of the modern science and technology, 3-D virtual simulation technology gradually comes to people's daily life, which helps people have possible assessment and prediction about what is coming on. 3-D construction roaming is one of method which 3-D virtual simulation technology is most widely used, by virtual roaming it can realize the selection of tourist destination, the purchase of real estate and so on. The topic of this thesis is An Ancient Town in Virtual Roaming, which highlighters antique Chinese classical town.
Key words:virtual reality; unity 3D; optimzation; baking textures
1 引言
伴隨著網(wǎng)絡和計算機技術(shù)的發(fā)展,三維虛擬仿真技術(shù)在人們?nèi)粘I钪械膽靡呀?jīng)逐漸普及開來。建筑漫游是虛擬漫游的一個重要分支,通過三維軟件制作三維模型,然后將所制作的三維模型導入游戲引擎或者虛擬現(xiàn)實軟件中來實現(xiàn)相關的虛擬漫游功能,來實現(xiàn)計算機程序與體驗者的交互。在國內(nèi),3D游戲引擎作為近年迅速崛起的一項技術(shù),種類繁多,呈百家爭鳴之勢,本文選用的是Unity3D游戲引擎,來完成一個中國古典小鎮(zhèn)的三維漫游,使體驗者通過漫游功能和交互體驗來感受小鎮(zhèn)秀麗的自然風光,并借此來向體驗者宣揚中國古代建筑文化,是體驗者能夠更加了解中國古典文化。
2 開發(fā)流程分析與實現(xiàn)
2.1 虛擬漫游開發(fā)流程
三維漫游著重注意的應該是體驗者的體驗感受,因此對三維漫游應該具有以下功能:在體驗者剛進入虛擬漫游程序時,鏡頭以一個固定的路徑與視角運行,對古典小鎮(zhèn)進行一個全景展示。要給體驗者一個全景的感受,在半空中固定一個視角,使體驗者可以在古典小鎮(zhèn)上空360度觀察小鎮(zhèn)。讓體驗者可以在小鎮(zhèn)中自由行走、參觀,自由參觀古典小鎮(zhèn)中的美景。
根據(jù)三維漫游想要實現(xiàn)的功能,實現(xiàn)該系統(tǒng)需要經(jīng)過以下流程:包括素材收集、模型燈光材質(zhì)、界面的設計、腳本的編寫等一系列的過程,具體如圖1所示:
2.2 系統(tǒng)實現(xiàn)
2.2.1 場景實現(xiàn)
數(shù)字化建模是整個漫游動畫中的第一步也是至關重要的一步,三維漫游所展現(xiàn)給體驗者的就是數(shù)字模型的部分,體驗者可以通過視覺來觀察三維模型的外形、材質(zhì)以及位置等來直觀的感受整個場景。三維模型也是之后進行三維漫游創(chuàng)建的基礎,對三維模型的創(chuàng)建要正確、簡潔,否則在之后的工作中就會出現(xiàn)意想不到的錯誤,導致工作無法繼續(xù)進行,甚至從頭返工。下面在前期準備的素材和模型的基礎上對場景進行搭建。
首先是城鎮(zhèn)的地形模型。地形模型的創(chuàng)建比較簡單,原本對地形的規(guī)劃如圖2所示,在進行建模時發(fā)現(xiàn)如果按照規(guī)劃的進行建模,那么場景的復雜度會遠遠增加,這樣會使系統(tǒng)的負荷遠遠增加,所以在建模時對地形模型進行了簡化建模,建模的步驟為畫線將地形的輪廓勾勒出來,然后轉(zhuǎn)換成為可編輯多邊形,進行調(diào)整。
然后,對山地模型進行制作。山地模型在3ds max軟件中制作需要創(chuàng)建一個平面,將平面的縱橫比調(diào)節(jié)的很高才能獲得比較好的效果,這樣會增加游戲引擎的負擔,所以地形模型選擇在Unity游戲引擎中制作。進入Unity界面,點擊工具欄“GameObject CreatOther Terrain”創(chuàng)建一個Unity系統(tǒng)自帶地形,在此界面內(nèi),按照規(guī)劃對地形進行編輯,并添加樹木、草地等地形對象。
模型的制作完成之后,要對模型進行貼圖的繪制,在此即要用到Photoshop圖形編輯軟件和渲染出來的UVW模板,將在開始制作之前就收集好的素材,根據(jù)渲染的UVW模板的位置,將圖片處理為符合模型UVW的貼圖,將貼圖賦予模型。
2.2.2 漫游實現(xiàn)
首先,聲明Texture2D變量,數(shù)量根據(jù)自己的需求來定,這是Unity游戲引擎的GUI圖片自定義,我們可以通過這些變量將自己在外部制作的圖片導入Unity中,使用這些圖片來作為自己的UI,提高顯示效果。
其次,我們要通過自定的變量和系統(tǒng)自定義的封裝函數(shù)來獲取運行時屏幕的寬高數(shù)據(jù),并通過計算獲得比例,將比例值賦予自定義的屏幕數(shù)據(jù)和按鈕位置,來達到使UI自適應屏幕的功能。
然后,編寫場景跳轉(zhuǎn)程序,通過加載Unity自帶的封裝函數(shù),來調(diào)整按鈕的位置,并通過函數(shù)來實現(xiàn)場景之間的跳轉(zhuǎn)。其中的自適應屏幕代碼:
sW = Screen.width/sw;
sH = Screen.height/sh;
Screen.width-400*sW,Screen.height-570*sH,120*sW,120*sH
場景跳轉(zhuǎn)代碼:
if(GUI.Button(Rect(Screen.width-400*sW,Screen.height-570*sH,120*sW,120*sH),v_01)){ Application.LoadLevel("1"); }
在漫游實現(xiàn)過程中,需要添加一個固定視角的場景和一個可以自動漫游的腳本,通過這兩個腳本實現(xiàn)以下功能:
1) 路徑動畫展示
路徑動畫是繪制一個路徑,將攝像機吸附在路徑上,并指定攝像機的目標,實現(xiàn)一個路徑動畫展示。首先,通過Itween繪制一個路徑,將路徑調(diào)整到適當?shù)奈恢?,并新建一個目標物體擺放在適當?shù)奈恢?。然后,通過編寫腳本,將攝像機吸附在路徑上,控制攝像機的速度,并為攝像機指定目標物體。
iTween.MoveTo (this.gameObject,iTween.Hash("path",iTweenPath.GetPath("mypath"),"time",100,"movetopath",false,"easytype",iTween.EaseType.linear));
以上代碼為設定路徑動畫的相關選項,分別是獲取路徑、動畫總體時間、是否從路徑起點開始、移動類型,通過這幾個參數(shù)來設定路徑動畫。
2) 固定視角展示
固定視角展示是通過腳本控制攝像機在固定的視角進行旋轉(zhuǎn)觀賞,讓體驗者在指定位置觀察小鎮(zhèn)全貌。
在Unity工程視圖中點擊右鍵導入Unity工程包“Import Package Character Controller”。在工程試圖中選擇Character Controllers文件夾,里面包含一個第三人稱的角色控制和一個第一人稱的角色控制。在此,我們將第一人稱控制器拖放到Hierarchy視圖中去,第一人稱的預設物體就會出現(xiàn)在世界坐標軸的原點位置,這樣可以減少因直接拖放到視圖中出現(xiàn)的錯誤和產(chǎn)生的調(diào)節(jié)困難。
通過移動將第一人稱控制器移動到場景的上方,取消第一人稱的重力,通過腳本上的接口限制第一人稱控制器的旋轉(zhuǎn)角度。
3) 移動視角展示
移動視角展示為導入Unity的第一人稱控制包,讓體驗者可以在小鎮(zhèn)中自由漫游,體驗小鎮(zhèn)風景。移動視角展示同樣需要導入一個第一人稱控制器,所以導入與添加和固定視角相同,不再贅述。
將第一人稱視角通過移動工具調(diào)節(jié)至相應的位置,對參與碰撞的場景物體添加面碰撞,選擇物體“Component Physics Mesh Collider”完成設置。
完成后的漫游系統(tǒng)及演示效果如圖3所示:
3 結(jié)束語
本文以Unity3D游戲引擎為基礎,實現(xiàn)了具有基本漫游功能及簡單場景設置的小鎮(zhèn)漫游系統(tǒng)。針對本系統(tǒng)實時性及逼真性進一步改進的考慮,今后的工作包括:地形匹配問題;基于遮擋裁剪技術(shù)的高效場景優(yōu)化問題;用戶交互問題等。
參考文獻:
[1] 成國飛.獨立游戲開發(fā)者[J/OL].http://u3dpro.com.2011.
[2] 王琦. Autodesk 3ds Max 2010標準培訓教材II[M].北京:人民教育出版社,2010.
[3] 吳波.3ds Max 2010從新手到高手[M].北京:中國鐵道出版社,2011.
[4] 程明智,王一夫.Unity游戲開發(fā)技術(shù)[M].北京:國防工業(yè)出版社,2012.
[5] Michelle Menard. Game Development With Unity[M].美國:Cengage Learning,2011.
[6] 宣雨松.unity 3d游戲開發(fā)[M].北京:人民郵電出版社,2012.
[7] 王亞萍.淺析Unity3創(chuàng)建環(huán)境地形[J].計算機光盤軟件與應用,2012(19).174-175.
[8] 王田,李昌菊.虛擬現(xiàn)實[J].藝術(shù)教育,20813(07).
[9] 安俊偉,亓東,劉帥.淺析虛擬現(xiàn)實技術(shù)沉浸性[J].教育教學論壇,2012(12).
[10] 崔蕾.虛擬現(xiàn)實技術(shù)及其應用綜述[D].福建電腦,2008(05).