OverviewThere are two steps to creating and interacting with a Limn animation. First the Limn class is used in the first step to create an animation sequenence and save it either as a quicktime movie or as a series of JPEG images. Then the View class can then be used to view the animation and even interact with the animation.
The Limn program creates an animation creation cycle as descirbed in the design page. Basically, it creates the Tour engine, rendering and recording type objects that are specified in its properties file and starts animation cycle that they from. The properties file is used to specifiy animation creation and appearance attributes.
The View program will display an animation and allow the user to control the playback. Additionally with animations based on the scatterplot view type, users can interact with the display. By brushing on areas plot, data points will be selected and the viewer will draw graphics around each point to highlight it. Because the highlight graphics are drawn on top of the scaterplot image performance will begin to lag if larger subsets of the data are selected. This rendering technique will avoid problems with over plotting of graphics as the highlights are always rendered on top of the data points.
Limn Prototype DesignDesign of this limn prototype has revolved around keeping the overall structure simple and distilling out key functionality into distinct parts of the system. Java Interfaces have been defined for each of these parts and in themselves provide a high level overview of the system. Java Interfaces provide a way of reducing class dependencies within a system. By allowing objects to interact with one another through interface greatly increases the modularity of the system. Providing these interfaces also allows for greater specialization in the development of the system. Researchers and students that are mainly interested in the development of methods for a certain aspect of the animation production process will not need to keep in mind all the complications of other areas of the design.
Unlike Orca where the speed of the animations crucial to the real time viewing, Limn will allow each rendering to complete and for the recorder to process the rendered image in full before continuing on to the next frame. With real time rendering a few dropped frames may be acceptable to maintain performance, while with out the restriction of time, the importance should be more heavily on completeness and quality of image.
The main dependencies between objects to maintain the integrity of this process form a triangle of objects where for each frame rendered control is passed along between them. Here Interfaces are used to discuss each aspect of the system.
In addition to these three main production objects, there are a handful of object types needed to create the projection basis and manage the data. The main data objects are defined by the following interfaces.
Of these six interfaces, LimnBasisFactory and LimnRender cover the areas that seem most interesting to explore. Most likely they will be the interfaces that get the most attention.
There are a few lesser interfaces that will allow objects to augment a rendering, though they are probably not worth discussing at this point. The following classes implement the interfaces mentioned above:
JavaDoc and more on the specifics of implementing essential limn objects will be posted as available.