閆興亞 趙 杰 崔曉云
(西安郵電大學 西安 710061)
?
基于Unity3D建筑施工虛擬培訓系統的研究與實現*
閆興亞趙杰崔曉云
(西安郵電大學西安710061)
摘要虛擬現實技術已越來越多的被應用到各個領域,建筑施工虛擬培訓系統是虛擬現實技術在建筑行業一個很好的應用。論文以Unity3D為開發平臺,結合當前建筑施工實際培訓需求,開發了建筑施工虛擬培訓系統。采用C#語言,對碰撞檢測、自動尋路、遮擋剔除、粒子系統、NGUI進行了研究和實現。實踐結果表明,基于Unity3D 建筑施工虛擬培訓系統具備良好的實用性、交互性、沉侵感、趣味性,起到了良好的培訓效果。
關鍵詞虛擬現實; Unity3D; 建筑培訓
Class NumberTP391
1引言
近年來,隨著計算機硬件及軟件的不斷發展,虛擬現實技術在教育、軍事、建筑、娛樂等各個行業的應用越來越廣泛[1]。采用現代化的計算機技術生成逼真的視、聽、觸覺等多重感應的虛擬環境,用戶同虛擬環境中的物體進行交互,能夠產生二維動畫所不具備的現場沉浸感[2]。目前,學校培育建筑施工人才主要是通過書本理論學習、二維視頻動畫等途徑,考慮到實際施工現場安全性的問題,無法讓學生親臨施工現場進行實際操作,而傳統的理論學習、二維視頻動畫不具有實踐操作性、交互性等原因,無法很好地讓學生進行施工流程技能培訓。
Unity3D是由Unity technologies開發的一個用戶輕松創建諸如三維視頻游戲、建筑可視化、實時三維動畫等類型互動內容的多平臺的綜合型游戲開發工具,是一個對編輯器、跨平臺發布、地形編輯、著色器、腳本、網絡、物理、版本控制等特性全面整合的專業游戲引擎[3]。由于其性價比高、開發流程簡單、跨平臺性及兼容性強等特點,越來越多虛擬現實項目將其作為開發平臺。本文旨在基于Unity3D游戲引擎,以3DMax、Maya、Photoshop等軟件為輔助工具,創建了一個集專業性、沉浸感、交互性、趣味性等特點的建筑施工虛擬培訓系統。討論了系統的設計模式,實現了包括碰撞檢測、自動尋路、遮擋剔除、粒子系統、NGUI等關鍵技術。
2系統總體設計
基于軟件工程的思想,建筑施工虛擬培訓系統開發主要分為兩個階段:第一階段是系統前期的分析策劃和素材的搜集、整理、制作;第二階段是在Unity3D中進行場景的搭建、用戶界面的制作和系統各模塊交互功能的實現。其流程如圖1所示。首先,從需求分析出發,策劃系統內容,確定系統各個模塊的功能。其次,現場取材和搜集整理資料。現場取材主要是到施工現場去拍攝施工建筑和施工器械、工具各個方向的外部輪廓和局部細節圖。這些圖片一方面可以作為施工場景布局的參考圖,也可以作為模型的貼圖。搜集的資料主要包括:建筑AutoCAD平面圖、相關建筑物設計圖紙以及施工工藝流程的資料。再次,利用3Dmax或Maya等建模軟件進行三維建模、施工工藝流程動畫的制作以及視頻渲染等,制作好后導出成Unity所支持FBX格式的三維模型文件和WAV格式的視頻文件。最后,將三維模型文件和視頻文件導入到Unity工程中進行系統第二階段的開發。第二階段的開發包括三方面的內容:第一、場景的搭建;其中主要包括建筑施工場地的搭建、周圍環境、光照、陰影、天空、場景烘焙、碰撞檢測等。第二、制作用戶界面;其中包括一級主導航欄和系統內部功能模塊菜單。第三、系統各模塊功能的實現;這里是用C#語言進行模塊功能的開發。最終將其發布成.EXE可執行文件。

