天天看點

三維渲染引擎編輯器的研究

1 引言

    近年來,網絡遊戲的發展日新月異,這離不開遊戲引擎,而遊戲引擎中最重要的莫過于渲染引擎,因為它直接影響遊戲的畫面品質和視覺效果。渲染引擎編輯器是針對某款渲染引擎而開發的工具,通過渲染引擎編輯器,開發人員無需了解渲染引擎的内部構架、工作原理,無需編碼便可創作出效果良好的場景供三維應用程式使用,大大提高了開發效率,節省了開發成本。

2 OGRE簡介

    開源圖形渲染引擎OGRE(Open-source Graphics Rendering Engine)是一款開源的、面向對象的三維圖形渲染引擎,由一個小型核心團隊編寫和維護,并依靠其不斷成長的社群提供支援。由于是一款開源引擎,是以得到各種團體組織的改造和擴充,進而能夠适應不同的應用領域并擁有更強大的功能。

    OGRE的特點有:平台無關性,它支援Windows和Linux以及Mac OSX平台;可擴充的例子架構,使程式運作更快更簡單;接受靈活的網格資料格式。可以從許多三維模組化工具中導出模型,包括Milkshape3D,3D Studio Max,Maya,Blender和Wings3D;強大的材質聲明語言允許在代碼外維護材質資源,支援多材質技術,允許根據顯示卡能力的不同設計不同的材質,OGRE會自動選擇目前顯示卡支援的使渲染效果最好的技術;高度靈活的場景管理機制,由使用者決定采用何種場景類型,并允許使用者通過插人開發的子類來擷取對場景的完全控制,場景圖結構化,允許實體對象附加在場景節點上并随節點移動。

3 主要子產品介紹

    (1)CAELUM它是OGRE的第三方插件,其目标是生成似照片般效果的大氣場景,其中包括天空顔色,雲和各種氣象效果(雨,雪等),能繪制太陽、月亮(月相)、星空,并能根據目前時間和錄影機角度實時更新這些對象在場景中的位置和狀态。

    (2)ETL可編輯地形管理器它是OGRE的第三方插件庫,它能夠基于高位圖來管理和展示地形,可以作為地形場景管理工具使用,但其更大的優點是能夠編輯地形,通過它可以實時的改變或設定地形的高度。該捕件庫的設計非常精巧,各個組成部分互相獨立,是以使用者可随機選擇需要的部分,而不會因為某些部分的缺失而影響整體。

   (3)PagedGeometry分頁幾何體引擎它是OGRE的第三方插件,用來優化渲染覆寫無限區域的巨大數量的微小實體。該引擎非常适合用來渲染戶外場景。如擁有成千上萬顆樹的茂密森林。分頁幾何體引擎與平面實體引擎相比具有很多優勢,其中最重要的是速度,如果細節層次使用得當,由分頁幾何體管理的戶外場景比平面實體渲染速度要快100倍。另一個優勢是分頁技術的使用,即隻有當實體需要立即被顯示在場景中時,才會将該頁的實體載人記憶體,這樣就可以幾乎無限放大虛拟場景。

    (4)Hydrax它也是OGRE的第三方插件,提供一個易用的庫用來渲染漂亮的水紋場景。Hydrax提供的所有渲染效果都是可配置的,包括深水效果、平滑過渡效果、泡沫效果及水下光線效果等,這些效果還可以根據需要實時變化。

4 系統設計與實作

    系統結構如圖1所示。此編輯器是基于插件的針對O-GRE的所見即所得編輯器,通過它能夠快速建構一個場景模型,也可以把這些場景作為内容載入OGRE應用程式。

三維渲染引擎編輯器的研究

4.1 插件技術原理

    插件的本質在于不修改程式主體(平台)而對軟體功能進行擴充與加強。當插件的接口公開後,任何公司或個人都可以制作自己的插件來解決一些操作上的不便或增加新的功能,實作真正意義上的“即插即用”軟體開發。“平台+插件軟體”結構是将一個待開發的目标軟體分為兩部分,一部分為程式的主體或主架構,可定義為平台,另一部分為功能擴充或補充子產品,即定義為插件。

4.2 插件的實作方法

    該編輯器的插件實作方法是在架構代碼中建立接口,這些接口使架構與動态庫解耦。插件提供接口的實作。把插件與動态連結庫區分開是因為它們的加載方式不同:程式不會直接連結插件,而是在某些目錄下查找,如果發現便按照配置檔案中定義的方式進行加載。

    插件實作過程涉及很多類。下面僅介紹5個類CBaseEditor,CBaseEditorFactory,OgreEditorRoot,CTerrainEdi-tor,CETLEditorFactory,并列出部分代碼闡述捕件實作過程,見圖2。

三維渲染引擎編輯器的研究

    CBaseEditor是定義的接口,由其派生的CTerrainEditor是接口的實作,即插件。當點選主界面的ETL按鈕時,O- greEditorRoot能夠監聽到點選該按鈕事件的發生,随後調用dllStartPlugin函數。dllStartPlugin函數負責調用建立 CTer-rainEditor對象的工廠,由工廠(CETLEditorFactory)編輯器對象(CTerrainEditor)執行個體。

  CTerrainEditor對象建立完成後,dllStartPlugin會向OgreEditorRoot注冊該編輯器對象執行個體。 OgreEditorRoot由Singleton繼承而來,為保證程式中隻存在一個執行個體,OgreEditorRoot負責插件的載入和解除安裝,并提供 RegisterObjectName函數,供編輯器插件注冊使用。

三維渲染引擎編輯器的研究

5 結束語

    開發三維遊戲或其他三維應用程式是非常耗費人力的工作,利用此編輯器可快速建構三維場景供三維應用程式所用,提高開發效率,降低開發成本。基于平台加插件的設計方式能夠在不修改編輯器平台的情況下,友善擴充編輯器功能。

繼續閱讀