三維渲染引擎編輯器的研究
(3)PagedGeometry分頁(yè)幾何體引擎它是OGRE的第三方插件,用來(lái)優(yōu)化渲染覆蓋無(wú)限區域的巨大數量的微小實(shí)體。該引擎非常適合用來(lái)渲染戶(hù)外場(chǎng)景。如擁有成千上萬(wàn)顆樹(shù)的茂密森林。分頁(yè)幾何體引擎與平面實(shí)體引擎相比具有很多優(yōu)勢,其中最重要的是速度,如果細節層次使用得當,由分頁(yè)幾何體管理的戶(hù)外場(chǎng)景比平面實(shí)體渲染速度要快100倍。另一個(gè)優(yōu)勢是分頁(yè)技術(shù)的使用,即只有當實(shí)體需要立即被顯示在場(chǎng)景中時(shí),才會(huì )將該頁(yè)的實(shí)體載人內存,這樣就可以幾乎無(wú)限放大虛擬場(chǎng)景。
(4)Hydrax它也是OGRE的第三方插件,提供一個(gè)易用的庫用來(lái)渲染漂亮的水紋場(chǎng)景。Hydrax提供的所有渲染效果都是可配置的,包括深水效果、平滑過(guò)渡效果、泡沫效果及水下光線(xiàn)效果等,這些效果還可以根據需要實(shí)時(shí)變化。本文引用地址:http://dyxdggzs.com/article/202631.htm
4 系統設計與實(shí)現
系統結構如圖1所示。此編輯器是基于插件的針對O-GRE的所見(jiàn)即所得編輯器,通過(guò)它能夠快速構建一個(gè)場(chǎng)景模型,也可以把這些場(chǎng)景作為內容載入OGRE應用程序。
4.1 插件技術(shù)原理
插件的本質(zhì)在于不修改程序主體(平臺)而對軟件功能進(jìn)行擴展與加強。當插件的接口公開(kāi)后,任何公司或個(gè)人都可以制作自己的插件來(lái)解決一些操作上的不便或增加新的功能,實(shí)現真正意義上的“即插即用”軟件開(kāi)發(fā)?!捌脚_+插件軟件”結構是將一個(gè)待開(kāi)發(fā)的目標軟件分為兩部分,一部分為程序的主體或主框架,可定義為平臺,另一部分為功能擴展或補充模塊,即定義為插件。
4.2 插件的實(shí)現方法
該編輯器的插件實(shí)現方法是在框架代碼中創(chuàng )建接口,這些接口使框架與動(dòng)態(tài)庫解耦。插件提供接口的實(shí)現。把插件與動(dòng)態(tài)鏈接庫區分開(kāi)是因為它們的加載方式不同:程序不會(huì )直接鏈接插件,而是在某些目錄下查找,如果發(fā)現便按照配置文件中定義的方式進(jìn)行加載。
插件實(shí)現過(guò)程涉及很多類(lèi)。下面僅介紹5個(gè)類(lèi)CBaseEditor,CBaseEditorFactory,OgreEditorRoot,CTerrainEdi-tor,CETLEditorFactory,并列出部分代碼闡述捕件實(shí)現過(guò)程,見(jiàn)圖2。
CBaseEditor是定義的接口,由其派生的CTerrainEditor是接口的實(shí)現,即插件。當點(diǎn)擊主界面的ETL按鈕時(shí),O- greEditorRoot能夠監聽(tīng)到點(diǎn)擊該按鈕事件的發(fā)生,隨后調用dllStartPlugin函數。dllStartPlugin函數負責調用創(chuàng )建 CTer-rainEditor對象的工廠(chǎng),由工廠(chǎng)(CETLEditorFactory)編輯器對象(CTerrainEditor)實(shí)例。
評論