圖1 系統開發流程圖
3系統關鍵技術
3.1碰撞檢測
碰撞檢測是模擬現實環境中的人物及物體在遇到障礙物時發生的本能反應。例如,當人物遇到墻壁,如果沒有設計碰撞檢測,則人物會穿過墻壁出現失真現象[4]。在現實中,應該是當人物前進方向上遇到墻壁時,則停止前進,而不是穿過墻壁。此時,應該對人物及墻壁添加碰撞器組件。碰撞檢測是整個建筑施工培訓系統最基本的要求。在Unity3D中,共有六種形狀碰撞器,分別是Box Collider、Sphere Collider、Capsule Collider、Mesh Collider、Wheel Collider、Terrain Collider。根據場景中模型的實際形狀來添加相應的碰撞器,比如,人物可以添加一個Capsule Collider,墻壁可以添加一個Box Collider。然后系統計算碰撞器的碰撞范圍就可以實現碰撞檢測。如圖2所示,給建筑施工場地的宣傳欄添加了一個Box Collider碰撞器。

圖2 碰撞檢測
3.2自動尋路
Unity自從3.5版本之后,增加了NavMesh尋路功能。在此之前,Unity只能通過第三方插件(如Astar尋路插件等)做尋路功能。不過由于不是自帶的功能,所以在設定網格和烘焙的過程難免會出現很多不便[5]。在Window下拉列表中可以看到Navgation,點擊后在原來的Inspector面板的旁邊會出現Navigation的面板,如圖3所示。

圖3 自動尋路烘焙面板
其中Object面板是對應當前選擇的物體,旁邊的Bake面板是對應全局選項的。在Scene Filter選項中,All(全部)、Mesh Renderers(渲染的網格)、Terrains(地形)是對Hirarchy面板里選擇顯示物體的一個篩選過濾。只有將Navigation Static選項勾上才能將當前的物體作為具有尋路功能的地形。OffMeshLink Generation選項是選擇該物體是否根據高度、可跳躍寬帶等全局的選項自動生成OffMeshLink。Navigation Layer是對參與尋路功能物體的一個分類,用層來分類,默認有三個層可以選擇,當然也可以自己添加層。將Navigation面板中Object的各項參數設置好以后,進入Bake選項卡進行烘焙,然后再通過代碼來實現人物的自動尋路。其主要代碼如下所示:
private NavMeshAgent agent;
void Start()
{
//獲取組件
agent = GetComponent
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
//攝像機到點擊位置的的射線
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit rayhit;
if (Physics.Raycast(ray, out rayhit))
{
//判斷點擊的是否地形
if (!rayhit.collider.name.Equals("Terrain"))
{
return;
}
//點擊位置坐標
Vector3 point = rayhit.point;
//轉向
transform.LookAt(new Vector3(point.x, transform.position.y, point.z));
//設置尋路的目標點
agent.SetDestination(point);
}
}
3.3遮擋剔除
遮擋剔除的主要思想是當一個物體被其他物體遮擋住而不在攝像機的可視范圍內時不對其進行渲染[6]。在虛擬現實項目的開發過程中,通常場景很大,場景內的物體較多,如果將整個場景進行渲染的話勢必會增加draw calls的數量,大大降低了系統的運行效率。Unity內置的遮擋剔除功能使其只對攝像機視野范圍之內的物體進行渲染,從而降低了系統的渲染負荷,提高了系統的運行效率。其直觀表現就是系統運行得更加流暢,不會出現卡頓的現象。在Window下拉列表中可以看到Occlusion culling,點擊后在原來的Inspector面板的旁邊會出現Occlusion的面板,如圖4所示,選中要進行遮擋剔除的物體,分別勾上Occluder Static和Occludee Static,它們表示當前物體要進行遮擋剔除。然后對需要遮擋剔的除物體進行烘焙(Bake),烘焙完成之后,進入到/isualization面板選擇需要進行遮擋剔除的攝像機,這樣,系統就只會渲染在該攝像機視野范圍之內的物體了。實驗表明,運用遮擋剔除后系統運行的更加流暢了。

