肖建良,張程,李陽
(大連理工大學 城市學院,遼寧 大連116600)
基于Unity3D的室內漫游系統
肖建良,張程,李陽
(大連理工大學 城市學院,遼寧 大連116600)
Unity3D是近幾年非常流行的一個3D游戲開發引擎,它的特點是跨平臺能力強,移植便捷,3D圖形性能出眾。文中以室內虛擬3D場景為開發目標,利用Unity3D游戲引擎,結合C#腳本語言開發了室內漫游系統。系統為用戶提供了近乎真實的虛擬環境,用戶可以自由的漫游、瀏覽、與環境互動。文中還討論并實現了在Unity3D平臺上構建室內漫游系統的關鍵技術。系統運行穩定、畫面流暢,驗證了Unity3D是開發VR項目的有效工具。
虛擬現實;Unity3D;游戲引擎;仿真
虛擬現實技術也稱靈境技術或人工環境[1],是利用計算機模擬產生一個三維空間的虛擬世界,提供使用者關于視覺、聽覺、觸覺等感官的模擬,讓使用者如同身臨其境一般,可以及時、沒有限制地感知三維空間內的事物。隨著社會發展,虛擬現實技術在教育、建筑、工業仿真、醫療、軍事和娛樂游戲等領域得到了廣泛的應用[2]。目前在家居設計、場地租賃等行業中,用戶主要通過照片、圖片和相應的文字說明來了解相關信息,沒有身臨其境的感覺,缺乏與環境間的互動。室內漫游系統基于虛擬現實技術和網絡技術,它更直觀形象,更接近真實環境,并具有更好的交互性,能夠給使用者一種逼真、身臨其境的感覺。
Unity3D是由Unity Technologies開發的一個讓玩家輕松創建諸如三維視頻游戲、建筑可視化、實時三維動畫等類型互動內容的多平臺的綜合型游戲開發工具,是一個全面整合的專業游戲引擎[3]。作為一款跨平臺的游戲引擎,支持的平臺包括PC、Mac、Linux、Web、iOS、Android、Xbox360、Play Station3等大部分主流平臺。隨著iOS、Android手機的大量普及和3D網絡游戲的興起,Unity3D因其強大的功能,良好的移植性,在手機和網絡平臺得到了廣泛的應用和傳播[4]。
1.1開發流程
室內漫游系統的開發遵循軟件開發的一般步驟,依次是分析、設計、開發、測試、修改反復且漸進的完成所規劃的功能[5]。系統的開發目標為構建一個虛擬的3D室內環境,因而其開發流程主要分為兩部分:1)創建室內環境和景物的3D模型;2)通過編寫C#腳本,實現用戶與虛擬環境間的互動。第一部分的主要工作是利用3D建模工具3DMax創建真實環境中各個物體的3D模型。第二部分的主要工作是編寫互動腳本,利用腳本將模型與Unity3D連接起來,賦予靜態模型交互的能力。系統的開發流程包括創建模型,模型貼圖,導入模型,編寫互動腳本,全景測試等5部分,其細節如圖1所示。

圖1 系統開發流程
1.2關鍵技術
室內漫游系統是室內環境的真實再現,并為用戶提供漫游,瀏覽和與虛擬環境交互等功能。在Unity3D平臺中,以上功能的實現依賴攝影機運動,碰撞檢測,3D拾取,動畫和音效等關鍵技術。
1.2.1攝影機運動
用戶利用“UP”、“DOWN”、“LEFT”、“RIGHT”鍵控制攝影機在場景中向前、向后、向左、向右運動以實現第一人稱場景漫游,并利用鼠標控制攝影機的觀察角度。首先編寫運動控制腳本,然后將腳本指定給攝影機,攝影機向前運動的具體代碼片段如下。

