[vtkusers] Integrating VTK into a scene-graph based renderer?
peter.ellsiepen at gmx.de
Thu Sep 13 06:15:37 EDT 2001
currently, I'm thinking of an efficient way to integrate the VTK
visualization pipeline into a scene-graph based renderer. I found
vtkActorToPF which pretty much does the job in case of IRIS Performer.
However, each change in the visualization leads to a complete remove/add of
the geometry object in the scene-graph (here: the geode node). This can be
very time-consuming, especially when large datasets are handled leading to
large geometric objects as output of the visualization pipeline (for example
cutplanes, isosurfaces, meshes from finite element analyses).
As an example, you can think of a cutplane through a structured
dataset where only the position is changed by interaction. In the case of
vtkActorToPF, the complete geometry would be re-created for each new cutplane
even though only a change of the vertex colors and vertex transformation is
necessary, i.e. the topology stays constant. In most scene-graph based
rendering APIs the "expensive" operations are topology changes while color
and transformation changes are "cheap".
By reading the VTK Book and the VTK User's Guide I thought of the following
alternative: Instead of creating the geometry inside VTK and then copying it
to the scene-graph geometry node, it would be better to directly create and
update the geometry inside the scene-graph. Then, on update, I could try to
find out which aspects of the geometry really changed and thus update only
the relevant parts. This leads to the following questions:
1.) Which is the right entry point in the VTK class hierarchy, i.e. which
class would I extend by a derived class to connect to my scene-graph renderer?
More special: I need to know which object actually creates the geometric
primitives such that I can directly create the primitives inside the geometry
node of the scene-graph.
2.) How can I find out, which changes to the visualization object have
occured due to the last update? (In the above example the task would be to
find out if the topology is unchanged.)
3.) How does this extension fit into the VTK concept of the visualization
pipeline, i.e. how and when do I "fire" the pipeline? (The obvious time would
be just before the draw method of the renderer is called.)
Thanks in advance for any help on this topic,
More information about the vtkusers