圖4 Occlusion面板
3.4粒子系統
粒子系統在Unity中是用來制作煙、霧、蒸汽、火焰、落葉和其他一些特效。一個粒子系統由三個部分組成,分別是粒子發射器(Particle Emitter)、粒子動畫(Particle Animator)和粒子渲染器(Particle Renderer)。粒子發射器產生粒子,粒子動畫在時間軸上移動它,粒子渲染器在屏幕上渲染它們[7]。圖5是用Unity的粒子系統做的一個火焰特效。

圖5 粒子系統火焰特效
在本系統中,為了使施工工藝及環境更加真實化,使用粒子系統制作了一些電焊火花及環境特效。達到了對現實施工的逼真模擬效果。
3.5基于NGUI的UI制作
UI是任何系統中都必不可少的一部分,好的UI設計從視覺上能體現軟件的用途和特點,操作起來簡單舒適[8]。Unity4.6之前的版本自帶的UI系統是GUI,它是通過系統自帶的API來實現UI的,其最大的缺點是不能實現可視化的編輯,其位置、大小、及圖片資源都需要代碼去實現,并且每次運行后才能看見效果,開發起來很不方便。為此,本文采用NGUI來完成UI的制作。
NGUI(Next-Gen UI)是使用C#語言編寫的一個Unity插件[9]。它將各個功能都封裝成了腳本,并且將常用的一些組件做成了預設物,它可以在編輯狀態下來任意調整位置及大小,還可以添加一些UI特效。在本系統中,利用NGUI插件制作了系統導航欄,系統菜單欄、按鈕、工具箱、小地圖、答題面板、等界面。同時NGUI的Anchor能夠使各個UI元素具有屏幕自適應功能,使系統能夠適應不同分辨率的屏幕。
4系統效果展示
基于Unity3D的建筑施工虛擬培訓系統包括施工工藝、仿真實操、在線考評、構配件認知、安全管理、資源庫六個模塊。系統效果及部分功能模塊截圖如圖6~圖8所示。

圖6 施工工藝

圖7 仿真實操

