VTK y OSG realmente resolver diferentes problemas, entonces, ¡lo que debe usar depende de lo que está tratando de lograr! VTK está destinado principalmente a la visualización científica, y como tal está más orientado a los algoritmos de visualización de datos. Puede tener cierta capacidad para trabajar en un modo de gráfico de escena, pero principalmente para que se puedan registrar diferentes conjuntos de datos (superpuestos) uno encima del otro. En realidad, no está destinado a representar escenas arbitrarias (aunque podría meterse en él). Y tiene razón, no se pretende que mezcle llamadas OpenGL con VTK. De nuevo, se puede hacer, pero no es necesariamente fácil.
OSG, por otro lado, es el sucesor espiritual del Ejecutante de SGI, y está destinado más a escenas gráficas arbitrarias. Es muy dependiente de la metáfora de la escena-gráfico, sobre la cual te animo a leer (wikipedia tiene un artículo decente). No tengo mucha experiencia con eso (estar más en el lado de sci-vis de las cosas).
En resumen, si desea ver isosuperficies de datos volumétricos, visualizaciones de campo de flujo u otras visualizaciones derivadas de datos científicos, vaya con VTK. Si está tratando de implementar un mundo virtual de algún tipo, vaya con OSG (o algo similar). Si está tratando de lograr algo más, infórmenos, y quizás alguien pueda recomendar una herramienta más adecuada para sus necesidades.
Bueno, realmente estoy en un área gris, por lo tanto, tengo que decidir con cuidado. Necesito un 'mundo vritual', pero puede ser extremadamente simple, creo que algunos edificios vtkPolyData y un gran rectángulo de suelo con texturas pegadas lo harían. Lo que realmente necesito hacer es leer los datos de la imagen que se procesan, hacer algunos cálculos en otro lugar de la alimentación de la imagen, y posiblemente actualizar la geometría como resultado. Entonces realmente necesito una forma de 'capturar la pantalla' de manera eficiente; p.ej. glReadPixels() sería genial si VTK puede hacerlo, simplemente no sé dónde poner esa llamada. –
Veo que hay una 'vtkOpenGLStateCache', pero de todos modos voy a canalizar todo a OpenCV, así que preferiría evitar más vtk OO-wrapping de lo necesario. –
Ya veo. En primer lugar, si tiene vtkRenderWindow, puede llamar a vtkRenderWindow :: Get [RGBA] PixelData y devolverá un bloque de píxeles, ya sea como un puntero sin formato o en un tipo vtkArray. Para ser sincero, tanto OSG como VTK parecen un poco exagerados. ¿Ha considerado utilizar OpenGL? O, según su lenguaje de programación, probablemente haya algunas bibliotecas de renderizado de escenas ligeras que podría usar. – Gretchen