天天看點

OSG的組成結構

核心結構

OSG的功能類采用“命名空間+類名稱”的形式來命名。命名空間的命名方式為:第一個單詞小寫,後繼單詞的首字母大寫,例如osg、osgUtil、osgViewer等;類的名稱則采用每個單詞首字母大寫的組合,例如MatrixTransform、NodeVisitor等。功能類成員函數使用小寫字幕開頭,之後每個單詞的首字母大寫,例如setMatrix()、setAttributeAndModes()等,如果試圖描述某個功能類的成員函數,通常使用如下方式書寫:osg::MatricTransform::setMatrix().

OSG引擎的組成部分包括一系列動态連結庫(.dll/.so)、插件(.dll/.so)、供開發者使用的靜态連結庫(.lib/.a)、頭檔案,以及可以執行的工具程式和示例,按照其作用來劃分,可以大緻分為以下五種類型。

OSG核心庫:提供了基本的場景圖形和渲染功能,以及3D圖形程式所需要的某些特定功能實作。OSG的核心庫包括:

osg庫:其中包括建構場景圖形的場景圖形節點類、用作向量和矩陣運算的類;可繪制體和幾何體類;用于描述和管理渲染狀态的類;以及圖形程式所需要的典型功能類;例如指令行參數解析,簡單動畫路徑以及錯誤和警告輸出等。

osgDB庫:其中包括用于2D和3D檔案讀寫的插件類注冊器,以及用于通路和讀寫這些插件的特定功能類;此外還提供了資料的動态分頁排程機制;可以支援大規模資料的動态度如何讓解除安裝

osgUtil庫:使用工具庫,其中包括場景圖形的資料統計和優化工具、渲染背景工具、場景裁剪工具;以及大量幾何操作相關的類,例如德洛内三角化、三角條帶化、發現坐标自動生成、場景樹優化等工具。

osgGA庫:提供了各種視景視窗互動事件的管理工具,用于建構一個與平台無關的人機裝置抽象層。

osgViewer庫:視景器工具庫,即單個或多個場景觀察和管理的整合工具,以及與平台相關的底層圖形裝置代碼;同時還提供了多線程,多CPU。多顯示器的渲染機制。

節點擴充工具箱(NodeKits):擴充了核心OSG場景圖形節點的功能,以提供進階節點類型和渲染特效。節點擴充庫包括:

osgAnimation:場景動畫處理庫,包括各種關鍵幀的定義、插值方式、動畫管理和融合、動畫路徑、角色動畫、變形動畫、漸進動畫等。

osgFX:場景特效庫 ,包括多種場景特效的實作,例如各向異性光照、卡通着色、凹凸貼圖等。随着OpenGL着色語言的發展的逐漸應用,這個庫已經被逐漸弱化了。

osgManipulator:場景對象操作庫,用于實作場景對象的使用者互動控制,包括移動、旋轉和縮放等。

osgParticle:粒子特效庫,用于實作簡單或複雜的場景粒子效果,例如雨、雪、煙霧、火焰。爆炸、運動尾迹等

osgShadow:陰影特效庫,用于實作多種形式的物體陰影繪制,包括陰影貼圖(ShadowMap)、陰影紋理(ShadowTexture)、陰影體(Shadow Volume),以及多種基于GPU的最新陰影實作技法。

osgSim:仿真工具庫,包括DOF節點變化、紋理覆寫節點、點光源節點,以及多種虛拟仿真相關的集合。

osgTerrain 地形處理庫,用于實作實時的地形讀取或顯示

osgText:文字處理庫,用于實作點陣或者矢量文字的顯示,包括紋理形式和三維文字形式,并支援多種字型的選擇和多國語言編碼

osgVolume:體渲染實作庫,用于實作各種體渲染相關的技術

osgWidget:三維控件庫,用于實作三維場景中的使用者互動控件,樂如編輯框、按鈕等,這在遊戲或者三維場景聊天工具的開發中十分使用。

OSG檔案讀寫插件:其中包括2D圖像,3D圖像和其他類型檔案的讀寫功能插件,可以任意擴充或删減

内省庫:提供OSG與其他開發環境內建的功能,例如腳本語言Python等

工具程式和示例集:提供了實用的工具和超過100個有關OSG使用和功能實作的例子。

内容來之《OpenSceneGraph 三維渲染引擎設計與實踐》