圖8 構配件認知
其中,施工工藝是對建筑施工工藝流程的一個三維展示,本文以基坑周邊防護為例,用戶通過點擊箭頭指示就可以一步一步的觀看基坑周邊防護的搭建流程及具體步驟,并在系統的右下角配以語音、文字解說,實現對施工工藝流程的全面介紹。仿真實操是用戶通過完成系統設置的任務,獲得相應的道具,然后才能繼續完成工藝流程。該模塊使得系統具有一定的娛樂性,激發用戶的學習興趣。在線考評是進入系統的后臺考評系統,是對培訓者理論知識的一個考評。構配件認知是對建筑施工過程中所使用的構配件進行全面的介紹,在該模塊中,用戶可以360°的去認知構配件的細部結構,并且滾動鼠標滾輪可以放大、縮小,在系統的右邊有語音、文字對構配件的介紹。資源庫是對施工工藝中各個步驟所用到的參數(如:立桿埋入地表的數值,兩個立桿之間的間距等),構配件的型號、規格參數等的一個視頻介紹。安全管理是施工過程中所涉及的安全問題的一些安全準則,是以圖文表格的形式進行介紹。
5結語
本文對基于Unity3D的建筑施工虛擬培訓系統做了詳細的研究。在文中著重討論了系統設計模式及系統實現的關鍵技術。隨著技術的進步,虛擬培訓系統必將成為發展的趨勢,并將會在各個領域出現。本系統的開發將會為其他領域的虛擬培訓系統以及虛擬現實項目的開發提供一定的參考價值,同時具備推廣應用價值。
參 考 文 獻
[1] 相茂英,馬純永,韓勇,等.基于Unity3D的化工設備虛擬培訓系統研究[J].計算機技術與發展,2014(7):196-200.
XIANG Maoying, MA Chunyong, HAN Yong, et al. Research on Chemical Equipment Virtual Training System Based on Unity3D[J]. Computer Technology and Development,2014(7):196-200.
[2] GAN Jiansong. The key technology of indoor roaming based on Unity3d[J]. Journal of Yancheng Institute Of Technology(Natural Science Edition),2011(4):56-59.
[3] ZHU Yu. Design and research of roaming system based on Unity3D[J]. Information Security and Technology,2014(12):78-81.
[4] 王彩玲,劉瑞香,宋釗.基于Unity3D的虛擬校園漫游的設計與實現[J].科技視界,2015(7):18-20.
WANG Cailing, LIU Ruixiang, SONG Zhao. Design and Realization of Virtual Campus Roaming Based on Unity3D[3]. Science & Technology Vision,2015(7):18-20.
[5] ZHU Huijuan. Virtual Roaming System Based on Unity3D[J]. Computer System Application,2012(10):36-39,65.
[6] REN Guodong, CHEN Linhua, TAO Xuefeng, et al. Information Visualization System of Virtual Museum Based on Unity3D[J]. Computer System Application,2013(9):86-90,59.
[7] 孫浩鵬,李楊.面向虛擬現實的蝸殼內流體現象研究[J].科技創新與應用,2013:33-41.
SUN Haopeng, LI Yang. Research on the phenomenon of fluid flow in the spiral case of virtual reality[J]. Technology Innovation and Application,2013:33-41.
[8] 李錦青.WEB UI控件庫的開發[J].長春理工大學學報(自然科學版),2009(1):129-131.
LI Jinqing. Development of WEB UI Controls[J]. Journal of Changchun University of Science and Technology(Natural Science Edition),2009(1):129-131.
[9] ZENG Senlin. Visual Simulation Research of Cross Platform Virtual Driving Based on Unity3D[D]. Central South University,2013.
[10] LI Zhijun. Virtual Reality Design and Research of Ship Rudder Engine Room Based on Unity3D[D]. Dalian: Dalian Maritime University,2014.
[11] 李益.基于Unity3d的磨礦車間虛擬仿真系統[D].大連:大連理工大學,2014.
LI Yi. Virtual Simulation System of Grinding Workshop Based on Unity3d[D]. Dalian: Dalian University of Technology,2014.
[12] 倪萌.基于Unity3D的汽車發動機虛擬裝配訓練考評系統的設計與實現[D].北京:北京工業大學,2014.
NI Meng. Design and Implementation of Virtual Assembly Training Evaluation System for Automobile Engine Based on Unity3d[D]. Beijing: Beijing University of Technology,2014.
收稿日期:2016年1月20日,修回日期:2016年2月23日
作者簡介:閆興亞,男,碩士,教授,研究方向:虛擬現實與增強現實。趙杰,男,碩士研究生,研究方向:虛擬現實與增強現實。崔曉云,女,碩士研究生,研究方向:虛擬現實與增強現實。
中圖分類號TP391
DOI:10.3969/j.issn.1672-9722.2016.07.020
Research and Implementation of Construction Virtual Training System Based on Unity3D
YAN XingyaZHAO JieCUI Xiaoyun
(Xi’an University of Posts and Telecommunications, Xi’an710061)
AbstractVirtual reality technology has been applied to more and more fields. Virtual training system of construction is a good application of virtual reality technology in the construction industry. In this paper, Unity3D is the development platform, combined with the actual training needs of the construction, developing the virtual training system of construction. The collision detection, automatic routing, occlusion culling, particle system, NGUI are studied and implemented with C# language. The practical results show that the virtual training system of construction based on Unity3D has good practicability, interaction, and it has a good training effect.
Key Wordsvirtual reality, Unity3D, construction training