The Project Data of a project contains properties that do not belong to any individual node but the project itself. Imagine a sports event like for example a soccer match. While there will be multiple Ventuz scenes to show different graphics or to separate different parts of the match (e.g. pre-show, main match, post-discussion), the score, team names and so on are common to all scenes. At the same time, those properties have to be adjusted and editing copies of the values in each scene individually is error prone at best.
Instead, the Project Data allows the user to create a set of data channels on the project itself. Each data channel provides a value that can be bound to multiple Ventuz nodes. They can be bound to any node in any scene regardless of its location, whether it is on the root level or hidden deep within a hierarchy of containers. Using Project Data can therefore greatly simplify the way a scene is build, especially when the hierarchy of containers gets complex.
When a scene is loaded, any bindings between project data channels and node properties are automatically resolved and as long as the property still exists, the project data work as if they would have been a part of the scene itself. If a scene is opened and a project data channel has been removed since the last time the scene has been changed, the binding is simply not resolved. So in general, project data just work as expected and a user does not have to concern himself with the mechanisms involved.
It usually makes sense to plan what project data channels make sense for a project and allocate them at the beginning of a projects design phase. Each channel should convey the meaning of being an important, characteristic property of the project as for example all project data will be part of the project data panel inside Director. Try to avoid allocating data channels simply because it is an easy way to connect distant parts of a scene with each other!
To edit Project Data -click on the edit button highlited in the screenshot. A dialog occures to point the fact that Project Data cannot be edited inside the Project. After confirmation the Project is closed automatically and the Project Data edit mode appears.
The left side of the Project Data Editor shows a tree of data channels very much like the Animation Editor. For example, all nodes that represent a clock might be bound to a master "start" event in the project data. As shown in the screenshot above, data channels can be grouped by folders. By -clicking on any channel, detail information is presented in the Property Editor section on the right.
The toolbar at the top of the dialog contains the Project Data Model button as well as the Project Data Validation button. By pressing the former, an XML version of the data model is generated that is mainly useful when using the Remoting Capabilities of Ventuz to set values via a customized, external control application. By pressing the validate button, a list of errors or warnings is produced. Ventuz performs a number of sanity checks to ensure that no problems (e.g. name clashes) arise when project data values are addressed via Remoting.
The validation button updates its icon automatically whenever the data model changes. Make sure that no errors or warnings exist before saving changes!
To add or remove data channels, -hold on a channel or folder. If no channel exists yet or a channel should be added on the root level, -hold on the root itself, T-junction in the top left corner (highlited in the screenshot). Once the project data is complete, press OK and open the project.
When working on a scene, project data is represented in the Project Data Editor docking window. To open it, either use the menu entry in the View main menu or press Shift + F12. Although the editor looks very much like the edit dialog in the previous section, it serves a different function. Neither can new channels be added/removed nor can the structure be changed. However, node properties can be bound to the project data channels the same as binding properties between two nodes: dragging a property from the Property Editor and dropping it on a data channel.
No arrow is drawn in the Hierarchy or Content Editor to represent a binding. To remove a binding, right-click and hold on the data channel and click the X next to the node name. This context menu is also a great way to find out to which nodes the value is bound
By changing the value in the current column or triggering a method by pressing the orange button, the effect is propagated to all the bound notes through out the scene. The great thing about project data is that it can always be found in a central place, the Project Data Editor, which therefore can act as a master control panel for your scene if used properly.
It's possible to copy&paste (parts of) the Project/Scene Data tree. If you copy it to a text editor, you will get the XML representation of the data model!
The Scene Data Editor looks and works similar to the Project Data Editor. However, as the name implies, each scene has its own set of scene data channels but shares the same set of project data channels. Therefore new channels can be added/removed only while the scene is open. Again, data channels can be directly bound to any node property regardless of where it is in the scene.
The Scene Data has a special role when it comes to controlling a scene from an external application and replaces the now deprecated Externalizing Mechanism used in previous Ventuz versions.
The Scene Data Editor has an additional column labeled Scene. The exact meaning of this column is discussed as part of the Template Engine. As a rule of thumb, if a data channel is supposed to be used as part of the Template Engine (and be visible to the end-user in Director), the flag should be set. If on the other hand the data channel should not be accessible via the Template Engine, the flag should not be set. For example, Ventuz 3 externalized properties are converted to scene data channels without this flag when the scene is opened in Ventuz 4 for the first time.
The Scene Data Editor provides the Template Data of each Template. This is helpful wherever it is needed to manually set the Template Data, for example when working with the Template Port or when it comes to Remoting. The Dataset can be used as a pattern for dynamically generated Template Data.
The third level of data is the Animation Data. The data channels in that data belong to a single Keyframe Animation Node. The primary use of Animation Data is to define template parameters. Each present state of the animation is listed as a column and by setting the flag in a column/row combination, a data channel is associated as required data for that state. For more information, see Templates.