張杰,李紅斌,吳正源,石志偉,張暢維
(武漢科技大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,武漢430065)
鋼鐵工業(yè)是國民經(jīng)濟(jì)的基礎(chǔ)產(chǎn)業(yè)。一般情況下想要很好地了解鋼鐵的生產(chǎn)工藝流程,需要去工廠實(shí)地參觀,但是現(xiàn)場惡劣環(huán)境容易造成危險(xiǎn)。
隨著計(jì)算機(jī)技術(shù)的迅猛發(fā)展,計(jì)算機(jī)模擬技術(shù)普遍應(yīng)用于制造業(yè)中,如何將計(jì)算機(jī)模擬實(shí)驗(yàn)運(yùn)用于工程教學(xué)也受到廣大學(xué)者的重視。目前雖然有一系列的教學(xué)實(shí)驗(yàn)平臺去解決這方面的問題,但是基于虛擬現(xiàn)實(shí)的熱軋生產(chǎn)流程互動平臺還不多,并且其中大多是單機(jī)運(yùn)行,需要額外安裝整個(gè)軟件,存在過程繁瑣、交互操作較少等問題。
所以我們提出了利用基于Unity3D、3dsMax等軟件實(shí)現(xiàn)鋼鐵行業(yè)中熱軋過程的Web端虛擬仿真。本文針對熱軋軋制現(xiàn)場,提出了一種基于計(jì)算機(jī)仿真技術(shù)的熱軋模擬平臺方案,實(shí)現(xiàn)了三維虛擬現(xiàn)實(shí)仿真,建立了融合計(jì)算機(jī)仿真技術(shù)的模擬培訓(xùn)系統(tǒng),以解決傳統(tǒng)仿真平帶的局限性問題。通過網(wǎng)頁遠(yuǎn)程直接瀏覽整個(gè)虛擬仿真工藝過程,不僅易于操作、具有良好的交互性,并且可以降低硬件投資,也不存在現(xiàn)場惡劣環(huán)境所帶來的危險(xiǎn)性,具有理論培訓(xùn)、實(shí)驗(yàn)教學(xué)等功能。
開發(fā)環(huán)境:Unity3D、3dsMax和Substance Painter
編程語言:C#
模型貼圖制作工具:3dsMax、Substance Painter
Web端制作工具:Unity3D
在3dsMax中利用多邊形建模制作出熱軋過程相關(guān)的機(jī)械模型。
熱軋過程相關(guān)的機(jī)械模型在3dsMax中的仿真效果如圖1所示。
使用3dsMax的動畫系統(tǒng),對需要運(yùn)轉(zhuǎn)的機(jī)器部件等物體進(jìn)行了動畫的制作:
(1)設(shè)置物體運(yùn)動的關(guān)鍵幀,使物體具有基本的動畫變換狀態(tài)。
(2)調(diào)整動畫曲線,使動畫更加平滑穩(wěn)定。
圖1
圖2
由于整個(gè)熱軋過程比較長,所以采用了分段制作動畫的方式,便于精確地調(diào)整每個(gè)工作段的動畫關(guān)鍵幀。
最后在Substance Painter中制作出基于物理的渲染(Physically Based Rendering)的逼真材質(zhì)。利用Sub?stance Painter可以在三維模型上直接繪制紋理的特點(diǎn),解決了UV接縫造成的貼圖不協(xié)調(diào)問題。
將模型動畫導(dǎo)入U(xiǎn)nity3D并寫入腳本,利用了關(guān)鍵幀提取和關(guān)鍵幀插值,使用四元數(shù)控制用戶視角相機(jī)的移動使相機(jī)的平移旋轉(zhuǎn)更加平滑,解決了視角生硬的問題,四元數(shù)q表示旋轉(zhuǎn)運(yùn)動可以等價(jià)繞軸向K旋轉(zhuǎn)角度φ,旋轉(zhuǎn)矩陣R與q的關(guān)系可以表示為:
QuaterlionLerp為插值函數(shù),其中ω∈[0,1],代表了插值矢量t末端在弦q0-q1上的位置:
結(jié)合使用Occlusion Culling技術(shù)針對熱軋場景進(jìn)行渲染優(yōu)化,通過調(diào)整 Smallest Occluder、Smallest Hole、Backface Threshold三項(xiàng)參數(shù),減少了40%Draw call和30%GPUmemory占用后期使用Bake Global Il?lumination,烘焙出熱軋場景的光照貼圖以及環(huán)境光、環(huán)境反射,并通過C#腳本動態(tài)加載貼圖信息,減少了渲染期間的光照開銷,大幅度降低了CPU占用率。
圖3
SH是定義在二維球面上的,一個(gè)定義在二維球面s上的函數(shù)可以用SH基函數(shù)以及系數(shù)近似表示,若用l和m表示SH的兩個(gè)參數(shù),f(s)表示定義在球面上的函數(shù),ylm表示基函數(shù),則f(s)在SH上的投影系數(shù)可以表示為:
f(s)則可以近似表示為:
考慮物體表面某一點(diǎn)x,其法線方向?yàn)閚,則該點(diǎn)從ω0方向反射出的光P(x,ω0)可表示為:
熱軋冷卻部分的粒子效果由Shuriken Particle Sys?tem實(shí)現(xiàn),通過控制粒子發(fā)射周期、預(yù)熱系統(tǒng)、噪音等屬性控制畫面效果。
在導(dǎo)出到Web端之前使用Post Processing Stack調(diào)整整體畫面的質(zhì)量,加入了AmbientOcclusion、User Lut、Vignette、ColorGrading 等效果。
Unity3D自帶的Mono VM在各個(gè)平臺移植、維護(hù)非常耗時(shí),有時(shí)甚至不可能完成。Mono的跨平臺是通過Mono VM實(shí)現(xiàn)的,有多少平臺,就要實(shí)現(xiàn)多少個(gè)VM,Mono VM肯定是不能滿足需求的。所以針對不同的新平臺需要使用IL2CPP,同時(shí)解決VM里面的bug,耗時(shí)耗力。例如WebGL這種基于瀏覽器的平臺。要WebGL支持Mono VM幾乎是不可能的,必須利用IL2CPP技術(shù)實(shí)現(xiàn)熱軋?zhí)摂M仿真的跨平臺。
網(wǎng)頁中包含了 JavaScript、HTML5,Three.js是其中的核心組件,WebGL接口多且復(fù)雜,在瀏覽器中直接調(diào)用硬件加速進(jìn)行圖形渲染,創(chuàng)建三維場景非常繁瑣。所以,通過IL2CPP可以避開這些問題。
圖4
圖5中有對流水線各個(gè)部位的展示和介紹,并且還有教學(xué)測試系統(tǒng),通過使用教學(xué)測試系統(tǒng),可以對用戶知識進(jìn)行檢測,在測試的最后會給出用戶答案和參考答案的詳細(xì)信息,整個(gè)測試系統(tǒng)是基于Unity3D引擎進(jìn)行開發(fā)的,通過C#語言對測試系統(tǒng)進(jìn)行邏輯控制,導(dǎo)入3dsMax中制作好的流水線動畫。另外通過對模型材質(zhì)的動態(tài)替換實(shí)現(xiàn)物體加熱效果。冷卻裝置用Unity3D中的Particle System更改參數(shù)實(shí)現(xiàn)。
圖5
相機(jī)控制使用了Vextor3.Lerp插值計(jì)算空間位置,在使用過程中觀察場景更方便。
Lerp插值函數(shù)基本原理:
通過在Update函數(shù)中每幀進(jìn)行攝像機(jī)位置到目標(biāo)位置的Lerp插值,可以起到攝像機(jī)平滑衰減速度逐漸到達(dá)目標(biāo)位置的效果。
攝像機(jī)當(dāng)前位置與目標(biāo)位置的距離表達(dá)式為:
其中targetPos代表目標(biāo)位置,cameraPosn代表攝像機(jī)當(dāng)前位置,distance0代表攝像機(jī)初始位置與目標(biāo)位置的距離,f代表插值系數(shù),n代表插值次數(shù)。
圖6
通過調(diào)整Camera遠(yuǎn)剪裁面,一定程度上減少了Overdraw。
動畫系統(tǒng)、相機(jī)控制的部分核心代碼流程:
在Update函數(shù)中逐幀調(diào)用代碼段,通過動畫播放時(shí)間控制提問過程是否執(zhí)行,并且設(shè)置兩個(gè)計(jì)時(shí)器,分別控制平臺運(yùn)行時(shí)間和測試時(shí)間,并計(jì)入最終報(bào)告。
流程圖如圖7所示:
圖7
相機(jī)上層代碼實(shí)現(xiàn):通過四元數(shù)插值計(jì)算出下一幀的相機(jī)位置及角度,平滑過渡,并且加入了運(yùn)動模糊Motion blur。
本文利用相關(guān)軟件實(shí)現(xiàn)了熱軋?zhí)摂M仿真實(shí)驗(yàn)平臺的研究與開發(fā),在Web端進(jìn)行仿真交互、學(xué)習(xí)。結(jié)果表明,Web端仿真在一定程度上解決了傳統(tǒng)虛擬仿真平臺安裝過程繁瑣的弊端,能夠做到在線學(xué)習(xí)。充分發(fā)揮了虛擬仿真的優(yōu)勢:既能引導(dǎo)學(xué)生自主學(xué)習(xí)和增強(qiáng)學(xué)生的參與感,又能與線上教學(xué)系統(tǒng)相結(jié)合。在一定程度上解決了學(xué)生只停留在書本知識,無法參與真實(shí)實(shí)驗(yàn)獲得更多細(xì)節(jié)觀察機(jī)會的問題。使人們享受到信息化以及計(jì)算機(jī)模擬技術(shù)給教育帶來的時(shí)代紅利。