基本介紹
- 外文名:OpenSceneGraph
- 概念:場景圖
- 適用對象:社區
- 使用方式:從實現和最佳化底層圖形
特性,性能,快速開發,數據裝載,節點工具箱,可移植性,使用範圍,發展歷程,
特性
有了OpenSceneGraph,我們的目標是讓所有的人在場景圖技術中受益,無論是商業還是非商業的用戶。它完全是由標準C++程式和OpenGL寫的,充分利用STL和設計模式,發揮開源開發模型的優勢來提供一個免費的開發庫,並且重點集中在用戶的需求上。隨著使用一個全特性的場景圖OpenSceneGraph的關鍵優勢在於它的性能、可擴展性、可移植性和快速開發(productivity),更具體的來說:
性能
支持視圖投影剔除(view frustum culling),隱藏面剔除(occlusion culling),小特性剔除(small feature culling),細節層次節點(LOD),狀態排序(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), 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的自帶數據分頁調度支持來查看這些數據。
節點工具箱
這個場景圖同樣有一套節點工具集,它們是可以在你的應用程式中編譯或者在運行時裝載的獨立庫,它們增加支持粒子系統(osgParticle),高質量抗鋸齒文本(osgText),特效框架結構(osgFX),陰影框架結構(osgShadow),互動控制(osgManipulator),與虛擬仿真相關的效果(osgSim)。
可移植性
場景圖的核心已經被設計成儘量少的依賴具體的平台,很少的部分超出了標準C++程式和OpenGL。這就使得這個場景圖可以快速移植到大部分系統中—最開始在IRIX開發,然後移植到Linux,接著到Windows,再後來就是FreeBSD, Mac OSX,Solaris,HP-UX, AIX 甚至是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上,CUP也是綁定在多個圖形子系統之上。對多圖形設備渲染環境和多執行緒的支持可以在osgViewer中方便使用,發布版本中所有的例子都可以以多執行緒和多GPU的方式運行。
使用範圍
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虛擬現實框架等其它項目集成。
發展歷程
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…