三維渲染引擎之——OSG


     OpenSceneGraph(簡稱OSG)使用OpenGL技術開發,是一套基於C++平台的應用程序接口(API),它讓程序員能夠更加快速、便捷地創建高性能、跨平台的交互式圖形程序。它作為中間件(middleware)為應用軟件提供了各種高級渲染特性,IO,以及空間結構組織函數;而更低層次的OpenGL 硬件抽象層(HAL)實現了底層硬件顯示的驅動。——來自百科

    OSG封裝了OpenGL的渲染方式,大大簡化了圖形繪制、渲染方式,優化了渲染性能,其特點總結如下:

性能 

    支持視圖投影剔除(view frustum culling)、隱藏面剔除(occlusion culling)、小特性剔除(small feature culling)、細節層次節點(LOD)、OpenGL 狀態排序(state sorting)、頂點數組、頂點緩沖對象(vertex buffer objects)、OpenGL 着色語言和把顯示列表(display lists)作為場景圖內核的一部分。它們共同使 OpenSceneGraph 成為一個高性能的圖形庫。OpenSceneGraph也支持繪制流程(drawing process)的定制,比如場景圖的連續細節層次(CLOD)的網格(參見虛擬地形項目和 Delta3D)。 

 

快速開發 

場景圖的內核封裝了包括最新擴展的大部分 OpenGL 功能,提供諸如剔除和排序的渲染優化功能,同樣提供能快速開發高性能圖形應用程序的一整套補充庫。應用程序開發者可以更關心實質性內容和如何操控這些它們,而不再是底層的代碼通過學習已有的場景圖,比如:Performer 和 Open Inventor,把它們同像設計模式這樣現代軟件工程理念聯合起來,加上早期開發周期中的大量反饋信息,設計一個清晰的可擴展的庫已經成為可能。用戶可以很簡單的適應 OpenSceneGraph 並且把它集成到自己的應用程序中 

 

數據裝載 

為了讀入和寫出數據庫,數據庫支持庫(osgDB)支持動態的插件機制,從而支持大量數據格式,目前的發布版本有 55 種單獨的插件支持 3D 數據和圖像格式的裝載。 

支持的 3D 數據格式包括 COLLADA、LightWave (.lwo)、Alias Wavefront (.obj)、OpenFlight (.flt),多線程頁面調度支持的 TerraPage  (.txp)、Carbon  Graphics  GEO  (.geo)、3D  Studio  MAX (.3ds)、Peformer (.pfb)、AutoCAd (.dxf)、Quake Character Models (.md2)、Direct X (.x)和 Inventor Ascii 2.0 (.iv)/ VRML 1.0 (.wrl)、Designer Workshop (.dw)、AC3D (.ac)  和自帶的.osg ASCII  文本格式。 

支持的圖像格式包括.rgb、.gif、.jpg、.png、.tiff、.pic、.bmp、.dds  (包含壓縮的一系列Mip 貼圖影像)、.tga  和 quicktime  (在 OSX 環境下),全范圍的高質量、抗鋸齒字體也能通過freetype 插件支持,基於字體的圖像也可以通過.txf 插件支持。 

用戶也可以通過與一個同盟項目(VirtualPlanetBuilder)生成大規模地形空間數據(multi GB),使  用 OpenSceneGraph 的自帶數據分頁調度支持來查看這些數據。 

 

節點工具箱 

這個場景圖同樣有一套節點工具集,它們是可以在你的應用程序中編譯或者在運行時裝載的獨立庫: 

     osgParticle——粒子系統 

     osgText——高質量抗鋸齒文本 

     osgFX——特效框架結構 

     osgShadow——陰影框架結構 

     osgManipulator——交互控制 

     osgSim——虛擬仿真相關的效果 

     osgTerrain——地形繪制 

     osgAnimation——動畫 

     osgVolume——體繪制(通過 Dicom 插件支持醫學數據) 

 

可移植性 

場景圖的內核已經被設計成盡量少的依賴具體的平台,很少的部分超出了標准 C++程序和 OpenGL。這就使得這個場景圖可以快速移植到大部分系統中——最開始在 IRIX 開發,然后移植到 Linux,接着 到 Windows,再后來就是 FreeBSD,  Mac OSX,Solaris,HP-UX,  AIX  甚至是 PlayStation2! 

完全獨立與窗口操作系統的場景圖內核庫使得用戶在它上面可以增加他們自己的指定窗口庫和應用程序,在發布版本中 osgViewer 庫提供自帶窗口支持,可支持 Windows (Win32),Unix  (X11)  和  OSX  (Carbon)。osgViewer 庫也可以輕松的和你的窗口開發包集成起來,作為OpenSceneGraph-2.0 發布版本的一部分,有例子演示了如何在 Qt, GLUT, FLTK, SDL, WxWidget, Cocoa and MFC 中的使用。 

 

可伸縮性 

場景圖內核的可擴展性使得它不僅僅可運行在便攜式設備,甚至高端的多核、多  GPU的系統和集群上。這可能是因為場景圖內核為 OpenGL  的顯示列表和紋理對象支持多重圖形渲染環境(multiple  graphics  contexts),剔除和繪制的遍歷過程被設計成隱藏渲染數據為局部變量,這樣可以以幾乎只讀的方式使用場景圖內核。這樣就允許多對剔除—繪制過程運行在多個 CPU 上,CPU 則是綁定在多個圖形子系統之上。對多圖形設備渲染環境和多線程的支持可以在 osgViewer 中方便使用,發布版本中所有的例子都可以以多線程和多 GPU 的方式運行。 

 

多語言支持 

OpenSceneGraph 以社區項目的形式支持多種語言,比如 Java,Lua 和 Python。 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM