OGRE引擎架構如何實現三維虛擬舞臺燈光效果
使用OGRE引擎的架構,能夠更加方便的模擬逼真的三維舞臺燈光環境,虛擬技術本身所具有的臨場感和交互能力不僅可以將靜態的設計和創作轉化為動態形式的再現,而且還可以及時地捕捉和展現設計者的構思、創意和靈感,一個成熟而完善的虛擬設計系統平臺無論是對于燈光設計師、演出導演、燈光控制操作者,還是對于燈光美術教學和做燈光效果演示等都是一個非常專業且實用的設計工具和得力助手。而實時方便的可交互性功能,則使得系統更加具有實時性和可操作性。本系統提供一個實時可交互的操作環境,滿足了用戶的需求。
一、系統架構
1. 邏輯架構
無論是游戲還是虛擬現實,為了表現其逼真性,虛擬場景大多比較復雜,所以虛擬場景的創建大多由3D 建模工具生成,然后對場景實時渲染輸出。舞臺燈光設計由3DMAX 提供基本的場景文件,通過DOM (Document Object Model) 接口進行解析,并進行資源的導入和場景的組織。最終進入OGRE
系統進行渲染。
光照模型是多種多樣的,需要在場景中分別實現它們的效果。同時用戶也要能夠通過UI 界面進行各種各樣的操作。系統要求操作復雜度高,計算量大,可擴展性強。需要設計與建立一個數據處理與計算效率高、可擴展性強、功能模塊松搞合強內聚的總體實現架構(如圖1所示),系統分為資源層,接口層,渲染層。
資源層:由3DMAX + Ofusion插件導出,生成場景組織,材質,實體,貼圖等系統所需的資源文件。
接口層:負責將這些資源文件導入場景中。
渲染層:實現舞臺場景和燈光的渲染,系統資源的管理,用戶交互的實時響應等。
二、系統實現關鍵技術研究
1. 場景的組織和形成
系統所需的資源文件由3DMAX通過Ofusion插件導出。導出的場景組織文件是XML格式的,記錄著舞臺的一些基本的參數和每一個舞臺實體的位置,朝向等各個方面的信息。場景節點是以樹狀形式組織的每個節點都有相應的父節點,因此我們可以通過對父節點的操作,方便的使多個子節點同時移動和旋轉。
2. 三維坐標變換
要把三維的渲染結果展現到二維的屏幕上,需要進行從三維坐標到平面坐標的轉換。首先,需要建立一個三維坐標系,我們創建一個三維的斜二軸側坐標系,其中x軸方向為水平向左,z軸方向為豎直向上,y軸的方向為與水平方向成45°角。在該坐標系中顯示圖形時,x軸和z軸方向的長度取圖形實際長度,而y 軸方向的長度則取實際長度的一半。
公式中,ηx、ηy、ηz是x、y、z軸的軸變形系數。進行軸測投影變換,可得下列方程式:
其中f和d是軸測變換矩陣系數,求解這個方程式,可得:
為了使立體感更強,令d=f= -0.354,可以求出軸測技影變換矩陣:
接下來,需要將圖形的三維坐標轉化為屏幕上的設備坐標,在透視窗口中,坐標原點位于屏幕的左上角,向右的方向為x軸的正方向,向下的方向為y軸的正方向。
假設在三維空間中的一點(x ,y ,z) ,在設備坐標中的坐標是(xx,yy) ,運用剛剛的軸測投影變換矩陣,可以得到如下轉換公式:
公式中xX、yY,是三維坐標原點在設備坐標系中的相對坐標。
將公式(4)代入(5),可以得出變換方程:
3. 粒子系統效果模擬
粒子是用四邊形來表示的。它有長寬、方向、顏色、壽命、數量、材質、重量和速率等屬性。粒子的屬性由粒子發射器(Particle Emitter) 和粒子特效影響器(Particle Affector) 共同決定。粒子發射器負責粒子的發射,給出粒子在發射時的一些屬性,包括運動速率、顏色、生命期等;粒子特效影響器負責粒子從發射后到消亡前這一階段粒子屬性的改變,可以用來模擬重力、拉力、顏色衰變等特殊效果。當粒子發射器不停地噴發出大量粒子時,就可以形成煙、火和爆炸等效果。
OGRE提供了粒子系統腳本語言,可以在腳本中設置粒子的各種屬性。
本文中,通過粒子系統描述了舞臺煙花,下雨和云霧的效果。結合OGRE 的動畫效果,可以實現更加逼真的場景粒子效果。
4. 光照效果模擬
光照是舞臺效果的關鍵因素,也是本設計系統核心的技術。渲染引擎提供了幾種常用的燈光,比如點光源、方向光源和聚光燈。但是對于真實的舞臺燈光效果模擬,這些是不夠的。對于一些特殊的舞臺燈光效果,比如體積光等,需要通過可編程渲染管線技術(shader) 來實現。shader有兩種,一種是頂點級的,稱為vertex shader(OpenGL稱為ve吐白program) ,取代固定渲染管線中的變換和光照部分,程序員可以自己控制頂點變換、光照等。硬件中處理頂點shader的單元叫vertex shader processors (頂點處理單元)。一種是像素級的,稱為pixel shader( OpenGL 稱為fragment program) ,取代固定渲染管線中的光柵化部分,程序員可以自己控制像素顏色和紋理采樣等。硬件中處理像素shader 的單元叫pixel shader processors (像素處理單元)。
為了使燈光的模擬更有真實感,還需要借助3D的光照方程來模擬計算。這里往往是一種近似的算法,但是它能達到一個很好的模擬效果和很快的運行速度。常見的光照模型有兩種:全局光照模型和直接光照模型。本系統采用全局光照模型。全局光照模型是一個能很好的模擬真實感的光照模型。它可以同時考慮到光線照射到物體表面上產生的反射、折射、透射、陰影和物體相互間作用的光照效果。利用全局光照模型,需要模擬實際光線的傳播過程和能量交換的輻射度。
對于光線跟蹤,需要考慮光源的直接照射結果以及反射光對該點的照明效果,把兩者綜合起來:
接下來計算輻射度,需要計算每個面片上的光照情況:
這里Ld是光源照射的光,T是光照傳播因子,TLi是其他面片反射來的光照,L便是最終要求的光照值。
系統界面及總結
三、系統界面
系統可以實現舞臺的切換,舞臺中各種場景效果,也可以與舞臺場景和各種燈光進行實時交互。如圖4為舞臺煙花效果圖,圖5為體積光效果圖。
文章來源:星光舞臺設備官網 ©版權所有。未經許可,不得轉載。