2010-10-04 2 views
5

Hat jemand Erfahrung zu vergleichen VTK und OpenSceneGraph? Ich bin mit VTK vertrauter, aber ich bin neugierig, ob jemand beides ausgiebig versucht hat.VTK (Visualisierung Toolkit) im Vergleich zu OSG (OpenSceneGraph), andere?

Ich habe beide gebaut, 5.6 vtk und 2.9.9 osg, kann die Beispiele laufen ... auf den ersten Blick scheint OSG "rau", aber vielleicht ist das in Ordnung. Insbesondere mache ich mir Sorgen darüber, dass ich in VTK mit Low-Level-openGL experimentieren kann; z.B. Ich wette, glReadPixels würde sich besser mit OSG verhalten. Bemerkungen?

(oder gibt es eine schöne ‚andere‘, die ich fehle? Ich weiß, dass andere existieren, aber bitte einen Blick auf den massiven Umfang der OSG und VTK nehmen ...)

Antwort

10

VTK und OSG wirklich lösen verschiedene Probleme, die Sie verwenden sollten, hängt davon ab, was Sie erreichen möchten! VTK ist in erster Linie für die wissenschaftliche Visualisierung gedacht und daher eher auf Datenvisualisierungsalgorithmen ausgerichtet. Es könnte eine gewisse Fähigkeit haben, in einem Szenegraph-Modus zu arbeiten, aber das ist hauptsächlich so, dass verschiedene Datasets übereinander (übereinander) registriert werden können. Es ist nicht wirklich für die Darstellung beliebiger Szenen gedacht (obwohl es in diese hineingeschnitten werden könnte). Und Sie haben Recht, es ist nicht beabsichtigt, dass Sie OpenGL-Aufrufe mit VTK mischen. Auch das ist möglich, aber nicht unbedingt einfach.

OSG auf der anderen Seite, ist der geistige Nachfolger von SGI Performer, und ist eher für beliebige grafische Szenen gedacht. Es ist sehr abhängig von der Szene-Grafik-Metapher, über die ich Sie ermutigen würde zu lesen (Wikipedia hat einen anständigen Artikel). Ich habe nicht viel Erfahrung damit (mehr auf der Sci-Vis-Seite der Dinge).

Kurz gesagt, wenn Sie Isoflächen von volumetrischen Daten, Flussfeldvisualisierungen oder andere Visualisierungen aus wissenschaftlichen Daten anzeigen möchten, verwenden Sie VTK. Wenn Sie versuchen, eine virtuelle Welt irgendwie zu implementieren, gehen Sie mit OSG (oder etwas Ähnliches). Wenn Sie versuchen, etwas anderes zu erreichen, lassen Sie es uns wissen, und vielleicht kann Ihnen jemand ein passenderes Tool für Ihre Bedürfnisse empfehlen.

+0

Nun, ich bin wirklich in einer Grauzone, daher muss ich mich sorgfältig entscheiden. Ich brauche eine "virtuelle Welt", aber es kann extrem einfach sein, ich denke, ein paar vtkPolyData-Gebäude und ein großes Rechteck für den Boden mit den eingebrachten Texturen würden es schaffen. Was ich wirklich tun muss, ist lesen die Bilddaten, die gerendert werden, einige Berechnungen an anderer Stelle auf dem Bild-Feed, dann möglicherweise aktualisieren Sie die Geometrie als Ergebnis. Also brauche ich wirklich einen Weg, um effizient zu screenen. z.B. glReadPixels() wäre großartig, wenn VTK es tun könnte, ich weiß einfach nicht, wo ich den Anruf platzieren soll. –

+0

Ich sehe, es gibt ein 'vtkOpenGLStateCache', aber ich werde sowieso alles zu OpenCV verbinden, also würde ich lieber vtk OO-Wrapping als nötig vermeiden. –

+1

Ich verstehe. Zunächst einmal, wenn Sie vtkRenderWindow haben, können Sie vtkRenderWindow :: Get [RGBA] PixelData aufrufen, und es wird ein Pixelblock zurückgegeben - entweder als roher Zeiger oder in einen vtkArray-Typ. Um ehrlich zu sein, klingen sowohl OSG als auch VTK wie ein bisschen Overkill - haben Sie überlegt, OpenGL zu verwenden? Oder, abhängig von Ihrer Programmiersprache, gibt es wahrscheinlich einige leichtgewichtige Szenen-Rendering-Bibliotheken, die Sie verwenden könnten. – Gretchen

Verwandte Themen