[Ctk-developers] more on CTK Scene

Marco Viceconti viceconti at tecno.ior.it
Sat Aug 29 10:00:06 UTC 2009


Let me think aloud.

CTK modules will create data objects that we want visualise.  These  
objects are made into scene actors, a scene around them is defined,  
and (usually through a visualisation library) a render view is returned.

If the the visualisation is interactive, in addition to this I need to  
define an interaction style, and I might need to add inside the scene  
additional service actors such as handlers that exist only to sustain  
a certain interaction.  The I need to connect the interactions with my  
interaction hardware, and with the rest of the GUI.

In many of our applications there is an additional level of  
complexity, when an interaction does not change only a parameter of  
the scene of its rendering, but it actually modify an actor.

For CTK I can see two possible options:

a) The quantum of encapsulation in the View. A CTK View is a module  
that can take as input standards CTK Data Objects ( I here postulate  
CTK will have a unique Data Object Model) and return a render window.   
In addition, the View exposes some interaction styles, that must be  
connected to actual interactions, and a number of View Settings, that  
the application must capture and pass to the View (typically via a  
GUI).  Each view run a separate thread, and connects with the rest of  
the application through a limited set of public APIs.  a Facade class  
prevents any access to internal methods, and makes easier the wrapping  
into scripting languages. So for a programmer writing a CTK-based  
application a View is something he can use as it is or not, but cannot  
be modified (except of course changing the code of the view itself).   
Which visualisation library is used inside each view is immaterial.   
The View programmer has the responsibility to transform the CTK Data  
Objects into Actors compatible with VTK, Open Inventor or whatever he  
plans to use for that view. Similarly, it is his responsibility to  
transform the rendering output of the visualisation library into a CTK  
Render Window.  In the picture below the CTK View would be the blue box.

b) The quantum of encapsulation is the scene. CTK provides classes  
that automatically compose data objects into actors and these into  
scenes, and expose such scene in a way that is neutral to the  
visualisation library.  Each application programmer is responsible to  
decide what to do with this scene, but in principle CTK could also  
provide additional modules for interactive rendering.  The scene  
composer module is the red box, and the interactive rendering module  
is the brown box.

I personally believe that we would have an advantage with option b)  
only if the brown box could be entirely replaced by an existing  
visualisation library; unfortunately I suspect this is not the case:
- Most scengraph libraries treat only vector data + textures;  
extensions are needed for example to render volumes
- Most complex interaction styles cannot be encoded in the scenegraph,  
and need to be programmed with direct calls to the visualisation  
library.
- No visualisation library could provide you out-of-the-box mechanism  
to modify CTK data objects from interaction.

This means in most realistic cases the application programmer should  
anyway cross the brown box and code directly with the visualisation  
library calls.

This is why we consider option a) the most interesting for CTK.  If  
you are an application programmer you use pre-packged View modules,  
and you just have to pass your data object, attache your interaction  
devices to the pre-defined interaction styles, and expose in your GUI  
the View settings, and the render window: done.  If you need a special  
View, then of course you need to dirt your hands with a visualisation  
library, but this would happen anyway.  CTK community could provide  
template of View modules to be programmed with VTK, Open Inventor,  
OpenSG, etc. to make life easier.

Added these notes and the figure to the wiki:
http://my-trac.assembla.com/protoctk/wiki/ctkScene

cheers

Marco

-------------- next part --------------
A non-text attachment was scrubbed...
Name: ctk_view_encapsualtion.gif
Type: image/gif
Size: 7792 bytes
Desc: not available
URL: <http://public.kitware.com/pipermail/ctk-developers/attachments/20090829/389f9439/attachment.gif>
-------------- next part --------------







--------------------------------------------------
MARCO VICECONTI, PhD                              
(viceconti at tecno.ior.it)
Laboratorio di Tecnologia Medica              tel.   39-051-6366865
Istituto Ortopedico Rizzoli                            fax.    
39-051-6366863
via di Barbiano 1/10, 40136 - Bologna, Italy

Tiger! Tiger! Burning bright in the forest of the night,
what immortal hand or eye could frame thy fearful symmetry?
--------------------------------------------------
Opinions expressed here do not necessarily reflect those of my employer





More information about the Ctk-developers mailing list