1.2.2碰撞檢測
在Unity3D平臺中,通常利用碰撞器來檢測對象間是否發生碰撞。Unity3D中內建的碰撞器包括:BoxCollider,Sphere Collider,CapsuleCollider,MeshCollider,WheelCollider和 TerrianCollider[6]。考慮到運算效率和場景中的對象大多為規則形狀,因此選擇BoxCollider或SphereCollider,其實現步驟如下。
1)為需要進行碰撞檢測的對象添加BoxCollider或Sphere Collider;修改 BoxCollider的 size屬性或 SphereCollider的Radius屬性,確保其能完全包圍待檢測對象;將BoxCollider或SphereCollider的IsTrigger屬性設置為ture。
2)編寫互動腳本,處理碰撞事件,然后將其指定給待檢測對象,具體代碼片段如下。

1.2.33D拾取
在漫游過程中,允許用戶通過鼠標選中虛擬環境中的物體進行操作,這時就需要3D拾取技術[7]。3D拾取技術的基本思想非常簡單,由攝影機和屏幕上的鼠標點擊位置確定一條射線,射線射向3D世界,最先和此射線相交的物體就是被選中的物體。具體代碼片段如下。

1.2.4動畫和音效
動畫和音效都是室內漫游系統的重要組成部分,它們會提高場景的真實性,讓用戶覺得這并不是一個由靜態模型堆砌的世界,而是一個真實的世界[8],當開門的時候,門應該是慢慢打開的,同時還會發出聲音,這時就需要動畫和音效。Unity3D中有完善的動畫和音效的處理機制,其實現步驟如下:
1)創建動畫和音效,導入Unity3D,并根據要求剪輯。
2)在要播放動畫的對象上添加動畫組件,在要播放音效的對象上添加聲音組件。
3)編寫腳本播放動畫和音效,然后將其指定給對應對象,播放開門動畫和音效的具體代碼片段如下。

2.1模型的構建
在整個系統的開發過程中,模型構建是最耗時的一項工作。為了讓3D場景呈現出與實景一致的感覺,在模型構建上,需要盡量塑造出與原物件比例一致的3D模型。模型建好之后,接下來就是在模型表面貼上逼真的素材。素材的來源主要是網絡下載的素材庫和實景照片。為了降低場景的復雜度,對于室內環境的細節,比如窗戶,室內背景墻等并沒有單獨建模,而是采用紋理貼圖,用紋理圖片替代復雜的模型結構。在模型的構建中還考慮到對模型的優化,通過采用刪除不可見面、減少材質數量、壓縮貼圖等優化方法,簡化了模型,減少了模型的大小。

圖2 辦公室模型
2.2場景設計
場景設計是系統設計的一個重要環節。當制作復雜環境時,需要將整個環境分割成若干個子場景,這樣可以減少每次載入系統的模型數量,加快系統的執行速度,減少用戶的等待時間。室內環境包含多個房間物體的大量3D模型,因而需要先進行場景分割,將每個房間作為一個單獨的子場景,并對每個子場景單獨建模。漫游時,只加載所需要的房間模型,而不用載入全部的環境模型,降低了所消耗的資源。在多場景環境中,場景間的切換會出現顯示的停滯或滯后現象。為了解決該問題,在系統中設置了用于加載場景資源和顯示加載進度的空場景。當用戶需要場景切換時,并不直接加載新場景,而是加載空場景。由于空場景中沒有模型,所以加載速度快,不會出現停滯或滯后現象。然后在空場景中再加載新場景,并顯示加載進度,這樣有效解決了場景切換中出現的顯示停滯后滯后問題。
2.3界面設計
Unity3D中具有一個強大的GUI功能,可以利用GUI來制作瀏覽界面、按鈕、滾動條和對話框等對象[9],常被用于實現人機交互界面游系統中,利用GUI元件制作用戶登錄頁面和漫游頁面,前者用于用戶登錄、退出系統,后者用于實現導航菜單,用戶可利用導航菜單選擇區域瀏覽、自動漫游或返回登錄頁面。區域瀏覽指的是讓用戶直接到達指定的瀏覽區域,自動漫游指的是讓用戶按照事先設計好的線路瀏覽。系統的登錄頁面如圖3所示。

