av日韩亚洲,一本一本a久久,亚洲一区二区三区,亚洲一区二区三区免费视频

VR技術(shù)在幕墻工程培訓(xùn)中的應(yīng)用

來源:期刊VIP網(wǎng)所屬分類:建筑工程時間:瀏覽:

  關(guān)鍵詞:VR技術(shù);Unity3D;3DSMax;技術(shù)培訓(xùn);虛擬現(xiàn)實

  摘要:為了更好地提升幕墻建造人員技術(shù)實力,常常利用虛擬現(xiàn)實(VR)技術(shù)來對幕墻建造人員進行虛擬式培訓(xùn)。在此背景下,本文針對VR在幕墻工程培訓(xùn)的應(yīng)用過程中涉及到的關(guān)鍵技術(shù),完成模型的建立與導(dǎo)入、腳本的編寫及組件的設(shè)置、碰撞范圍檢測、材質(zhì)的渲染等進行研究和應(yīng)用,并以Unity3D和3DSMax為背景,對其中的關(guān)鍵操作步驟進行說明,最終實現(xiàn)模擬仿真培訓(xùn)效果。該模塊的研究與實現(xiàn),解決了傳統(tǒng)建筑工程培訓(xùn)中的場地限制、場景限制并且降低了安全事故的發(fā)生,創(chuàng)造出了不被干擾的教學(xué)環(huán)境,同時也提高了技術(shù)人員安全意識以及技術(shù)實力。

