[Ctk-developers] CTK Scene
Marco Viceconti
viceconti at tecno.ior.it
Fri Aug 21 06:58:36 UTC 2009
One of the goal of MAF3 is to fully separate VMEs (our data objects)
from Views and from Operations, so as to maximise reusability, and to
make possible that each of these MAF resources can be added at run
time as a plugin.
This of course raise the debate on how to provide a neutral
representation of the visualisation components. Firstly, Stephen
implies that the right point where to cut is the scene, as most of the
visualisation libraries do. But I would like to bring some
alternative ideas on the table:
a) Actors. One could image to export single actors instead of whole
scene. this would reduce the granularity, and would make conceptually
easier to develop distributed applications where single actors are
being generated/updated by separate processes, and the visualisation
application has the responsibility to compose the scene with them and
to render it. Actually this idea is not necessarily in conflict with
the one Stephen and Gianluca advocate; we could image an extensibility
mechanism to the scene format, so that I can also export a single
actor using the same XML syntax.
b) RenderWindows: to the other extreme, in MAF we are considering to
expose out of the visualisation module not the scene, but the
RenderWindow. The rationale behind this is that the true
conceptualisation nowadays is in choosing for each type of actor a
certain rendering style, so that multi-actors Views produce a coherent
representation. So for example, in our MIP View volumes are rendered
with a MIP visual pipe, but surfaces are rendered with a flat surface
rendering, so that it appears consistent with a radiography-like image
where geometric objects are usually man-made and thus of homogenous
opacity. In this perspective the View becomes like a virtual imaging
machine, which produces a visual representation for each digital
object according to the type and properties of this object in a
coherent way.
The problem with approach b) is that I have difficulties to see how
this could be made compatible with scene approach. One possibility
could be to extend the XML syntax to include an optional section where
one can also specify the rendering elements; does this make any sense?
I do not have a strong opinion on this, but I thought it might be
useful we try to thing a bit out of the box here.
Cheers
Marco
Il giorno 21/ago/09, alle ore 00:39, Stephen Aylward ha scritto:
> Continuing the discussion of CTK data types...
>
> I propose that we have a ctkScene as a driving datatype.
>
> First, perhaps, we need to agree on the definition of a scene. I
> propose that a ctkScene should have two main traits:
>
> 1) Generically, a scene is composed of objects that fill a portion of
> space and time
> * Objects have a position in space
> * Objects have an orientation in space
> * Objects have a range in time
> * Given a point in physical space and time, it should be possible to
> determine if an object contains it or not.
> * An object should contain at least one point in space and time
> * The concept of units is paramount in a scene.
> ** Units describe the spatial and chronological scale of an object
>
> 2) A scene represents a hierarchy of object in space and time.
> * Objects have a single parent (except a root object) and may have one
> or more children objects
> ** That is, a scene is a tree
> * Moving a parent object in space or time should (by default) cause
> its children to experience the same movement in space and time
> * The coordinate system for root objects is defined as "real-world"
> space. It is an absolute space.
> * A scene may have multiple roots
> ** It is not necessary to represent everything in space from a
> single root.
> ** One or more roots are used to contain the physical/temporal objects
> relevant to a particular task.
> * Objects implicitly include their child objects
> ** When querying the time/space extent of an object (e.g., to
> determine if a point is inside of it or to determine its bounding box)
> that query typically also includes its child objects in its
> computations.
> * Most queries to and responses from objects should be with respect to
> real-world space (i.e., the coordinate system of the root object).
> ** For example, querying an object if it contains a physical point is
> done using real-world coordinates (i.e., a coordinate system common to
> all objects in its tree).
>
> I'm adding this to the wiki at:
> http://my-trac.assembla.com/protoctk/wiki/ctkScene
>
> Stephen
>
> --
> Stephen R. Aylward, Ph.D.
> Director of Medical Imaging
> Kitware, Inc. - North Carolina Office
> http://www.kitware.com
> stephen.aylward (Skype)
> (919) 969-6990 x300
> _______________________________________________
> Ctk-developers mailing list
> Ctk-developers at commontk.org
> http://public.kitware.com/cgi-bin/mailman/listinfo/ctk-developers
>
--------------------------------------------------
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