2010-10-04 182 views
5

有沒有人有公平比較VTK和OpenSceneGraph的經驗?我更熟悉VTK,但我很好奇,是否有人曾經廣泛嘗試過。VTK(可視化工具包)與OSG(OpenSceneGraph),其他?

我已經構建了5.6 vtk和2.9.9 osg,可以運行這些示例......乍一看,OSG似乎更加「粗糙」,但也許沒關係。特別是我擔心能夠在VTK中調用低級別的OpenGL;例如我敢打賭glReadPixels在OSG上的表現會更好。註釋?

(或者是有一個很好的「其他」我失蹤?我知道別人是存在的,但請看看OSG和VTK的大規模範圍...)

回答

10

VTK和OSG真正解決不同的問題,所以你應該使用取決於你想要完成的! VTK主要用於科學可視化,因此更適合數據可視化算法。它可能具有以場景圖模式工作的一些能力,但主要是這樣才能使不同的數據集可以相互重疊地註冊(重疊)。它並不是真正用於表現任意場景(儘管它可能會被強迫進入)。你說得對,它並不打算將OpenGL調用與VTK混合使用。再次,它可以完成,但它不一定容易。另一方面,OSG是SGI執行者的精神繼承者,更多用於任意圖形場景。這是非常依賴於場景圖隱喻,我鼓勵你閱讀(維基百科有一個體面的文章)。我沒有太多經驗(更多的是在科學的科學方面)。

簡而言之,如果您想查看體積數據,流場可視化或從科學數據派生的其他可視化的等值面,請使用VTK。如果你正試圖實現某種虛擬世界,那就去OSG(或類似的東西)。如果您正在努力完成其他任務,請告訴我們,也許有人可以爲您的需求推薦更適合的工具。

+0

嗯,我真的在一個灰色地帶,因此我需要仔細決定。我確實需要一個'vritual世界',但它可以非常簡單,我認爲幾個vtkPolyData建築物和一個粘貼有紋理的大矩形就可以做到。 我真正需要做的是讀取渲染的圖像數據,在圖像提要的其他地方進行一些計算,然後可能會更新幾何圖形。所以我真的需要一種有效的'屏幕抓取'方式;例如glReadPixels()會很好,如果VTK可以做到這一點,我只是不知道該把這個電話放在哪裏。 – 2010-10-07 21:26:12

+0

我看到有一個'vtkOpenGLStateCache',但我只是將一切都交給OpenCV,所以我寧願避免使用更多的vtk OO包裝。 – 2010-10-07 21:32:20

+1

我明白了。首先,如果你有vtkRenderWindow,你可以調用vtkRenderWindow :: Get [RGBA] PixelData,它會返回一個像素塊 - 無論是作爲一個原始指針還是成爲一個vtkArray類型。坦率地說,OSG和VTK都聽起來有點矯枉過正 - 你有沒有考慮過使用普通的OpenGL?或者,根據您的編程語言,可能會使用一些輕量級場景渲染庫。 – Gretchen 2010-10-08 16:56:30