李谷偉
(浙江東方職業技術學院數字工程學院 浙江省溫州市 325000)
中學化學實驗室里普遍存放著大量的化學物品,具備易燃、易爆、腐蝕性強的特點。在化學實驗過程中,由于學生對實驗過程不熟悉,操作不規范,往往極易造成火災、爆炸、腐蝕人體皮膚等安全問題。除此之外,化學實驗器具的老化、實驗室自身條件簡陋、供電線路老化、惡劣的天氣等因素也會帶來眾多的安全隱患問題。
針對這些問題,本文提出一種基于Unity的化學實驗虛擬現實重現方法。采用Maya對實驗環境進行三維建模,采用Unity對實驗過程中的交互功能進行設計,采用Visual Effect Graph技術、Shader Graph技術等方法,實現各種化學實驗特效仿真。憑借這一方法,開發了中學化學實驗虛擬仿真原型系統。實例表明,該方法可以形象、逼真的再現化學實驗中的各種仿真效果,解決了傳統化學實驗過程中存在的中毒、腐蝕皮膚、火災或爆炸等安全隱患問題。
基于Unity的化學實驗虛擬現實系統,采用Maya對實驗環境進行三維建模,采用Unity對實驗過程中的交互功能進行設計,采用Visual Effect Graph技術、Shader Graph技術等方法,實現各種化學實驗特效仿真。同時,該系統將發布2個平臺,一個是VR平臺,一個是移動平臺,學生可以借助VR頭盔,配合手機,體驗豐富的化學實驗交互功能,能夠在確保實驗安全性的同時,增強了課堂實驗的趣味性。
根據基于Unity的化學實驗虛擬現實系統的開發方法,提出該方法的總體流程如圖1所示。
開發VR火災隱患排查系統,首先需要了解宿舍發生火災的全部隱患,將這些隱患點信息存儲起來,用3dsMax為宿舍場景進行建模以及紋理貼圖,對應所有的隱患點特別有針對性的建立精致模型,導入Unity引擎,在Unity引擎中,開發隱患點排查交互功能模塊,利用相交球檢測技術、添加爆炸點技術等為每個隱患點添加火災特效、爆炸特效,設計醒目的UI,為體驗者提供清晰的體驗感,最終將生成的系統發布到HTC VIVE。
Maya是Autodesk公司出品的一款功能強大的三維動畫軟件,它在三維建模、影視動畫、影視特效領域有非常多的應用。它最常用的建模方式是多邊形建模,開發者可以通過捏泥人的方式去對模型的每個點進行精細的控制,建模的操作方式非常新穎,新版軟件升級了UV模塊,展UV非常方便,特別適合VR應用。因此,本文選用Maya對宿舍場景進行建模、UV處理與貼圖制作。

圖1:開發化學實驗虛擬現實系統總體流程

