複製鏈接
請複製以下鏈接發送給好友

OpenSceneGraph

鎖定
OpenSceneGraph是一個開源的三維引擎,被廣泛的應用在可視化仿真、遊戲、虛擬現實、科學計算三維重建、地理信息、太空探索、石油礦產等領域。OSG採用標準C++和OpenGL編寫而成,可運行在所有的Windows平台、OSX、GNU/LinuxIRIXSolaris、HP-Ux、AIXAndroidFreeBSD 操作系統。OSG在各個行業均有着豐富的擴展,能夠與使用OpenGL書寫的引擎無縫的結合,使用國際上最先進的圖形渲染技術,讓每個用户都能站在巨人的肩上。 [1] 
外文名
OpenSceneGraph
概    念
場景圖
適用對象
社區
使用方式
從實現和優化底層圖形

OpenSceneGraph特性

有了OpenSceneGraph,我們的目標是讓所有的人在場景圖技術中受益,無論是商業還是非商業的用户。它完全是由標準C++程序和OpenGL寫的,充分利用STL設計模式,發揮開源開發模型的優勢來提供一個免費的開發庫,並且重點集中在用户的需求上。隨着使用一個全特性的場景圖OpenSceneGraph的關鍵優勢在於它的性能、可擴展性可移植性和快速開發(productivity),更具體的來説:

OpenSceneGraph性能

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

OpenSceneGraph快速開發

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

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), and 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 and quicktime (在OSX環境下),全範圍的高質量、抗鋸齒字體也能通過freetype插件支持,基於字體的圖像也可以通過.txf插件支持。
用户也可以通過與我們同行的一個項目(VirtualPlanetBuilder)生成大規模地形空間數據(multi GB),使用OpenSceneGraph的自帶數據分頁調度支持來查看這些數據。

OpenSceneGraph節點工具箱

這個場景圖同樣有一套節點工具集,它們是可以在你的應用程序中編譯或者在運行時裝載的獨立庫,它們增加支持粒子系統(osgParticle),高質量抗鋸齒文本(osgText),特效框架結構(osgFX),陰影框架結構(osgShadow),交互控制(osgManipulator),與虛擬仿真相關的效果(osgSim)。

OpenSceneGraph可移植性

場景圖的內核已經被設計成儘量少的依賴具體的平台,很少的部分超出了標準C++程序和OpenGL。這就使得這個場景圖可以快速移植到大部分系統中—最開始在IRIX開發,然後移植到Linux,接着到Windows,再後來就是FreeBSD, Mac OSX,SolarisHP-UXAIX 甚至是PlayStation2 完全獨立與窗口操作系統的場景圖內核庫使得用户在它上面可以增加他們自己的指定窗口庫和應用程序,在發佈版本中osgViewer庫提供自帶窗口支持,可支持Windows(Win32),Unices (X11) 和 OSX(Carbon)。osgViewer庫也可以輕鬆的和你的窗口開發包集成起來,作為OpenSceneGraph-2.0發佈版本的一部分,有例子演示瞭如何在Qt,GLUT, FLTK, SDL, WxWidget, Cocoa and MFC中的使用。場景圖內核的可擴展性使得它不僅僅可運行在便攜式設備,甚至高端的多核、多GPU的系統和集羣上。這可能是因為場景圖內核為OpenGL的顯示列表和紋理對象支持多重圖形渲染環境(multiplegraphics contexts),剔除和繪製的遍歷過程被設計成隱藏渲染數據為局部變量,這樣可以以幾乎只讀的方式使用場景圖內核。這樣就允許多對剔除—繪製過程運行在多個CPU上,CPU也是綁定在多個圖形子系統之上。對多圖形設備渲染環境和多線程的支持可以在osgViewer中方便使用,發佈版本中所有的例子都可以以多線程和多GPU的方式運行。

OpenSceneGraph使用範圍

OpenSceneGraph為一個多元化的社區提供了幫助,這主要集中在公開的osg用户郵件列表中,在那裏有超過1700個使用者在討論如何使用這個軟件,最新的開發進度甚至討論更多內容。這個社區同樣也給已有模塊的測試和新模塊提供了大量幫助,這包括:OpenSceneGraph本身和第三方庫,很多第三方庫也是開源的。這個項目網站建立在trac wiki之上,允許所有的社區成員添加他們自己的內容,給osg的入門和指南做出貢獻等等。這個站點的社區板塊提供社區項目的更多信息和連接,指導你如何參與社區併成為他們的一員。社區開發了很多附加的節點工具,比如説:osgNV(支持Nvidia的頂點、片段、連接器、擴展、Nvidia的Cg着色語言等),Demeter(CLOD terrain與OSG的集成)。osgCal(集成了Cal3D和OSG)。ReplicantBody是角色動畫的另外一個選擇,它也含有高層函數,比如腳本、混合動畫動作等(它也依AL)和OSG。再加上一套集成了主要窗口系統的API庫,這些可以在框架工具包中找到。這個項目也與VR Juggler和Vess虛擬現實框架等其它項目集成。

OpenSceneGraph發展歷程

1998 OpenSceneGraph誕生
該項目是由 Don在 1998的一個業餘愛好發展而來的, 做為一種滑翔機的場景模擬器運行在Linux下。
1999 初出熔爐
在1999年Robert開始着手完善該項目並把它移植到Windows 下。在1999年9月,OSG的源碼宣佈開源並且OpenSceneGraph應運而生,當時Robert接管了場景圖的項目,而Don則着眼於滑翔機的模擬。
幾易寒暑,Robert以一直致力於加強對C++標準以及設計模式的理解以求場景圖可以適應新的標準和methodoligy。
2000 以專業精神對待業餘愛好
2001 OSG專業化進程
在2001年4月,為把此項目在互聯網上推廣到全世界,Rebert開始全職開發此項目,建立了OpenSceneGraph為其提供商業支持, 諮詢以及培訓。
2002 社區建立
2003 The year ofscalabilty
2004 ...part of theestablishment…
參考資料