OSG的組成結構詳情,OSG組成結構詳情
OSG的組成結構核心結構
OSG的功能類採用“命名空間+類名稱”的形式來命名。命名空間的命名方式為:第一個單詞小寫,後繼單詞的首字母大寫,例如osg、osgUtil、osgViewer等;類的名稱則採用每個單字首大寫的組合,例如MatrixTransform、NodeVisitor等。功能類成員函數使用小寫字幕開頭,之後每個單詞的首字母大寫,例如setMatrix()、setAttributeAndModes()等,如果試圖描述某個功能類的成員函數,通常使用如下方式書寫:osg::MatricTransform::setMatrix().
OSG引擎的組成部分包括一系列動態連結程式庫(.dll/.so)、外掛程式(.dll/.so)、供開發人員使用的靜態連結庫(.lib/.a)、標頭檔,以及可以執行的工具程式和樣本,按照其作用來劃分,可以大致分為以下五種類型。
- [x] OSG核心庫:提供了基本的情境圖形和渲染功能,以及3D圖形程式所需要的某些特定功能實現。OSG的核心庫包括:
- [x] osg庫:其中包括構建情境圖形的情境圖形節點類、用作向量和矩陣運算的類;可繪製體和幾何體類;用於描述和管理渲染狀態的類;以及圖形程式所需要的典型功能類;例如命令列參數解析,簡單動畫路徑以及錯誤和警告輸出等。
- [x] osgDB庫:其中包括用於2D和3D檔案讀寫的外掛程式類註冊器,以及用於訪問和讀寫這些外掛程式的特定功能類;此外還提供了資料的動態分頁調度機制;可以支援大規模資料的動態度如何讓卸載
- [x] osgUtil庫:使用工具庫,其中包括情境圖形的資料統計和最佳化工具、渲染後台工具、情境裁剪工具;以及大量幾何操作相關的類,例如德洛內三角化、三角條帶化、發現座標自動產生、情境樹最佳化等工具。
- [x] osgGA庫:提供了各種視景視窗互動事件的管理工具,用於構建一個與平台無關的人機裝置抽象層。
- [x] osgViewer庫:視景器工具庫,即單個或多個情境觀察和管理的整合工具,以及與平台相關的底層圖形裝置代碼;同時還提供了多線程,多CPU。多顯示器的渲染機制。
- [x] 節點擴充工具箱(NodeKits):擴充了核心OSG情境圖形節點的功能,以提供進階節點類型和渲染特效。節點擴充庫包括:
- [x] osgAnimation:情境動畫處理庫,包括各種主要畫面格的定義、插值方式、動畫管理和融合、動畫路徑、角色動畫、變形動畫、漸進動畫等。
- [x] osgFX:情境特效庫 ,包括多種情境特效的實現,例如各向異性光照、卡通著色、凹凸貼圖等。隨著OpenGL著色語言的發展的逐步應用,這個庫已經被逐漸弱化了。
- [x] osgManipulator:情境對象操作庫,用於實現情境對象的使用者互動控制,包括移動、旋轉和縮放等。
- [x] osgParticle:粒子特效庫,用於實現簡單或複雜的情境粒子效果,例如雨、雪、煙霧、火焰。爆炸、運動尾跡等
- [x] osgShadow:陰影特效庫,用於實現多種形式的物體陰影繪製,包括陰影貼圖(ShadowMap)、陰影紋理(ShadowTexture)、陰影體(Shadow Volume),以及多種基於GPU的最新陰影實現技法。
- [x] osgSim:模擬工具庫,包括DOF節點變化、紋理覆蓋節點、點光源節點,以及多種虛擬模擬相關的集合。
- [x] osgTerrain 地形處理庫,用於實現即時的地形讀取或顯示
- [x] osgText:文文書處理庫,用於實現點陣或者向量文字的顯示,包括紋理形式和三維文字形式,並支援多種字型的選擇和多國語言編碼
- [x] osgVolume:體渲染實現庫,用於實現各種體渲染相關的技術
- [x] osgWidget:三維控制項陳列庫,用於實現三維情境中的使用者互動控制項,樂如編輯框、按鈕等,這在遊戲或者三維情境聊天工具的開發中十分使用。
- [x] OSG檔案讀寫外掛程式:其中包括2D映像,3D映像和其他類型檔案的讀寫功能外掛程式,可以任意擴充或刪減
- [x] 內省庫:提供OSG與其他開發環境整合的功能,例如指令碼語言Python等
- [x] 工具程式和樣本集:提供了實用的工具和超過100個有關OSG使用和功能實現的例子。