圖2:VFX Graph編輯界面
化學實驗虛擬現實系統對三維場景的真實度要求非常高,所以需要一款能夠制作3A級畫面的引擎來制作。除此之外,還需要添加很多交互功能以及UI界面的制作,而這些功能與效果的實現,都需要Unity來完成。
Unity是一款開發三維游戲的引擎,特別是手游市場,占據了很大的比重,而開發語言使用的是C#語言,它是基于面向組件開發的一個引擎,兼容所有平臺。本文采用Unity實現特效展現和交互功能。
Unity開發都是面向組件的開發,而本項目主要使用的是Visual Effect Graph模塊,這個模塊的強大效果以及掌控力是我們實現逼真特效的關鍵所在。而Shader Graph模塊也是我們實現物理渲染效果的必要方法。
化學實驗中存在著大量的實驗效果,而這些實驗效果靠傳統的CG技術很難實現,尤其是接近于照片級的效果,同時還要考慮到運行效率的問題。采用Unity最新的Visual Effect Graph技術可以確保系統流暢運行,并實現接近于照片級的效果。
Visual Effect Graph技術是在Unity 2018.3之后推出一項新技術,它其實是一種新的特效工具。它與原本的粒子系統相似,但它最直觀的特點是可視化的節點,支持編程,運行在GPU之上。這些特點讓它能夠支持更龐大的圖形運算量以及對開發者、創作者提供了更加靈活的開發空間。因此,可以用來制作游戲里大量的3A級特效。例如:本系統中所需化學實驗中發生的各種化學反應特效。
Unity中使用Visual Effect Graph技術的方法:
Visual Effect Graph需要通過Package Manager來安裝,目前只支持HDRP,所以還需要安裝HDRP。安裝完之后,需要在Project窗口的Create菜單創建HDRP的配置文件。
先創建一個VFX Graph資產,拖到場景中后會自動生成一個GameObject,Unity會自動添加一個Visual Effect組件,并引用到之前創建的VFX Graph資產,打開可以編輯它,如圖2所示。
System:虛線包裹的幾個Context的集合叫做System。一個System包含Initialize,Update和Output。一個VFX Graph可以包含多個System。
Spawn:這個Context定義了生成粒子的數量以及生成的時機。
Initialize:這個Context類似編寫腳本時的Start方法,用來對粒子進行初始化操作,它需要以Capacity和Bounds開始。
Capacity定義同一時間可以存在的粒子最大數量。這個值很重要,決定了初始分配多少內存,應該根據生成粒子的數量來設置數值。一般可以通過公式計算:Rate × Max Lifetime=Capacity。
Bounds:定義粒子的模擬區域
Update:這個Context類似編寫腳本時的Update方法,設置粒子隨著時間的變化。它可以使用力,比如添加碰撞、力場等。
Output:用來渲染粒子,它決定了生成粒子的類型、紋理、顏色、朝向等。一個System可以有多個Output輸出。
設置適當的參數值,可以得到如圖3所示效果。
使用Shader Graph,需要安裝Shader Graph包和Universal RP包(Unity 2019.3之前的名稱為LightWeight RP)。創建并配置SRP(可編程渲染管線),然后新建PBR Graph。打開PBR Graph文件即可開始設置基于物理渲染的材質效果了。

圖3:簡單火焰測試效果

圖4:測試爆炸效果

圖5:化學實驗虛擬現實系統總體設計
通過各種節點的連接,調試參數,可以得到如圖4所示的邊緣發光效果。
針對現有的VR重現系統的功能模塊以及存在的缺點,改良設計了化學實驗虛擬現實系統,如圖5所示。
功能模塊如下:
(1)實驗室再現:創建化學實驗室場景模型,添加各種實驗過程中發生的特效,添加實時更新的UI界面。
(2)VR核心模塊:VFX Graph技術、Shader Graph技術。
(3)實時模擬:實時更新實驗數據、實時顯示交互過程中的特效。

圖6:實驗過程重現
場景中添加了由Visual Effect Graph技術實現的火焰和火星效果,所有的材質渲染都是基于Shader Graph技術實現的。加上了實時交互的UI界面,以及實時顯示的數據信息,如圖6所示。根據研究,此系統能夠讓學生使用VR手柄來操控實驗儀器和設備,并實時產生預設的化學效果。學生可以利用此系統完成所有的化學實驗,效果非常逼真。
為了解決化學實驗過程中極易造成火災、爆炸、腐蝕人體皮膚等安全問題,本文研究了一種基于Unity的化學實驗虛擬現實系統,給出了化學實驗虛擬現實系統的總體設計、開發流程以及技術解決方案,探討了Visual Effect Graph、Shader Graph等關鍵技術,實現各種化學實驗特效仿真,開發了中學化學實驗虛擬仿真原型系統。實例表明,該方法可以形象、逼真的再現化學實驗中的各種仿真效果,解決了傳統化學實驗過程中存在的中毒、腐蝕皮膚、火災或爆炸等安全隱患問題,并且增加了化學實驗課堂的趣味性,提高了學生學習積極性。