The
curve editor
permits the user to create and edit an animation curve in
the MGED display window.
In AnimMate, a curve is an ordered list of nodes.
Each node consists of
a time value and an associated point in three-dimensional space.
A curve is displayed as a series of line segments between the points, and
is intended to represent paths that animated objects will follow
through time and space.
For a given AnimMate curve named, for example, cname, the time
values associated with each node are stored in a tcl variable,
"mged_sketch_time_cname". MGED's vdraw command stores the
corresponding points in a vlist of the same name, and displays the
curve as a pseudo-solid named "_VDRWcname".
(See the
vdraw help page
for more
information.) When using AnimMate, these details should be
invisible to the user, who can consider a curve to be a single entity.
However, it is important to note that curves are not part of the model
geometry.
Exiting an MGED session destroys a curve unless its parameters have been
saved in a file.
The purpose and function of the components of the curve editor are
explained below.
The curve editor only operates on one curve at a time. This curve is
referred to as the current curve and is marked in the display
with a cyan
cursor. The top frame of the curve editor shows the name of the current
curve.
If no curves exist when the editor is created, an
empty curve named vdraw is automatically created.
Clicking on
the
Current curve: label posts a menu with the following entries:
- New Curve
- Creates a new curve and makes it the current curve. The user is
asked to supply the name of the new curve.
- Open Curve
- Makes an existing curve current. The user selects from a list of
existing curves.
- Rename Curve
- Changes the name of the current curve as specified by the user.
- Copy Curve
- Creates a copy of the current curve and makes the copy current. The
user supplies the name of the new curve.
- Delete Curve
- Deletes a curve selected by the user from a list of existing curves.
Note: Long curve names are truncated by
vdraw
to a maximum of 31 characters.
The next section of the curve editor displays and controls the
current node of the current curve.
Whenever the current curve is non-empty, one of the nodes of the curve is
designated the current node and is marked on the display with
three-dimensional cyan asterisk. This is the node which will be
affected by operations such as MOVE and DELETE and which controls
where
new nodes are added and inserted, as explained in
the next section.
The curve editor contains a label of the form "Node
i of n", where n is the number of nodes
in the current curve, and i is the index of the current node.
The index is always constrained to lie between 0 and n-1.
The left and right arrow buttons can be used
to change the current node index. The small right and left arrows
increment and decrement the current node index by one, while the larger
arrows increment and decrement in steps of 10.
The box next to the Time label displays the time
parameter of the current node. The time parameter can be keyboard-edited
after clicking on the box with the left mouse button. The new time
parameter is applied to the curve when
the Return key is pressed.
The next four buttons in the curve editor perform the principal
editing operations:
- ADD
- This command adds a new node to the current curve, inserting it
after the current node. The new node then becomes current.
The spatial coordinates for the new node are taken from the
current center point of the MGED display window. Before
activating the button, the user should center the display (in all three
dimensions) on the
desired new point. If the new node is being
added to the end of the current curve, the new time parameter will be
the time parameter of the previous end node incremented by the global
variable
mged_sketch_tinc. (The value of this variable is typically 1.0,
but it may be set arbitrarily by the user.)
If the new node is added between two existing nodes, its time
parameter will be the average of the adjacent time parameters.
- INSERT
- This command adds a new node to the current curve, inserting it
before the current node.
The new node then becomes current. The spatial coordinates for
the new node are taken from the current center point of the
MGED display window. If the new node is being inserted onto the
beginning of the current curve, then the time parameter will be the time
parameter of the previous first node decremented by the global variable
mged_sketch_tinc. Otherwise, the new time parameter will
be the average of the time parameters before and after the new node.
- MOVE
- This command changes the spatial coordinates of the current node to
the current center point of the MGED display window.
- DELETE
- This command deletes the current node from the current curve.
The color of the current curve is displayed in the box next to
the Color: label, in the form r g b, where
r, g, and b are integers ranging
between 0 and 255. The color can be keyboard-edited after clicking on the
box with the left mouse button. The Return key is pressed to apply
the changes.
Alternatively, clicking on the Color: label posts a menu for
changing the color of any curve. The three options are as follows:
- Current curve
- Post a menu of pre-defined colors to apply to the current curve. If
the color other is selected, then the user is asked
to specify the new color.
- Current spline
- Post a menu of pre-defined colors to apply to the spline curve
associated with the current curve (see Spline
Interpolation, below). The name of this curve comes
from the entry labeled into curve:. If the color
other is selected, the user is asked to specify the new
color.
- Other
- Post a menu of pre-defined colors to apply to any other curve. The
user is asked to specify the name of the curve to color.
The next section of the curve editor allows the user to fit a cubic spline
curve to the current curve. If a given curve represents key points
in an animation path, then the spline curve can be used to
determine the
animation path for the intermediate frames of the
animation.
Clicking on the Spline
Interpolate button creates a spline curve with open end conditions
which smoothly interpolates the current curve in space and time.
The name of the spline curve is specified in the box next to the
into curve: label. By
default, the curve
editor names the spline by adding the prefix spl_ to the name
of the current curve. However, the spline name can be keyboard-edited by
clicking on the box with the left mouse button.
The nodes of the spline curve are distributed evenly through time. The
number of spline nodes created for each second of time is determined by
the value labeled Frames per second:.
If the spline curve is to be used as the basis of an
animation sequence, the user should set this number to the
desired frame rate of the animation.
Clicking on the Cspline Interpolate button creates a circular
spline curve. The circular spline smoothly interpolates the current
curve, but instead of ending at the point specified by the last node, it
ignores this point and ends at the point specified by the first node. The
derivatives at the beginning and end of the circular spline are matched
so that a periodic repetition of the curve yields a smooth animation.
The Read/Write menu has the following options:
- Read Curve From File
- The nodes of a new or existing curve are specified by reading an
ASCII file. The file should be a four-column table with columns
time x y z. Any extra columns are
ignored, and missing columns are zero-filled. The user is asked which
file to read and which curve to read into. By default, the file is
read into the current curve.
- Write Curve To File
- The nodes of a curve are written to a file, which is a
4-column table of ASCII text, with columns time x y z. Each
row of the table represents one node of the original curve. The user
specifies the name of the curve to write and the file to write to. By
default, the current curve is written.
- Write Spline to File
- This option performs the same function as Write Curve To File,
except that by default the spline curve associated with the current curve is
written.
The Up button raises the parent of the curve editor to the
top of the stacking order, and the Cancel button closes the curve
editor.
Next Section: Table Editor
Index