圖3 系統登錄頁面
2.4交互性設計
Unity3D利用腳本實現用戶與環境間的互動[10],開發者可以使用JavaScript,Mono或C#來編寫腳本。Unity3D中內置了NVIDIA的Physx物理引擎,使開發者可以輕松地在虛擬環境中模擬出許多物理現象,比如坐標變換、剛體運動等。系統的交互設計主要包括環境漫游,場景切換和信息交互。
環境漫游是系統的主要功能,通過利用鍵盤和鼠標控制攝影機的運動,實現了用戶以第一人稱視角對環境的漫游、瀏覽。
系統采用多場景模式,每個房間都是一個子場景,當用戶從一個房間進入另一個房間,這時就會出現場景間的切換。場景切換應用了碰撞檢測、動畫和音效技術,其實現步驟如下:
1)為房門添加BoxCollider,設置其Size屬性,使其略大于房門尺寸,設置其Is Trigger屬性為ture。
2)編寫腳本,處理碰撞事件。在OnTriggerEnter函數中播放動畫、音效,加載空場景。把腳本指定給房門。
3)編寫腳本,加載新場景。把腳本指定給空場景的攝影機。
用戶在漫游過程中可以使用鼠標點擊場景中的物體,查看其相關的屬性信息或對其進行某種操作,比如點擊開關可以開、閉室內的電燈。信息交互主要應用了3D拾取技術,通過3D拾取技術確定用戶的操作對象,然后執行相關的操作。
文中以3Dmax為建模工具,利用Unity3D游戲引擎,結合C#腳本語言開發了一款互動的室內漫游系統,并利用Unity3D的多平臺部署功能,將其發布到Web平臺。從模型圖片中可以看到,系統為用戶提供了一個近乎實景的虛擬環境。文中討論并實現了在Unity3D平臺上構建室內漫游系統的若干關鍵技術,這些關鍵技術同樣可以應用于其他,包括電子、科技、安全、醫學等相關的虛擬現實和仿真領域。
[1]朱惠娟.基于Unity3D的虛擬漫游系統 [J].計算機系統應用,2012,21(10):36-38.
[2]干建松.基于Unity3d的室內漫游的關鍵技術研究[J].鹽城工學院學報,2011,24(4):56-59.
[3]Unity3D [DB/OL].(2011-05-01)[2015-9-30].http://baike. haosou.com/doc/5376000-5612112.htm l.
[4]金璽曾.Unity 3D手機游戲開發[M].北京:清華大學出版社,2013.
[5]李遠鑫,蔣海鷗,徐亦飛,徐芝琦.基于Web3D的交互式虛擬社區[J].計算機工程,2011,37(11):289-290.
[6]吳亞峰,于復興.Unity 3D游戲開發技術詳解與典型案例[M].北京:人民郵電出版社,2012.
[7]倪樂波,戚鵬,遇麗娜,王婧.Unity3d產品虛擬展示技術的研究與應用[J].數字技術與應用,2010,21(9):54-55.
[8]黃濤.基于Unity3D的虛擬校園漫游系統的研究和實現[D].桂林:廣西師范大學,2014.
[9]鄭磊.基于三維網頁技術的Unity3D教學管理系統的設計與實現[D].上海:上海交通大學,2013.
[10]王星捷,李春花.基于Unity3D平臺的三維虛擬城市研究與應用[J].計算機技術與發展,2013,23(4),241-244.
The indoor roam ing system based on Unity3D
XIAO Jian-liang,ZHANG Cheng,LIYang
(City Institute,Dalian University of Technology,Dalian 116600,China)
Unity3D is a very popular game engine in recent years,which has the ability to crossplatforms,transplant conveniently and perform 3D graphics eminently.In this paper,with the aim to develop indoor virtual 3 D scenes,using Unity3D game engine,combined with C#script language to develop the indoor roaming system,which provides userswith an almost real virtualenvironmentwhere the user can free roaming,browse,interactwith the environment.In this paper,the key technologies of indoor roaming system are discussed and implemented on Unity3D platform.Unity3D is an efficient tool to develop VR projectis verified on the base ofstable system and smooth images.
virtual reality;Unity3D;game engine;simulation
TN02
A
1674-6236(2016)19-0054-03
2015-10-27稿件編號:201510195
遼寧大學生創新基金(201313198009)
肖建良(1964—),男,遼寧大連人,碩士,副教授。研究方向:計算機應用技術、虛擬現實。