品牌介紹
簡(jiǎn)介
OpenSceneGraph是一個(gè)開(kāi)放源碼,,跨平臺(tái)的圖形開(kāi)發(fā)包,,它為諸如飛行器仿真,,游戲,,虛擬現(xiàn)實(shí),,科學(xué)計(jì)算可視化這樣的高性能圖形應(yīng)用程序開(kāi)發(fā)而設(shè)計(jì),。它基于場(chǎng)景圖的概念,它提供一個(gè)在OpenGL之上的面向?qū)ο蟮目蚣?,從而能把開(kāi)發(fā)者從實(shí)現(xiàn)和優(yōu)化底層圖形的調(diào)用中解脫出來(lái),,并且它為圖形應(yīng)用程序的快速開(kāi)發(fā)提供很多附加的實(shí)用工具。
特性
有了OpenSceneGraph,,我們的目標(biāo)是讓所有的人在場(chǎng)景圖技術(shù)中受益,,無(wú)論是商業(yè)還是非商業(yè)的用戶(hù)。它完全是由標(biāo)準(zhǔn)C++程序和OpenGL寫(xiě)的,,充分利用STL和設(shè)計(jì)模式,,發(fā)揮開(kāi)源開(kāi)發(fā)模型的優(yōu)勢(shì)來(lái)提供一個(gè)免費(fèi)的開(kāi)發(fā)庫(kù),并且重點(diǎn)集中在用戶(hù)的需求上,。隨著使用一個(gè)全特性的場(chǎng)景圖OpenSceneGraph的關(guān)鍵優(yōu)勢(shì)在于它的性能,、可擴(kuò)展性、可移植性和快速開(kāi)發(fā)(productivity),,更具體的來(lái)說(shuō):
性能
支持視圖投影剔除(view frustum culling),,隱藏面剔除(occlusion culling),小特性剔除(small feature culling),,細(xì)節(jié)層次節(jié)點(diǎn)(LOD),,狀態(tài)排序(state sorting),頂點(diǎn)數(shù)組,,頂點(diǎn)緩沖對(duì)象(vertex buffer objects),,OpenGL著色語(yǔ)言和顯示列表(display lists),以上所列都是場(chǎng)景圖內(nèi)核的一部分,。它們共同使OpenSceneGraph成為一個(gè)高性能的圖形庫(kù)變?yōu)榭赡?,OpenSceneGraph也支持繪制進(jìn)程(drawing process)的定制,比如場(chǎng)景圖的連續(xù)細(xì)節(jié)層次(CLOD)的網(wǎng)格(參見(jiàn)虛擬地形項(xiàng)目和Delta3D),。
快速開(kāi)發(fā)
場(chǎng)景圖的內(nèi)核封裝了包括最新擴(kuò)展的大部分OpenGL功能,,提供諸如剔除和排序的渲染優(yōu)化功能,同樣提供能快速開(kāi)發(fā)高性能圖形應(yīng)用程序的一整套補(bǔ)充庫(kù),。應(yīng)用程序開(kāi)發(fā)者可以更關(guān)心實(shí)質(zhì)性?xún)?nèi)容和如何操控這些它們,,而不再是底層的代碼。通過(guò)學(xué)習(xí)已有的場(chǎng)景圖,,比如:Performer和Open Inventor,,把它們同像設(shè)計(jì)模式這樣現(xiàn)代軟件工程理念聯(lián)合起來(lái),加上早期開(kāi)發(fā)周期中的大量反饋信息,設(shè)計(jì)一個(gè)清晰的可擴(kuò)展的庫(kù)已經(jīng)成為可能,。用戶(hù)可以很簡(jiǎn)單的適應(yīng)OpenSceneGraph并且把它集成到自己的應(yīng)用程序中,。
數(shù)據(jù)裝載
為了讀入和寫(xiě)出數(shù)據(jù)庫(kù),有一個(gè)數(shù)據(jù)庫(kù)的支持庫(kù)(osgDB)增加了通過(guò)后綴名動(dòng)態(tài)插件機(jī)制,,從而支持大量數(shù)據(jù)格式,,目前的發(fā)布版本有55種單獨(dú)的插件支持3D數(shù)據(jù)和圖像格式的裝載。支持的3D數(shù)據(jù)格式包括COLLADA,, LightWave (.lwo),,Alias Wavefront (.obj),OpenFlight (.flt),, 多線程頁(yè)面調(diào)度支持的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環(huán)境下),,全范圍的高質(zhì)量,、抗鋸齒字體也能通過(guò)freetype插件支持,基于字體的圖像也可以通過(guò).txf插件支持,。用戶(hù)也可以通過(guò)與我們同行的一個(gè)項(xiàng)目(VirtualPlanetBuilder)生成大規(guī)模地形空間數(shù)據(jù)(multi GB),,使用OpenSceneGraph的自帶數(shù)據(jù)分頁(yè)調(diào)度支持來(lái)查看這些數(shù)據(jù)。
節(jié)點(diǎn)工具箱
這個(gè)場(chǎng)景圖同樣有一套節(jié)點(diǎn)工具集,,它們是可以在你的應(yīng)用程序中編譯或者在運(yùn)行時(shí)裝載的獨(dú)立庫(kù),,它們?cè)黾又С至W酉到y(tǒng)(osgParticle),高質(zhì)量抗鋸齒文本(osgText),,特效框架結(jié)構(gòu)(osgFX),,陰影框架結(jié)構(gòu)(osgShadow),交互控制(osgManipulator),,與虛擬仿真相關(guān)的效果(osgSim),。
可移植性
場(chǎng)景圖的內(nèi)核已經(jīng)被設(shè)計(jì)成盡量少的依賴(lài)具體的平臺(tái),,很少的部分超出了標(biāo)準(zhǔn)C++程序和OpenGL。這就使得這個(gè)場(chǎng)景圖可以快速移植到大部分系統(tǒng)中—最開(kāi)始在IRIX開(kāi)發(fā),,然后移植到Linux,接著到Windows,,再后來(lái)就是FreeBSD,, Mac OSX,Solaris,,HP-UX,, AIX 甚至是PlayStation2!完全獨(dú)立與窗口操作系統(tǒng)的場(chǎng)景圖內(nèi)核庫(kù)使得用戶(hù)在它上面可以增加他們自己的指定窗口庫(kù)和應(yīng)用程序,,在發(fā)布版本中osgViewer庫(kù)提供自帶窗口支持,,可支持Windows (Win32), Unices (X11) 和 OSX (Carbon),。osgViewer庫(kù)也可以輕松的和你的窗口開(kāi)發(fā)包集成起來(lái),,作為OpenSceneGraph-2.0發(fā)布版本的一部分,有例子演示了如何在Qt, GLUT, FLTK, SDL, WxWidget, Cocoa and MFC中的使用,。場(chǎng)景圖內(nèi)核的可擴(kuò)展性使得它不僅僅可運(yùn)行在便攜式設(shè)備,,甚至高端的多核、多GPU的系統(tǒng)和集群上,。這可能是因?yàn)閳?chǎng)景圖內(nèi)核為OpenGL的顯示列表和紋理對(duì)象支持多重圖形渲染環(huán)境(multiple graphics contexts),,剔除和繪制的遍歷過(guò)程被設(shè)計(jì)成隱藏渲染數(shù)據(jù)為局部變量,這樣可以以幾乎只讀的方式使用場(chǎng)景圖內(nèi)核,。這樣就允許多對(duì)剔除—繪制過(guò)程運(yùn)行在多個(gè)CPU上,,CUP也是綁定在多個(gè)圖形子系統(tǒng)之上。對(duì)多圖形設(shè)備渲染環(huán)境和多線程的支持可以在osgViewer中方便使用,,發(fā)布版本中所有的例子都可以以多線程和多GPU的方式運(yùn)行,。作為社區(qū)項(xiàng)目,OpenSceneGraph支持多種語(yǔ)言,,比如Java,,Lua和Python。
社區(qū)
OpenSceneGraph為一個(gè)多元化的社區(qū)提供了幫助,,這主要集中在公開(kāi)的osg用戶(hù)郵件列表中,,在那里有超過(guò)1700個(gè)使用者在討論如何使用這個(gè)軟件,最新的開(kāi)發(fā)進(jìn)度甚至討論更多內(nèi)容,。這個(gè)社區(qū)同樣也給已有模塊的測(cè)試和新模塊提供了大量幫助,,這包括:OpenSceneGraph本身和第三方庫(kù),很多第三方庫(kù)也是開(kāi)源的,。這個(gè)項(xiàng)目網(wǎng)站建立在trac wiki之上,,允許所有的社區(qū)成員添加他們自己的內(nèi)容,,給osg的入門(mén)和指南做出貢獻(xiàn)等等。這個(gè)站點(diǎn)的社區(qū)板塊提供社區(qū)項(xiàng)目的更多信息和連接,,指導(dǎo)你如何參與社區(qū)并成為他們的一員,。社區(qū)開(kāi)發(fā)了很多附加的節(jié)點(diǎn)工具,比如說(shuō):osgNV(支持Nvidia的頂點(diǎn),、片段,、連接器、擴(kuò)展,、Nvidia的Cg著色語(yǔ)言等),,Demeter(CLOD terrain與OSG的集成)。osgCal(集成了Cal3D和OSG),。ReplicantBody是角色動(dòng)畫(huà)的另外一個(gè)選擇,,它也含有高層函數(shù),比如腳本,、混合動(dòng)畫(huà)動(dòng)作等(它也依賴(lài)Cal3D),,osgHaptics集成了Sensable公司的觸覺(jué)渲染開(kāi)發(fā)包OpenHaptics。osgAL可以用來(lái)集成3D聲音(OpenAL)和OSG,。再加上一套集成了主要窗口系統(tǒng)的API庫(kù),,這些可以在框架工作包中找到。這個(gè)項(xiàng)目也與VR Juggler和Vess虛擬現(xiàn)實(shí)框架等其它項(xiàng)目集成,。
開(kāi)始
對(duì)于那些初涉OpenSceneGraph的用戶(hù),,我們建議你按照下面開(kāi)始的步驟循序漸進(jìn),然后瀏覽那些可用的技術(shù)支持資源,。如果你遇到了特殊的狀況就去查看FAQ,,看看有沒(méi)有已經(jīng)存在的解決方案,產(chǎn)看郵件列表體系,,或者訂閱osg用戶(hù)的郵件列表說(shuō)明你準(zhǔn)備如何處理,。
支持和服務(wù)
對(duì)于需要保密的專(zhuān)業(yè)支持,培訓(xùn)或者咨詢(xún)服務(wù)的組織,,我們也可以提供幫助,,由OpenSceneGraph專(zhuān)業(yè)技術(shù)服務(wù)的合作伙伴提供(總部設(shè)在蘇格蘭)。