吳小瑩
(北海職業(yè)學(xué)院,廣西 北海 536000)
虛擬現(xiàn)實技術(shù)由于具有沉浸感、交互性和構(gòu)想性等特點,在建筑可視化領(lǐng)域應(yīng)用越來越廣泛。本文以保護歷史古建筑群為目的,介紹了基于虛擬現(xiàn)實技術(shù)的項目完整的開發(fā)過程。
虛擬漫游系統(tǒng)最終呈現(xiàn)的趨于真實性體驗感與虛擬引擎技術(shù)有著直接關(guān)聯(lián)。綜合考慮本項目的實際情況,本文提出以Adobe Photoshop、Mind Tex 2、CAD、3DS MAX 和Unreal Engine 4(以下簡稱“UE4”) 等為技術(shù)支持平臺的古建筑VR 漫游系統(tǒng)的開發(fā)方法,能夠在PC 端實現(xiàn)逼真視覺的古建筑漫游效果。該方法的總體設(shè)計流程見圖1。
圖1 古建筑VR 漫游系統(tǒng)設(shè)計流程圖
此項目的開發(fā)過程包括前期數(shù)據(jù)采集、三維建模、模型優(yōu)化、貼圖制作、UV 制作、烘焙、UE4場景搭建、交互設(shè)計等環(huán)節(jié)。
在構(gòu)建虛擬模型之前,首先需要采集與處理相關(guān)數(shù)據(jù)信息,對古建筑場景進行實地拍攝和勘測,收集建筑場景地形圖以及建筑物設(shè)計圖、外形結(jié)構(gòu)圖和實景照片等。前期數(shù)據(jù)采集的實地取景拍攝特別重要,拍攝照片應(yīng)注意角度、光線、陰影等問題。同一個場景,在不同的時間段拍攝,拍攝角度不同,照片的曝光度、色溫、白平衡等會有較大差異,所以盡量在光線充足的時段取景,特別要注意避免逆光拍攝,以保證照片的質(zhì)量能滿足后期建模與制作材質(zhì)貼圖的需要。這些實地取景的照片主要有兩大作用:一是原始照片可作為后期建模的參照物;二是經(jīng)過平面軟件后期處理的實地取景拍攝照片可用來制作模型的UV 貼圖。
考慮到古建筑模型后期渲染輸出和操作過程中的便捷性,一般在計算機中需要將數(shù)據(jù)進行壓縮優(yōu)化,例如現(xiàn)實中高1 m 的物體可按10∶1 的比例進行壓縮,即可轉(zhuǎn)換為10 cm。所以根據(jù)前期采集的建筑地形和建筑物的整體結(jié)構(gòu)和大小等數(shù)據(jù),參照1∶500 的比例先在CAD 上繪制、調(diào)整古建筑場景地形二維圖紙和建筑物頂、底、正、后、左、右各視角的二維剖面圖紙。本系統(tǒng)制作過程中主要使用3DS MAX 制作三維虛擬場景,其中包括古建筑群的地形、路面、植被、古建筑物等模型。為了提高三維模型的制作效率,各部分模型需分開創(chuàng)建。地形的三維模型的制作是先將之前在CAD 中處理好的1∶500地形圖(DWG 格式) 直接導(dǎo)入到3DS MAX軟件中,底圖導(dǎo)入時必須要保證其平面圖的坐標在3DS MAX 的設(shè)置為坐標原點(即世界坐標歸零),為了防止在后期模型制作過程中不小心移動底圖,世界坐標歸零后立即凍結(jié)底圖,然后通過擠出修改器生成高低起伏的地形模型。古建筑物的模型制作也是采用類似的方法,將建筑物的CAD 截面圖導(dǎo)入到3DS MAX 軟件中作為三維建模的參考依據(jù)。當所有模型使用上述制作流程全部創(chuàng)建完成后,可根據(jù)地形平面圖的布局,將樹木、植被、各建筑物等模型合并起來。
古建筑場景模型通常存在大量多邊形網(wǎng)格,面數(shù)眾多且不規(guī)則,若直接導(dǎo)入虛擬引擎中將帶來不必要的性能損耗。為了保證后期虛擬引擎運行流暢,一般會使用低面數(shù)的模型(低模) 結(jié)合法線貼圖的形式來呈現(xiàn)細節(jié)相對豐富的古建筑模型。
使用3DS MAX 軟件構(gòu)建的模型的主體包括精細模型(精模)、中等復(fù)雜度模型(中模) 和體塊模型(低模)。其中,精模是指能夠全面展示古建筑物結(jié)構(gòu)和細節(jié)(內(nèi)部構(gòu)造、門窗造型、雕塑裝飾等) 的高復(fù)雜度、高精度的模型。中模是在不影響古建筑物的真實結(jié)構(gòu)的基礎(chǔ)上,盡量忽略部分結(jié)構(gòu)細節(jié),著重還原古建筑物的幾何實體結(jié)構(gòu)特點的一種模型制作方式,主要用于制作道路兩旁的主建筑模型,要求能大致反映出建筑物的整體結(jié)構(gòu)和輪廓特征。低模是在保證古建筑模型的整體性和全面性的基礎(chǔ)上,完全忽略古建筑物的細部結(jié)構(gòu),只為突出古建筑物的輪廓和結(jié)構(gòu)大體感覺的一種模型制作方式,主要用于制作非臨街、非重點建筑物的成片建筑區(qū)域。
根據(jù)VR 漫游系統(tǒng)的設(shè)計與功能需求,本系統(tǒng)中涉及的所有虛擬三維模型的主體基本由優(yōu)化過的中模和低模組成。因此,在不影響虛擬場景逼真性效果呈現(xiàn)的基礎(chǔ)上,盡可能減少面數(shù),對場景中的模型進行優(yōu)化,具體方法如下。
1) 清理場景中不需要的元素。在3DS MAX 中分別執(zhí)行Unhide All 和Unfreeze All 命令,并對場景中的所有物體進行解除組合處理,然后刪除所有建模時遺留的CAD 線框、廢棄的樣條線以及場景以外的多余模型。
2) 模型的單面優(yōu)化顯示。目前UE4 支持的模型都是以單面的形式存在,即正面顯示,背面不顯示。例如,在一個封閉的室內(nèi)建筑空間,看到一面墻,但并不需要看到這面墻的背面,所以墻的背面就完全可以刪除,若不刪除,引擎會對墻的背面進行計算,造成不必要的損耗。在3DS MAX 中,每個模型面都有正面和背面的概念,因此,可以在每個物體的屬性選項中設(shè)置背面消隱,以此來減少模型的總面數(shù)。
3) 刪除不可見的冗余線、面。例如,模型底部的面和一些被遮擋的面都可以刪除。同時,針對有規(guī)律布線的模型,可以使用石墨工具,選擇間隔的循環(huán)線段,并依次刪除,這樣也可以達到手動減面的效果。
4) 合并模型中的三角形面。通過刪除線、面或邊的塌陷及合并點等操作,將3 個三角形轉(zhuǎn)化為2 個三角形,再將2 個三角形轉(zhuǎn)化為1 個四邊形,這樣可以減少不明顯影響模型精度的面片數(shù)量。
5) 使用貼圖取代復(fù)雜的模型。在古建筑建模中,一般會使用貼圖加低模的方式來取代復(fù)雜的鏤空裝飾模型和凹凸重復(fù)性大的結(jié)構(gòu)模型(窗戶、大門、瓦片、檐角裝飾等),以精簡面數(shù),見圖2。
圖2 貼圖前后對比效果
經(jīng)過對UE4 的多次測試,結(jié)合以往的經(jīng)驗,為了盡可能減輕系統(tǒng)的運行負擔,本文建議將單個場景空間的模型面數(shù)控制在100 萬以內(nèi),單個模型的面數(shù)控制在5 萬左右,但是此數(shù)據(jù)僅用于本系統(tǒng)開發(fā)參考。
材質(zhì)貼圖對虛擬場景實現(xiàn)最終效果影響最大,通過一張優(yōu)質(zhì)的貼圖可以使得原本平淡無奇的中模、低模生動具體。一般貼圖制作的規(guī)格要求包括以下幾個方面。
1) UE4 支持的貼圖格式很多,包括JPG、TGA、PNG、DDS、PDS、BMP 等格式。經(jīng)過測試,除了GIF 和TIF 格式外,其他格式3DS MAX 基本都支持,不過最常使用的是JPG、TGA、PNG 和PDS 格式,其中TGA 和PNG 這兩種格式是透明貼圖,一般用于虛擬場景中的花草、植被、古建筑鏤空裝飾物等模型貼圖。
2) 由于前期一般都會使用單反相機進行實地取景拍攝,基本能保證每張素材圖的分辨率最小為2 500×2 000 像素。為了平衡系統(tǒng)的運行速度,經(jīng)過平面軟件處理合成后的貼圖,在盡可能保持原來清晰度的情況下,此項目對大部分貼圖要求最終導(dǎo)出的分辨率為1 024×1 024 像素。
3) 在UE4 中,由于光柵化需要對紋理采樣進行快速取值,因此傳入的貼圖圖像的尺寸必須是2的n 次方。常用的尺寸有64×64,128×128,256×256,512×512,1 024×1 024,2 048×2 048。雖然目前很多VR 引擎已經(jīng)可以將任意尺寸的貼圖自動拉伸或壓縮成合適的規(guī)格,但是有時自動功能并不完美,經(jīng)常會看到場景里密集紋理貼圖產(chǎn)生閃爍情況,這時必須認真檢查貼圖的尺寸。
在制作完成模型與貼圖后,若將貼圖直接貼到模型上,貼圖的比例、位置是完全錯亂的[1],此刻,UV 是二維紋理映射到三維模型的橋梁。一張UV的好壞直接影響貼圖的表現(xiàn),UV 貼圖的編輯和貼圖紋理的比例與尺寸相關(guān),展UV 就相當于把現(xiàn)實中的一個方形盒子拆開并攤平。3DS MAX 中內(nèi)置有用于展UV 的UV 編輯器,也可以選擇專業(yè)UV 處理軟件Unfold3D 或UVLayout 等。
在UE4 中,只要有光就要模擬光照信息,其中光照信息有動態(tài)和靜態(tài)之分,動態(tài)的好處是實時變化,但是消耗資源。在大部分制作過程中,基礎(chǔ)環(huán)境光照信息是沒有變化的,通常需要制作一套靜態(tài)光照貼圖來模擬光照信息,因此光照貼圖制作已經(jīng)成為大部分VR 制作的標準流程。由于之后在UE4中還需要進行燈光烘焙,因此本項目中的同一個模型必須制作兩套UV,分別存放在不同的UV 通道中。第一套UV 用于貼圖映射關(guān)系的存儲,可以重復(fù)疊加使用,第二套UV 用于靜態(tài)光照映射關(guān)系的存儲,即用來烘焙光照貼圖,所以UV 不能產(chǎn)生重疊現(xiàn)象,而且要最大化利用貼圖空間的分辨率。兩組通道UV 見圖3。
圖3 兩組通道UV
貼圖完成的模型要導(dǎo)出到UE4 中進行操作,需要在3DS MAX 中進行烘焙和導(dǎo)出[2]。貼圖烘焙是3DS MAX 中的最后一道工序,是把3DS MAX 的光照信息渲染成貼圖,再把這張貼圖重新貼回場景中,這樣就不需要CPU 重新計算,場景的顯示響應(yīng)速度也極快。烘焙技術(shù)是優(yōu)化場景的一大利器,廣泛應(yīng)用于VR 漫游動畫中。
經(jīng)過之前一系列的開發(fā)過程,已經(jīng)優(yōu)化項目中所有的模型,在3DS MAX 導(dǎo)出模型之前建議再檢查一遍場景單位、貼圖路徑以及模型、材質(zhì)貼圖命名是否一致等,再導(dǎo)出.FBX 文件。以下是關(guān)于模型導(dǎo)出的一些注意事項。
1) 合并模型。為了合理地利用資源,盡量減少場景的模型個數(shù),按照貼圖、位置或其他要素來區(qū)分和分類需要合并的模型,目的是減少場景中的模型總數(shù)和減少模型中的面數(shù)。可以考慮通過多邊形附加、塌陷命令將同類的多個模型合并成一個。
2) 檢查并處理法線。在3DS MAX 制作模型的過程中,各種因素會導(dǎo)致有的模型法線錯誤,如果直接導(dǎo)入UE4,后期會出現(xiàn)很大的問題,因此可以把模型轉(zhuǎn)換為mesh,檢查處理完法線問題后,再將模型重新轉(zhuǎn)換為poly。
3) 碰撞體的制作。碰撞體是指模型導(dǎo)入UE4后模型周圍的一層“空氣墻”[3]。當場景中的人物移動時不會直接穿透模型,而是會被“空氣墻”阻擋。碰撞體模型均為凸面體,一般要求盡可能貼合原模型且要大于原模型,可以在3DS MAX 中提前進行創(chuàng)建,然后在UE4 中通過靜態(tài)網(wǎng)格物體編輯器來進行碰撞設(shè)置。本項目涉及的古建筑場景模型多且復(fù)雜,必須在3DS MAX 中提前創(chuàng)建并命名所有碰撞體模型。
在UE4 中新建一個空白項目,導(dǎo)入已經(jīng)準備好的古建筑地形和模型資源,新建關(guān)卡,把已導(dǎo)入的模型拖入當前關(guān)卡中,設(shè)置碰撞體,添加定向光源、天空光源和天空球,搭建室外場景環(huán)境。其中室外場景的燈光部分主要由太陽光和天光組成,室內(nèi)場景的照明燈光主要以點光源為主。檢查調(diào)整場景中的光照、陰影、植物、建筑地形等,并進行測試構(gòu)建,檢查場景中是否存在溢光、漏光、黑面、亮面、溢色、模型忽黑忽閃、場景無層次感、燈光陰影有鋸齒等問題并及時處理,最后在UE4 中重新調(diào)整材質(zhì)球。
為了實現(xiàn)項目的虛擬漫游功能,需要在場景中添加交互設(shè)計,主要設(shè)計如下。
1) 創(chuàng)建導(dǎo)航小地圖。導(dǎo)航小地圖的功能實現(xiàn)是通過Get Actor Location 函數(shù)獲取用戶對象的位置,將用戶對象的位置和小地圖上坐標的位置相關(guān)聯(lián)。在藍圖編輯器中,按照一定的邏輯流程設(shè)置各節(jié)點、事件、函數(shù)、變量,通過連接獲取到玩家的位置,再連接到Set Actor Location 節(jié)點上,重新設(shè)置用戶對象在導(dǎo)航地圖上的坐標。
2) 制作觸發(fā)式開關(guān)門。在建筑可視化漫游系統(tǒng)設(shè)計中,開關(guān)門操作是必不可少的,這里以第三人稱視角為例,為門的模型添加碰撞和盒體觸發(fā)器,通過設(shè)置編輯關(guān)卡藍圖實現(xiàn)觸發(fā)式開關(guān)門功能,關(guān)卡藍圖設(shè)置見圖4。
圖4 關(guān)卡藍圖設(shè)置
本系統(tǒng)測試的主要內(nèi)容有:場景漫游、天空同步、導(dǎo)航小地圖、開關(guān)門、場景切換等功能的實現(xiàn)效果。經(jīng)過多次測試,最終打包生成.exe 可執(zhí)行文件,可正常運行于Windows 10 操作系統(tǒng)上。
本文闡述了以3DS MAX 和UE4 為主要核心的虛擬現(xiàn)實技術(shù),構(gòu)建了一個沉浸式的古建筑群漫游虛擬仿真系統(tǒng)。通過搭建虛擬古建筑群環(huán)境,在不破壞古建筑原始風(fēng)貌的前提下,結(jié)合虛擬交互技術(shù),讓用戶可以近距離接觸古建筑,并親身體驗穿梭于古建筑群的真實感,為古建筑群的保護和傳統(tǒng)文化的傳播提供了新的發(fā)展方向。