User Tools

Site Tools


keckcaves:viewpoint_curve_editor

Viewpoint Curve Editor Tool

This application-independent tool is used to create viewpoint animations, i.e., scripted fly-throughs of VR applications' navigational spaces. A fly-through is created by saving a sequence of viewpoint keyframes, which are then connected using a smooth cubic spline. Fly-throughs can be played back later by using a Curve File Animation tool.

In immersive environments, a Viewpoint Curve Editor tool can be attached directly to a single input device button; in desktop environments, it is recommended to attach a Viewpoint Curve Editor tool to a Mouse → Screen Projector tool.

When a Viewpoint Curve Editor tool is created, it pops up a rather large dialog box which can be used to create and edit the viewpoint keyframe sequence, and draws an L-shaped icon at the center point of the environment.

Simple Curve Creation

The simplest way to use the tool is to record a sequence of at least two viewpoint keyframes, and then save them to a file. Upon tool creation, the keyframe sequence is empty, i.e., contains zero keyframes. A new keyframe can be added to the end of the sequence by setting a desired view using any navigation tool, and then pressing the “Append Vertex” button in the first row of the Curve Editor Dialog.

The Viewpoint Curve Editor tool will draw each keyframe in the current sequence as an L-shaped icon, where the green line indicates the keyframe's “up” direction, and the red line indicates the keyframe's “forward” direction. The size of the L-shaped icon indicates the keyframe's zoom factor. When a keyframe is activated during playback, the view will be changed such that the keyframe's indicator icon exactly matches the fixed icon displayed by the Viewpoint Curve Editor tool at all times. If the current sequence contains two or more keyframes, the tool will additionally draw a smooth curve connecting all keyframes. This curve indicates the fly-through path the “virtual camera” will follow during playback.

Playing Back the Current Curve

The curve defined by the current viewpoint keyframe sequence can be played back at any time. The “Parameter Value” slider in the Curve Editor Dialog can be used to browse along the entire curve. While browsing, an L-shaped icon will move along the curve, indicating the current viewpoint's position, orientation, and zoom factor. The curve segment containing the current viewpoint will be highlighted in red, and the current segment's length in seconds will be shown in the “Segment Length” slider in the Curve Editor Dialog. The “Scrub” toggle button in the Curve Editor Dialog forces the environment's viewpoint to the current viewpoint. In other words, while the “Scrub” toggle is active, the “Parameter Value” slider can be used to quickly browse through the viewpoint curve exactly as it will be played back later.

The “<” and “>” buttons to the left and right of the “Parameter Value” slider, respectively, will move the current viewpoint to the previous or next viewpoint keyframe, respectively. If the current viewpoint is exactly on a keyframe, the “Segment Length” slider will show a value of 0.0.

Finally, the “Play From Current Position” toggle button can be used to play back the viewpoint curve at the same speed as it will be played back later. While the toggle is active, the “Parameter Value” slider and the “<” and “>” buttons are disabled.

Editing the Curve

A viewpoint keyframe sequence can be edited by appending, inserting, removing, or modifying viewpoint keyframes, or by changing the length of a curve segment. To select a curve segment to edit, use the Parameter Value slider to move between segments, the selected segment will be highlighted red. Similarly, to select a vertex, use the Parameter Value '<' and '>' buttons to move between verticies.

A new keyframe can be appended to the sequence by pressing the “Append Vertex” button. The new keyframe will be appended to the end of the sequence, and the time difference between the previous and new keyframe will be set to the length of the previously last curve segment. When the second keyframe is appended to a new sequence, the length of the first segment will be set to 60 seconds by default. Appending a new keyframe will not only lengthen the viewpoint curve, but also (slightly) change its overall shape. This is due to the curve being a global cubic spline interpolating all keyframes.

A keyframe can be inserted into the sequence by selecting a parameter value for the new keyframe, using the “Parameter Value” slider, and pressing the “Split Segment” button in the Curve Editor Dialog. The current segment will be split at the current parameter value, and the current viewpoint at that parameter value will be inserted as a new keyframe. This new keyframe will not change the shape of the viewpoint curve immediately, but can be modified later.

A keyframe can be removed by setting the curve parameter value to exactly its position, easiest by using the “<” or “>” buttons in the Curve Editor Dialog. Once the correct keyframe is selected (the “Segment Length” slider must show a value of 0.0), it can be removed by pressing the “Delete Vertex” button in the Curve Editor Dialog. Removing a keyframe will immediately change the shape of the viewpoint curve.

A keyframe can be modified by first setting the curve parameter to exactly its position. Once the correct keyframe is selected, it can be modified in two ways: It can either be dragged using the input device / button combination to which the Viewpoint Curve Editor tool is bound, or it can be changed by navigation, which is typically easier. To do that, one first selects a keyframe, and then activates the “Snap to View” toggle button in the Curve Editor Dialog. That will set the environment's viewpoint to the selected keyframe, and lock one to the other. Then, while the “Snap to View” toggle is active, any change to the environment's view point using any navigation tools will directly translate to the selected keyframe, and the viewpoint curve will be updated in real time. Once the selected keyframe is in the desired position/orientation and at the desired zoom factor, it can be released by deactivating the “Snap to View” toggle.

The length of a curve segment determines the velocity of the virtual camera during playback. To minimize velocity changes during playback, the length of individual curve segments and the distance between the two keyframes defining the segment should be approximately proportional. If segment lengths and keyframe distances are vastly out of agreement along the entire curve, the spline interpolator will create “detours” on or around the out-of-whack segment to accomodate. These detours can be removed, and the curve's shape can generally be adjusted, by changing the length of individual curve segments. The length of a segment can be changed by first setting a parameter value in its interior – the currently selected segment will be highlighted in red – and then interactively changing its length using the “Segment Length” slider in the Curve Editor Dialog. Reducing the length of a single curve segment will typically “tighten” the viewpoint curve along that segment, or “elongate” the viewpoint curve in adjacent segments if the overall curve becomes imbalanced. The recommended approach is to first set the overall sequence of viewpoint keyframes, and then edit the lengths of all segments until the curve has the desired shape, and playing back the curve using the “Scrub” toggle button does not show any loops or other undesired interpolation behaviour.

Saving the Current Viewpoint Curve

The current viewpoint keyframe sequence can be saved at any time by pressing the “Save Curve” button in the Curve Editor Dialog. The curve will be saved to a file named “CurveEditorToolXXXX.curve”, where the XXXX are replaced by a four-digit number to create a unique file name.

Loading a Saved Viewpoint Curve

To reload a curve, rename the desired file 'curve.dat' and place it in the folder from which you started the program. It will load automatically; you do not get a choice in the file to load.

keckcaves/viewpoint_curve_editor.txt · Last modified: 2010/09/16 10:43 by sumner