建筑裝飾論文

  《建筑裝飾材料世界》是由北京市建筑材料科學(xué)研究院主辦的期刊。

  1. 引言

  虛擬現(xiàn)實技術(shù)(簡稱VR)在近年來是一種比較常用的技術(shù),它包含多種技術(shù)如:計算機圖形學(xué)、多媒體、人工智能等。虛擬現(xiàn)實技術(shù)可以產(chǎn)生一種沉浸式逼真的虛擬環(huán)境,與用戶產(chǎn)生交互,帶給用戶更多的沉浸感、體驗感 [1]。鑒于虛擬現(xiàn)實技術(shù)可以帶給用戶更加逼真的虛擬環(huán)境,所以往往用于教育培訓(xùn)、展示等多種場景。并且近年來虛擬現(xiàn)實技術(shù)與應(yīng)用取得了很好的進展。因此在本文中,將虛擬現(xiàn)實與幕墻行業(yè)結(jié)合起來更加有現(xiàn)實意義。

  幕墻工程屬于建筑行業(yè)的范疇,建筑施工行業(yè)存在施工人員多、施工現(xiàn)場多等情況,而且幕墻的安裝有別于傳統(tǒng)的建筑建造行業(yè),所以需要對工人進行安全及技術(shù)相關(guān)的培訓(xùn)。采用VR虛擬現(xiàn)實技術(shù),提高了工人的技術(shù)實力同時也解決掉了一些安全隱患。基于此,本文開展了VR技術(shù)在幕墻工程培訓(xùn)中的應(yīng)用研究工作。相關(guān)技術(shù)的研究與開發(fā)主要借重于Unity與3DSMax建模軟件 [2]。

  Unity是利用交互的圖形化開發(fā)環(huán)境為首要方式的軟件,是一款用于創(chuàng)建三維視頻交互、建筑可視化、實時三維動畫等類型互動內(nèi)容的多平臺綜合型三維開發(fā)工具。在場景交互、AI、動畫、UI制作、粒子效果、VR開發(fā)等方面提供了簡單易用的功能接口,可使用C#語言進行腳本編輯實現(xiàn)自定義功能開發(fā) [3]。3DSMax是一款基于PC系統(tǒng)的三維動畫渲染和制作軟件,其通用性很強,對PC的性能要求不高,其具有強大的角色動畫制作功能,在3DSMax中可以采用堆疊式的建模步驟,使得模型的制作具有非常強大的彈性 [4]。

  在現(xiàn)實生活中人員是沒有辦法穿透物體的。同樣在虛擬場景中,如果場景和人員都沒有加入碰撞檢測,那么人員就可以隨便穿透墻體等虛擬建筑物,很明顯不符合自然規(guī)律。因此有必要在虛擬模型中添加碰撞檢測范圍 [5]。

  另外,為了最終效果的真實與美觀,需要利用Unity中的組件對模型材質(zhì)進行渲染。

  對于VR培訓(xùn)相關(guān)模塊開發(fā)步驟如圖1所示。

  2. 虛擬建筑模型的建立

  為了讓用戶有更加真實的沉浸式體驗效果,所以搭建一個逼真的虛擬場景就顯得十分重要。故需要

  Figure 1. Flow chart of VR training module development steps圖1. VR培訓(xùn)模塊開發(fā)步驟流程圖建立虛擬幕墻模型。本文采用Unity作為開發(fā)工具,但不能創(chuàng)建比較復(fù)雜的模型,所以選取3DSMax作為建模軟件。

  本文使用多邊形建模的方法進行3D幕墻模型的制作 [6] [7],這個方法是先由一個正方形開始,利用添加線段和面數(shù)的方法完成模型的創(chuàng)建。首先在3DSMax中進行基礎(chǔ)模型的創(chuàng)建:在3DSMax中使用命令創(chuàng)建一個正方體,在正方體的屬性面板中調(diào)整正方體的長、寬、高尺寸以符合實際圖紙的要求,之后對建立的基礎(chǔ)多邊形模型進行編輯,以圖2為例,在3DSMax中首先選擇bevel命令給正方體添加一個內(nèi)邊,再使用extrude命令就可以得到一個長方形外框;之后通過復(fù)制和修改長方形外框的比例就可以粗略制作完成模型的框架。得到基本框架之后,通過創(chuàng)建標準物體面片命令就可以得到一個面片,然后把面片放置在所需位置就可以得到需要的模型 [8]。

  Figure 2. Three dimensional basic model rendering圖2. 三維基礎(chǔ)模型效果圖3. 碰撞檢測

  在虛擬建筑場景中,有規(guī)則和不規(guī)則的物體,規(guī)則或者比較規(guī)則的模型可以用規(guī)則的物體替代,不規(guī)則的模型可以用規(guī)則的物體替代,從而形成碰撞效果。只要進入碰撞檢測范圍內(nèi),就會發(fā)生碰撞檢測效果 [9]。

  三維模型制作好之后在3DSMax中選擇導(dǎo)出,文件格式選擇Obj類型文件;導(dǎo)出之后將Obj模型拖拽到Unity中,形成Unity預(yù)設(shè)文件。形成預(yù)設(shè)文件的好處在于若后續(xù)模型制作過程中會出現(xiàn)需要修改源文件的可能性,修改一個源文件之后所有根據(jù)此源文件復(fù)制的文件都可以一并修改,然后修改文件命名給文件進行分組、命名。完成文件的準備工作之后,在三維模型中選擇相應(yīng)的位置,選擇“add component”功能,添加碰撞范圍(Box Collider)組件。添加碰撞范圍之后,此效果可以利用腳本文件實現(xiàn),最終達到動態(tài)的效果。效果對比如圖3(a)和圖3(b)所示。

  (a) Unity中的預(yù)設(shè)文件

  (b) 最終效果

  Figure 3. Comparison of adding collision effects圖3. 添加碰撞效果對比圖3.1. 球體碰撞檢測

  在大多數(shù)的碰撞檢測中,球體碰撞檢測是一個基本的球體形狀的碰撞檢測器,也是最簡單的一種。如果知道兩個球體的半徑和兩個球之間的距離就可以檢測判斷了 [2],而且計算量非常小。如果兩個球體相切或者相交,那么兩個球體開始發(fā)生碰撞;如果既不相切也不相交,那就不發(fā)生碰撞。

  Figure 4. Sphere collision detection圖4. 球體碰撞檢測球體碰撞檢測原理如圖4所示,根據(jù)兩個球體球心的坐標、球的半徑求出球體之間的距離,然后和兩個球體半徑的和進行比較,從而判斷兩個球體是否發(fā)生了碰撞。如果兩個球體半徑和小于球體之間距離,則兩個球體發(fā)生了碰撞;如果兩個球體半徑和大于球體之間距離,則兩個球體沒有發(fā)生碰撞。假設(shè)球C1、C2的半徑分別為R1、R2,d為兩個球體之間的距離。當 R 1 + R 2 ≤ d 時,兩個球體相切或者相交,也就是發(fā)生了碰撞;當 R 1 + R 2 > d 時,兩個球體沒有發(fā)生相切或者相交,也就是未發(fā)生碰撞。

  3.2. AABB包圍盒碰撞檢測

  球體的碰撞檢測對于規(guī)則的物體可以有效的檢測到,然而對于不規(guī)則的物體,球體碰撞檢測顯然無法滿足要求,采用AABB包圍盒碰撞檢測算法可以檢測到物體包圍的邊界碰撞 [10]。

  為了簡化物體之間的碰撞檢測運算,通常會對物體創(chuàng)建一個規(guī)則的幾何外形將其包圍。如果物體外形發(fā)生變化,包圍的幾何圖形也發(fā)生變化,導(dǎo)致碰撞的邊界檢測也會發(fā)生改變。三維場景中包圍盒表現(xiàn)為六面體,并且每個面都平行于一個坐標平面,如圖5所示。在程序中計算效率較高,但是碰撞檢測效果并不是很理想,它的主要優(yōu)勢就在于性能。

  Figure 5. Bounding box hexahedron (picture source: Baidu)圖5. 包圍盒六面體(圖片來源百度)三維場景中物體的AABB包圍盒是一個六面體,所以實際上在三維場景中物體的AABB碰撞檢測可以采用四個點信息的判定來實現(xiàn)。三維物體的AABB包圍盒的八個頂點可以用兩個頂點來標識,如圖6所示。得到圖中兩個紅色頂點信息,也就得到了這個物體所對應(yīng)的八個頂點信息 [11]。

  Figure 6. Max min vertex (picture source: Baidu)圖6. 最大最小頂點(圖片來源百度)所以,在做三維物體的AABB碰撞檢測時,只需驗證物體A與物體B是否滿足如下條件:

  1) 物體A的X軸方向最小值大于等于物體B的X軸方向最小值且小于等于物體B的X軸方向最大值或者物體B的X軸方向最小值大于等于物體A的X軸方向最小值且小于等于物體A的X軸方向最大值;

  2) 物體A的Y軸方向最小值大于等于物體B的Y軸方向最小值且小于等于物體B的Y軸方向最大值或者物體B的Y軸方向最小值大于等于物體A的Y軸方向最小值且小于等于物體A的Y軸方向最大值;

  3) 物體A的Z軸方向最小值大于等于物體B的Z軸方向最小值且小于等于物體B的Z軸方向最大值或者物體B的Z軸方向最小值大于等于物體A的Z軸方向最小值且小于等于物體A的Z軸方向最大值。

  若滿足上述條件,則證明物體A與物體B發(fā)生碰撞,反之,則證明物體A與物體B未發(fā)生碰撞。

  4. 培訓(xùn)模塊的設(shè)計應(yīng)用

  本文主要解決幕墻安裝與故障排除以及相關(guān)安全意識的培訓(xùn)。主要為了提高幕墻安裝工人的技術(shù)實力,以及相關(guān)幕墻安裝的故障排除,另外就是為了提高工人的安全意識,降低事故發(fā)生率。主要分為三個階段:

  第一:準備工作,結(jié)構(gòu)設(shè)計工作,收集材料;

  第二:在Unity3D中進行場景的搭建;

  第三:相關(guān)功能的實現(xiàn)。

  下圖7為幕墻培訓(xùn)模塊開發(fā)流程圖。

  Figure 7. Flow chart of curtain wall training module圖7. 幕墻培訓(xùn)模塊流程圖以張家口機場窗戶為例,展示窗戶的開關(guān)等教學(xué)工作的實現(xiàn)。主要是腳本的編寫和組件的設(shè)置。

  因為窗戶的開啟和推拉門略有區(qū)別,需要將窗戶的把手旋轉(zhuǎn)到一定角度才能開啟窗戶;并且當窗戶把手旋轉(zhuǎn)相反的角度以后可以將窗戶鎖上,所以需要對“Circular Drive”組件的代碼進行一定的修改,以達到預(yù)期效果。

  修改的基本思路就是當把手旋轉(zhuǎn)到一定的角度后開啟或者關(guān)閉碰撞核組件就可以達到鎖/解鎖窗戶的效果。

  首先找到“Circular Drive”組件,右鍵點擊組件-選擇編輯腳本命令,在腳本中找到“startingGrabType”函數(shù),將其狀態(tài)從“GetGrabStarting”改為“GetGrabStay”(部分代碼如圖8所示)。這樣就可以在用戶使用VR手柄抓住門把手的時候更改被抓物體的屬性,為之后碰撞核的開關(guān)打下基礎(chǔ)。

  Figure 8. Window VR component code of Zhangjiakou Airport圖8. 張家口機場窗戶VR組件代碼然后在“Circular Drive”組件里找到“旋轉(zhuǎn)限制”(Limited Rotation)選項,點擊“+”按鈕,在彈出的對話框中找到碰撞核開啟/關(guān)閉選項,并把需要更改碰撞核的物體拖入,這里需要修改碰撞核的是窗戶的把手(如圖9所示)。

  6. 結(jié)束語

  本文以幕墻工程安裝培訓(xùn)為背景,研究闡述了VR虛擬現(xiàn)實技術(shù)在此背景下的應(yīng)用。對VR技術(shù)在培訓(xùn)領(lǐng)域具體實現(xiàn)過程中實現(xiàn)方法和操作過程進行了解釋。但略顯粗糙,還有很多不足之處。主要有以下幾點:

  1) 幕墻模型多種多樣,另外,不同的施工現(xiàn)場、不同的施工建筑主體多種多樣,也就增加了建模的難度和工作時長,導(dǎo)致工作效率不高。如果能夠直接導(dǎo)入建筑模型或許使建模這一工作能夠更加便捷。

  2) 在此系統(tǒng)之上還可以豐富功能,比如增加安全培訓(xùn)在里面的比重,增加普通工人對幕墻的保養(yǎng)維護培訓(xùn)。

  3) 考慮到相應(yīng)場景增加情景對話或者語音講解,豐富培訓(xùn)教學(xué)的形式。使被培訓(xùn)人員有更加完美的體驗。

  4) 在碰撞檢測中,考慮到兩個物體之間的碰撞檢測,多個物體之間碰撞檢測算法還未考慮。

  針對以上不足,希望通過后續(xù)工作繼續(xù)改進。

主站蜘蛛池模板: 垣曲县| 运城市| 隆德县| 安阳市| 连山| 淮阳县| 绥化市| 舟山市| 白山市| 鄯善县| 绵竹市| 岱山县| 丹阳市| 紫阳县| 九江县| 保山市| 芮城县| 神农架林区| 石城县| 大新县| 陕西省| 陈巴尔虎旗| 郴州市| 怀集县| 通渭县| 文山县| 湖口县| 大同县| 额敏县| 西吉县| 渝中区| 大悟县| 邵武市| 西乌| 武宣县| 曲水县| 乌拉特后旗| 陇西县| 大化| 临泽县| 哈密市|