View Curve Editor
The view editor permits the user to create, display, and edit a view
curve. Like an ordinary curve, a view curve is an ordered list of nodes.
While an ordinary curve represents the path through
space, a view curve represents a path through a viewing state space
which includes parameters such as view size, eye position, and eye
orientation.
The current viewing
state of the MGED display window can be stored in a view curve node, and
then the viewing state can be restored when that node is made current.
When the View Editor button is pressed, two widgets pop up. One
is the view editor widget, which is similar in appearance to the
curve editor widget. The second is a widget similar to a table editor which
stores and displays the contents of a given view curve.
The functions of these two widgets are explained below. First, the view
editor widget is described:
Current V-Curve
The top frame of the view curve editor widget shows the name of the
current view curve. If there is no current curve when the editor is
created, then an empty view curve named view is
automatically created. Clicking on the label posts a menu with the
following entries:
- New V-Curve
- An input-request widget pops up asking for the name of a new view curve
to select as the current view curve. If the named view curve does not
already exist, an empty view curve is created.
- Open V-Curve
- This option posts a submenu listing all of the existing view curves.
If one of these view curves is selected, then it becomes the current
view curve.
- Rename V-Curve
- An input-request widget pops up asking for a new name for the current
view curve. The name of the current view curve will be changed to the
new name. If a view curve with the specified name already exits, the user is
notified and asked whether to rename anyway or cancel. If the user opts
to rename anyway, the view curve which previously had the new name is
deleted.
- Copy V-Curve
- An input-request widget pops up asking for a name for a copy of the
current view curve. The copy will be created and will become the current
view curve. If a view curve with the specified name already exists, the
user is notified and asked whether to copy anyway or cancel. If the user
opts to copy anyway, the view curve which previously had the new name is
deleted.
- Delete V-Curve
- This option posts a submenu listing all of the existing view curves. If
one of these view curves is selected, then it is deleted.
The view curve name displayed next to the Current v-curve label
also acts as a button which causes the corresponding view curve display
widget to appear, if it had previously been hidden with the Hide
button, and raises the display widget to the top of the stack.
View Curve Parameters
The next line of the view curve editor widget displays the view
parameters which are stored in the current view curve. The possible
view parameters are:
- size - a single value representing the viewsize.
- eye - three spatial coordinates representing the eye point.
- center - three spatial coordinates representing the center point.
- quat - four quaternion coordinates representing orientation.
- ypr - three values representing the view yaw, pitch, and roll.
Refer to the viewget manual page for more information about
these parameters.
In the MGED display editor, the viewing state is conceptually
made up of a viewing cube centered at center with sides of
length size and an orientation given by quat or
ypr. The eye point is centered in a face of the viewing
cube, so that the center point is always directly in front of the eye
point; the distance between the points is one half the size.
Combinations of these parameters are needed in order to specify the
viewing state completely. The Parameters label indicates which view
parameters are being stored in the current curve. Whenever a node is
added to the current view curve, those parameters are stored along with
a time parameter in a new
row of the view curve display widget.
Clicking on the Parameters label posts a
menu which lists the parameter combinations supported by AnimMate. These
are:
- size eye quat
- size eye ypr
- size center quat
- size center ypr
- eye center
When a new combination of parameters is selected, the nodes of the
current curve are converted to the new format, and any nodes which are
added will be stored in the new format.
Most of the parameter combinations contain a size, a position,
and an orientation, completely specifying the view state. By contrast,
simply fixing the eye point and center point leaves one degree of
freedom in the view state. This ambiguity is resolved by always
selecting a "right-side up" orientation (i.e. an orientation with no twist
or roll). If the user tries to add a view state which is not "right-side
up" to a view curve in in eye center
form, then a
"right-side up" viewing state with the same eye and center points is
stored instead.
Note that converting a view curve to one of the "size position
orientation" formats and back
always leaves the view curve unchanged. Converting a view curve
to eye center
format and back always creates a view curve
consisting only of "right-side up" view states.
Current Node
The next section of the view curve editor displays and controls the
current view curve node. Whenever the current view curve is non-empty,
one of the nodes is highlighted in the display widget as the current
node. This is the node which will be affected by move and delete
operations and which controls where new nodes are added and inserted, as
explained in the next section.
The editor widget 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 entry widget next to the Time label displays the time
parameter of the current node. The time parameter can be keyboard-edited
after clicking on the entry widget with the left mouse. The new
parameter is applied to the view curve when the Return key is
pressed.
The checkbutton labeled Apply current node to view determines
whether or not the contents of the current node should be applied to the
MGED display editor. This checkbutton should be selected in
order to visually step through a view curve. It should be deselected in
order change the current node without losing the current view state. For
example, to copy the first node to the end of a view curve, the first
node is made current with the checkbutton selected, to set the
view state of the editor. Then the check button is deselected and the
last node is made current before invoking the ADD button.
View Curve Editing
The next four buttons in the view curve editor widget perform the
principal editing operations:
- ADD
- This command adds a new node to the current view curve, inserting it
after the current node. The new node then becomes current.
The view parameters for the new node are taken from the
current view state of the MGED display window. Before
activating the button, the user should set the display to the desired view
state.
If the new node is being
added to the end of the current view curve, then the time parameter will be
the time parameter of the previous last node plus the global variable
mged_sketch_tinc (normally 1.0). Otherwise, the new time
parameter will be the average of the time parameters before and after
the new node.
- INSERT
- This command adds a new node to the current view curve, inserting it
before the current node.
The new node then becomes current. The view parameters for
the new node are taken from the current view state of the
MGED display window. If the new node is being inserted onto the
beginning of the current view curve, then the time parameter will be the time
parameter of the previous first node minus 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 view parameters of the current node to
the current viewing state of the MGED display window.
- DELETE
- This command deletes the current node from the current view curve. The
current node index remains the same, unless the deleted node was the
last node in the view curve.
Reading and Writing View Curves
The Read/Write menu has the following options:
- Read V-curve From File
- An input-request widget pops up asking for the name of the file to
load and which view curve to load into. The specified view curve becomes
the current view curve. The file should be an ASCII text file, with
columns corresponding to time and the view parameters of the view curve in
question. If the view curve does not yet exist, then the default
parameters
size eye quat
are assumed.
In order to read in a
view curve from a file which contains a given combination of view
parameters, the user must first convert the view curve to the same
parameter combination, using the Parameters menu.
An error message is
displayed if the number of columns in the file does not match the number
of columns required by the view curve's view parameter combination.
- Write V-curve to File
- An input-request widget pops up asking which view curve to write,
which file to write to, and which columns of the view curve to write.
The columns of the resulting ASCII file are identical to the columns
in the view curve display widget.
Other Buttons
The Up button raises the parent of the view curve editor widget to the
top of the stacking order, and the Cancel button closes the view curve
editor widget.
View Curve Display Widget
Each view curve is stored and displayed in a view curve display widget
that looks much like a table editor widget. A major difference between
the two widgets is that the text editor in the view curve cannot be
keyboard-edited. This helps ensure that the view curve always has the correct
number of columns.
The view curve name is displayed at the top of the display widget.
Immediately below the name are the column bar, which labels the index of
each column, and the text display area. The current contents of the view
curve appear in the text display area, with one row for each node of the
view curve. The row corresponding to the current node is always highlighted.
Some additional functions are contained in a menu bar at the bottom of
the view curve display widget:
- Write
-
The contents of the view curve can be written to a file, curve, or
another view curve. Once a type of destination has been selected, an
input-request widget pops up asking for the name of the file, curve, or
view curve to write to, and which columns to write.
While a file can accept any number of columns, curves
and view curves are picky about the number of columns they accept. A
curve can accept either three or four columns; in the latter case, the
columns are interpreted as time x y z, and in the former
case, columns are interpreted as x y z and the time of each
node is set to the node index. The number of columns accepted by a view
curve may vary from seven to nine, depending on the combination of view
parameters which it stores.
If the number of columns is incorrect, an error message is displayed and
the user is given the opportunity to try again.
The user is also permitted to specify which source columns are to be
written. The string all in this context represents all the columns.
Comma-separated integers can also be used to identify columns: 0 is the
first column and n-1 is the last of n columns.
Dashes can be used to represent ranges. For example, 2-4
is identical in meaning to 2,3,4; 4-2 is the same
as 4,3,2; and 4- represents columns 4 through
n-1.
- Clone
- This button creates a normal table editor containing a copy of
the parameters of the view curve. This table editor can be used for
all of the table editor operations such as
keyboard editing, interpolation, column editing, and time estimation,
and the results can be written back into the view curve. This method of
editing helps to ensure that the view curve always has the correct
number of columns.
- Up
- This button raises the view curve editor widget to the top
of the stacking order.
- Hide
- This button removes the view curve display widget from the screen.
The display widget is redisplayed when the corresponding view curve becomes
current, or, if it is already current, when the user clicks on the view
curve name displayed next to the Current v-curve label on the
view curve editor widget. The view curve display widget should not be
closed or killed by the window manager, or the contents of the view
curve will be lost.
Creating Object Scripts
The purpose of the object animation widget is to convert an animation
table into an animation script controlling the position and orientation
of an modeled object.
The functions of each part of the object
animation widget are explained below.
Output File
When the OK button is pressed, an animation script is created and
stored in the file named in the Output file entry box. If this
file already exists, the user is asked whether to overwrite or cancel. The
output script contains one frame for each row of the input animation
table.
Source
The animation tables driving the output script may come from curves,
view curves, table editors, or files. The type of source is selected
using the option menu next to the Source label. An appropriate
source name should then be entered into the associated entry box. This
should be the name of the curve, view curve, or file, or the integer
identifier of the table editor.
Below the Source label is a description of the number of columns
needed and what each column should contain. This
description changes depending which of the widget's checkbuttons are
selected. For example, when the No Rotation checkbutton is
active, the source description reads:
4 input columns needed: t x y z
The following codes are used to describe what the contents of each
column should be:
t - time column
x y z - three columns: object's path through space
y p r - three columns: yaw, pitch, and roll
qx qy qz qw - four columns: quaternion coordinates
lx ly lz - three columns: path for object to look toward
If the number of columns in the source doesn't match the number of
columns needed when the OK button is invoked, an error message is
displayed. A curve always contains four columns, while the number of
columns in a view curve, table editor, or file may vary.
Object Name
The name of the modeled object being animated should be entered in this
entry box, as it will appear in the output script. For top level
objects, the name should be proceeded by a forward slash:
/car.g. For an object being animated as part of a larger
entity, the following syntax should be used:
car.g/suspension/wheel.0.
Object Center and Orientation
Most objects being animated are rigid bodies taking up space in three
dimensions. When the object's position and orientation are specified in
an animation
table, this raises a question: which part of the object should be placed
at the given position? The user must supply the answer to this question
in the entry box labeled Object Center. Although this point is
referred to hereafter as the object center, it does not need to be the
geometric center of the object. The object center is also the point
about which all rotations occur. For example, when animating a vehicle
such as an airplane, the most convenient object center is probably the
airplane's center of mass. When animating a door, the most convenient
object center would be a point along the hinge axis.
The object center can be keyboard-edited after clicking on the
entry box with the mouse. As an alternative to keyboard entry, the user
may center the MGED viewing display on the desired center point
and then
press the Object center button to automatically enter the correct
values into the entry box.
In a similar vein, most objects being animated have a side which is
considered their front, and similarly sides labeled left, right, top,
bottom, and back.
In this case, AnimMate needs to know how the object's
orientation relates to the model axes.
By default, a yaw, pitch, and roll of
0 0 0
is assumed; that is,
the front of the object faces the model x-axis,
the left side faces the y-axis, and the top faces the z-axis.
If this is not the case, the true yaw,
pitch, and roll may be entered in the Object yaw,pitch,roll entry box.
For example, if the object is a car which faces the y-axis, with the
left side facing the negative x-axis and the top facing the z-axis,
the user would
enter a ypr of 90 0 0
.
The object yaw, pitch, and roll can be keyboard-edited after
clicking on the
entry box with the mouse. As an alternative to keyboard entry, the user
may align the MGED viewing display in the same orientation as
the object and then
press the Object yaw,pitch,roll button to automatically enter the correct
values into the entry box.
First Frame
An animation script is made of a series of numbered frames. Each
frame gives animation commands needed for one image in the final
product. By default, the frames numbers for a given script begin at
zero. If a different initial frame number is desired, it may be entered
in the First Frame entry box. For example, the first frame number
might be set to 300 when creating a script which will be appended onto
the end of another script which is 300 frames long.
Relative Displacement
If this checkbutton is selected, then positions in the source
animation table are interpreted as relative displacements from the
object's initial position, rather than absolute displacements from the
model origin. For example, if an animation table contains the position
(0,0,0)
, then AnimMate normally creates a script which
moves the center of the object (as specified in the Object center
entry box) to the model origin. If relative displacement were enabled, then
AnimMate would create a script which left the object in its initial
position.
When relative displacement is enabled, it is still important to fill in
the Object center entry box, because the center point also
defines the point about which the object rotates.
Relative Orientation
If this checkbutton is selected, then orientation parameters from the
animation table are interpreted as being relative to the orientation
specified in the Object yaw,pitch,roll entry box. For example, if
an animation table contains a yaw,pitch,and roll of
(0,45,0)
, then AnimMate normally creates a script which
orients the object 45 degrees up from the x-axis. If relative
orientation were enabled, however, then AnimMate would create a script which
tilted the object 45 degrees up from whatever direction it initially
faced (as specified in the Object yaw,pitch,roll entry box).
The relative orientation function can be thought of as defining an
alternate set of axes for an object. When relative orientation is enabled,
all rotations and displacements are defined in terms of the object's
own axes. For example, suppose that the Object yaw,pitch,roll
entry box is set to 90 0 0
. This means that the object's
x-axis (front) coincides with the model's y-axis. The object's y-axis
(left) coincides with the model's negative x-axis. Thus if relative
rotation is enabled, then a position (1, 2, 0)
from an
animation table would correspond to (-2, 1, 0)
in
model coordinates.
No Translation
If this checkbutton is enabled, then AnimMate will only expect to read
time and orientation information from the source animation table, and
the animation script will only rotate the object. The No
Translation button can only be enabled if either
Rotation specified as ypr or Rotation specified as
quat are specified in the Orientation controls section.
No Translation is commonly used with Relative Displacement
for rotating an object about its center point.
Orientation Control
The user may select one of the following six options for specifying the
orientation of the object being animated:
- No Rotation
- The object will not change orientation during the animation. The
source animation table only contains time and position columns, while
the yaw, pitch, and roll are assumed to be zero in every frame.
If relative orientation is active, then the object will always be
in the same orientation it was modeled in. If relative orientation is inactive,
then the object will be turned from its initial orientation (as
specified with Object yaw,pitch,roll) to a zero yaw, pitch, and
roll.
- Automatic Steering
- Given an source animation table containing time and position
columns, this option produces an animation script which always orients
the object in the direction it is moving. The object is always oriented
"right-side up", that is, with yaw and pitch but no roll.
Relative orientation should not be used with this option.
- Automatic steering and banking
- This option is similar to the previous option except that the
animation script banks the object into turns, simulating the behavior of
an aircraft. The severity of the bank depends directly on the sharpness
of the turn, and is scaled so that the object reaches the maximum bank
angle at the point in the animation table with the sharpest turn. The
maximum bank angle, which defaults to 60 degrees, can be set to any
value between -89 and 89 degrees by editing
the corresponding entry box. Negative values cause the object to bank
in the opposite direction, like a cart almost overturning as it rounds a
corner. A maximum bank angle of zero causes no banking to occur.
Relative orientation should not be used with this option.
- Rotation specified as ypr
- The last three columns in the animation table give the object's yaw,
pitch, and roll in each frame. If relative orientation is active, the yaw
pitch, and roll are relative to the object's own axes; otherwise, they
are with respect to the model axes.
- Rotation specified as quat
- The last four columns of the animation table give the object's
orientation as a quaternion, in the order x, y, z, w. The convention is
the same as the quaternions returned by MGED's
viewget
quat
command: the identity
quaternion (0,0,0,1) puts an object in the default eye position, facing
the negative z-direction with the x-axis to the right. This is
equivalent to a yaw, pitch, and roll of (90,-90,0). The quaternion
(0.5, -0.5, -0.5, 0.5) leaves an object in the default object position,
corresponding to a yaw, pitch, and roll of (0,0,0). If relative orientation
is active, the orientations are relative to the object's own axes;
otherwise, they are with respect to the model axes.
- Object path and look-at path
- This option requires that the animation table contain a path for the
object to follow and a path for the object to look toward.
The object will be orientated "right-side up" along the axis defined
by the two points given in every frame. If relative orientation is active,
the paths in interpreted in terms of the object's axes; otherwise, they
are with respect to the model axes.
Other Buttons
- OK
- Create the animation script, leaving the object animation widget in
place for further work.
- Show Script
- Display a widget which can be sued to run the animation script in
the MGED display window.
- Up
- Raise the object animation widget's parent to the top of the
stacking order.
- Cancel
- Close the object animation widget.
Creating View Scripts
The purpose of the view animation widget is to convert an animation table
into an animation script controlling the view size, view position and
view orientation. The functions of each part of the view animation
widget are explained below.
Output File
When the OK button is pressed, an animation script is created and
stored in the file named in the Output file entry box. If this
file already exists, the user is asked whether to overwrite or cancel. The
output script contains one frame for each row of the input animation
table.
Source
The animation tables driving the output script may come from curves,
view curves, table editors, or files. The type of source is selected
using the option menu next to the Source label. An appropriate
source name should then be entered into the associated entry box. This
should be the name of the curve, view curve, or file, or the integer
identifier of the table editor.
Below the Source label is a description of the number of columns
needed and what each column should contain. This
description changes depending which of the widget's checkbuttons are
selected. For example, when the No Rotation checkbutton is
active, and the Read viewsize from source button is inactive,
the source description reads:
4 input columns needed: t x y z
The following codes are used to describe what the contents of each
column should be:
t - time column
v - viewsize column
x y z - three columns: path through space
y p r - three columns: yaw, pitch, and roll
qx qy qz qw - four columns: quaternion coordinates
lx ly lz - three columns: path for eye to look toward
If the number of columns in the source doesn't match the number of
columns needed when the OK button is invoked, an error message is
displayed. A curve always contains four columns, while the number of
columns in a view curve, table editor, or file may vary.
View Size
If a constant view size is desired, it may be specified in the entry box
corresponding to the View size label. As an alternative to
keyboard entry, the user may click on the label to enter the current
viewsize into the entry box. This entry is ignored when the Read
viewsize from source checkbutton is active.
Object and Eye Center and Orientation
The four entry boxes labeled Object center, Object
yaw,pitch,roll, Eye point, and Eye yaw,pitch,roll
are used when the source animation table refers to an
object, and the user wishes to rigidly attach the eye to the object in
some way. For example,
the user might want to attach
the eye to a point behind the windshield of a car to to show the
view from the driver's seat as the car drives around.
As explained in the section on Object Center and Orientation,
when animating objects the user must provide a center point and an
initial orientation. The center point is the point on or near the object
which is moved to the positions in the animation table, and about which
rotations occur. The initial orientation defines which direction the
object considers to be forward, left, up, and so on. The same center
point and orientation used in creating the object animation script
should be used in creating a rigidly attached view script.
The object center and object yaw, pitch, and roll can be keyboard-edited
after clicking on the corresponding
entry box with the mouse. As an alternative to keyboard entry, the user
can press the Object center button to enter the current center point
of the MGED display window, or press the Object
yaw,pitch,roll button to enter the current orientation of the
display window.
Next, the user must specify an initial position and orientation for the
eye. For each frame of the output view script,
AnimMate moves the view to where the eye would be if it were rigidly
attached to the object, and the object were moved to
the position and orientation specified in the animation table.
The eye position and eye yaw, pitch, and roll can be keyboard-edited
after clicking on the corresponding
entry box with the mouse. As an alternative to keyboard entry, the user
may press the Eye Point button to enter the current eye point
of the MGED display window, or press the Eye
yaw,pitch,roll button to enter the current orientation of the
display window.
First Frame
An animation script is made of of a series of numbered frames. Each
frame gives animation commands needed for one image in the final
product. By default, the frames numbers for a given script begin at
zero. If a different initial frame number is desired, it may be entered
in the First Frame entry box. For example, the first frame number
might be set to 300 when creating a script which will be appended onto
the end of another script which is 300 frames long.
Read Viewsize from Source
If this checkbutton is active, the viewsize for each frame will be read
from the source animation table rather than from the View size
entry box. In most cases, the viewsize must be provided explicitly in
the second column of the animation table. The exception is when the
Orientation control is set to Eye path and look-at path.
In this case, viewsize is calculated in each frame from the distance
between the eye path and look-at path.
No Translation
If this checkbutton is enabled, then AnimMate will only expect to read
time and orientation information from the source animation table, and
the animation script will only rotate the view. The No
Translation button can only be enabled if either
Rotation specified as ypr or Rotation specified as
quat are specified in the Orientation controls section.
Orientation Control
The user may select one of the following six options for specifying the
view orientation:
- No Rotation
- The view orientation will not change during the animation. The
source animation table contains no orientation information, and
the yaw, pitch, and roll are assumed to be zero in every frame.
- Automatic Steering
- Given an source animation table containing time and position
columns, this option produces an animation script which always orients
the view in the direction the eye is moving. The view is always oriented
"right-side up", that is, with yaw and pitch but no roll.
- Automatic steering and banking
- This option is similar to the previous option except that the
animation script banks the view into turns, simulating the behavior of
an aircraft. The severity of the bank depends directly on the sharpness
of the turn, and is scaled so that the view reaches the maximum bank
angle at the point in the animation table with the sharpest turn. The
maximum bank angle, which defaults to 60 degrees, can be set to any
value between -89 and 89 degrees by editing
the corresponding entry box. Negative values cause the view to bank
in the opposite direction, like a cart almost overturning as it rounds a
corner. A maximum bank angle of zero causes no banking to occur.
- Rotation specified as ypr
- The last three columns in the animation table give the view's yaw,
pitch, and roll in each frame.
- Rotation specified as quat
- The last four columns of the animation table give the view
orientation as a quaternion, in the order x, y, z, w. The convention is
the same as the quaternions returned by MGED's
viewget
quat
command: the identity
quaternion (0,0,0,1) represents the default view, facing
the negative z-direction with the x-axis to the right. This is
equivalent to a yaw, pitch, and roll of (90,-90,0). The quaternion
(0.5, -0.5, -0.5, 0.5) leaves the view in the default object position,
corresponding to a yaw, pitch, and roll of (0,0,0).
- Eye path and look-at path
- This option requires that the animation table contain a path for the
eye to follow and a path for the eye to look toward.
The view will be oriented "right-side up" along the axis defined
by the two points given in every frame. If the Read viewsize from
source relative orientation is active, the viewsize is calculated as
twice the distance from the eye point to the look-at point; otherwise,
the viewsize comes from the entry box labeled View size.
Other Buttons
- OK
- Create the animation script, leaving the view animation widget in
place for further work.
- Show Script
- Display a widget which can be sued to run the animation script in
the MGED display window.
- Up
- Raise the view animation widget's parent to the top of the
stacking order.
- Cancel
- Close the view animation widget.
Creating Articulated Track Animation Scripts
The track animation widget is used to create animation scripts for an
articulated track on a vehicle such as a tank or bulldozer. Among the
inputs required for this widget are a curve representing the path of the
vehicle and a curve indicating the position of each of the wheels. Each
frame of the resulting animation script positions
each of the track pads and/or rotates each of the wheels. The amount of
rotation is derived from the movement of the vehicle.
When the track animation script is combined with the vehicle
animation script, realistic motion is achieved.
This widget is implemented through a call to anim_track. See the
manual page for more information on this program, which includes some
capabilities not used by the AnimMate interface.
Preparation
Before the track animation widget can be used, some preparation is
needed to ensure that the modeled vehicle can be animated correctly.
For AnimMate, an articulated track consists of
identical pads which AnimMate wraps around
two or more wheels in a circular chain.
All of the pads should have a common base
name, with integer indexes starting at zero. For example, a track might
have 80 track pads named pad.0, pad.1, ... pad.79.
The pads should all be instances of a prototype pad which is modeled
with the inner, wheel-contacting
surface centered on the model origin. The outer, ground-contacting surface of
the pad should face the positive z direction. The forward end of the pad
should face the positive x-axis.
The wheels defining the track should have a common base name
with integer indexes 0 to n-1. The wheels should be numbered
in the direction a pad would move around them when the vehicle is moving
forward (clockwise, when looking from the right).
Moreover, the zero-th wheel should be at the front and top, and the
(n-1)th wheel should be at the back and top of the vehicle.
The wheel centers
should all lie in a plane perpendicular to the vehicle's left-right
axis, and the axis of rotation of each wheel should be parallel to the
vehicle's left-right axis.
The purpose of each entry box in the track animation widget
entry box on the widget is described below:
Output File
When the OK button is pressed, an animation script is created and
stored in the file named in the Output file entry box. If this
file already exists, the user is asked whether to overwrite or cancel. The
output script contains one frame for each node of the vehicle path
curve.
Vehicle path from table
The track animation widget needs an animation table which specifies in some
way how many output frames are desired and how far the track should roll
in each frame. This information must be specified directly or indirectly
in one of three different ways. If the Distance button is
enabled, then the vehicle path table should contain two columns,
representing time and the distance the track has rolled in each frame.
If Position is enabled, the table should contain four columns
representing time and the position of the vehicle that the track is a
part of. The track widget will calculate the distance the track needs to
roll in order to steer the vehicle along the given path. If Pos. and
ypr is specified, the table should contain seven columns
representing time, position, yaw, pitch, and roll of the vehicle
containing the track. The track widget will calculate the distance the
track should roll as the vehicle moves through the given positions and
orientations. In any event, the animation table must be placed in a
table editor, and the integer identifier of the table editor should be
entered in the Vehicle path from table entry box.
Wheel specs from table
The user must enter in this box the identifier of a table editor
containing the wheel specifications for the track being animated. The
wheel spec table should have one row for each wheel defining the track.
The first three columns of the table specify the center point of the
wheel, and the fourth column specifies the radius of each wheel.
The wheels should be specified in order, going from wheel zero up to
wheel n-1.
Wheel base name
The common base name of the wheels should be specified in the Wheel
base name entry box. The base name includes the name of the group or
region to which the wheels belong and the common base name of the
wheels,
but doesn't include the integer index.
For example, if wheel_0 through wheel_3 are
members of
the group rwheels, then the base name is
rwheels/wheel_.
If the Wheel base name entry box is left empty, then the output
animation script won't contain any animation commands for the wheels.
The wheel curve and wheel radius are still needed to define the shape of
the track.
Pad base name and Number of pads
The common base name of the pads should be specified in the Pad base
name entry box. The base name includes the name of a group or region
to which the wheels belong and the common base name of the pads, but
doesn't include the integer index.
For example, if
pad0 through pad79 are members of the group
rtrack then the base name is
rtrack/pad.
If the pad base name is omitted, then the output scripts won't contain
any animation commands for the pads. Either the pad base name, the wheel
base name, or both, must be specified, or there will be no output.
The number of pads should be specified in the Number of pads
entry box.
Track length
Three different track length options can be selected from the track
length option menu. The default option is Minimize track
length. In this case, the length of the track is assumed to be the
minimum length needed to fit around the wheels defining the track. Any
value specified in the track length entry box is ignored in this case.
If the Elastic track length option is selected, then the desired
length of the track should be entered in the track length entry box. If
this length is longer than what is needed to fit around the wheels, then
any excess length is taken up in a catenary arc which hangs between
wheel zero and wheel (n-1). If the track length isn't long
enough, the track is stretched just far enough to meet the need. If the
Rigid track length is selected and the track is longer than
needed, then the resulting track is identical to the elastic track. If
the specified track length is too short, a rigid track generates an
error message rather than automatically stretching the track.
The minimum track length for a given set of wheel specifications can be
obtained by pressing the Get track length from wheel specs
button. The Wheel specs from table entry must be filled in before
that button can function.
Vehicle Center and Orientation
As explained in the section on Object Center and Orientation,
when animating objects the user must provide a center point and an
initial orientation. The center point is the point on or near the object
which is moved to the positions in the animation table, and about which
rotations occur. The initial orientation defines which direction the
object considers to be forward, left, up, and so on.
The same center point and orientation used in creating the object
animation script for the vehicle should be entered into the appropriate
entry widgets of the track animation widget.
The vehicle center and yaw, pitch, and roll can be keyboard edited after
clicking on the
entry box with the mouse. As an alternative to keyboard entry, the user
can click on the Vehicle center label to enter the current center
point of the MGED display window, or click on the Vehicle
orientation label to enter the current yaw, pitch, and roll of the
display.
The center point and orientation are important parameters because they
are used in defining the plane that the track will lie in
(perpendicular to the vehicle's left-right axis) and in determining the
distance forward or backward that the track should roll in each frame.
First Frame
An animation script is made of a series of numbered frames. Each
frame gives animation commands needed for one image in the final
product. By default, the frames numbers for a given script begin at
zero. If a different initial frame number is desired, it may be entered
in the First Frame entry box. For example, the first frame number
might be set to 300 when creating a script which will be appended onto
the end of another script which is 300 frames long.
Create geometry file from frame
Besides making an animation scripts for an articulated track, the track
widget can also be used to help in creating the original model of the
track. When the Create geometry file button is enabled, the
MGED modeling commands rather than animation commands will be
written to the output file. The modeling commands operate on the
matrices between the pads and their common parent. The entry box
corresponding to this button should contain a frame number of the
animation frame which is to be emulated. For example, specifying frame 1
means that the modeling commands will actually model the pads in the
positions they would have in frame 1 of the animation script, if an
animation script were to be created. The modeling file must be applied
with MGED's "source" command, and the vehicle must be redisplayed
with the "e" command to view the results.
Enable Anti-Strobing
In track animations, a strobing effect can sometimes cause the track to
appear to stop, slow down, or move backwards. When the track is moving
forward
at slow speeds, the position of a pad in a given frame is slightly
forward of its position in the previous frame. However, when the track
is moving faster, a pad might move far enough forward between frames so
that its position in a given frame is just behind the position its
neighbor was in during the previous frame. Since all the pads are
identical, the eye assumes that it was actually the neighboring pad that
moved slightly backward between frames. This creates the illusion of a
backward-moving track.
The Enable Anti-Strobing option uses anim_track's "-a"
option to avoid
this strobing effect. When the track is moving at slow speeds which are
not subject to strobing effects, this
option has no effect.
However, when the track speed exceeds a threshold (0.5 pad
lengths per frame), anim_track begins adding random jitter to
the track movements. The effect on the eye is to replace the strobing
problem with motion blur.
Other Buttons
- OK
- Create the animation script, leaving the track animation widget in
place for further work.
- Show Script
- Display a widget which can be sued to run the animation script in
the MGED display window.
- Up
- Raise the track animation widget's parent to the top of the
stacking order.
- Cancel
- Close the track animation widget.
Combining Scripts
The purpose of this widget is to create a new animation script which
combines the functions of two or more other animation scripts.
For
example, a script controlling the view and a script
controlling a vehicle can be used to produce a script controlling both.
both.
The entry box under the Combine Scripts label can be used to type
in the names of the script files to combine. When the
Return
key is pressed, the name is added onto the list of
names in the list box immediately below the entry box. File names can be
removed from the list box by clicking on the name with the left mouse button.
On the right side of the widget is an entry box which contains
a filter string. By default,
the filter string is ./*.script
, specifying the files in the
current directory with the .script
suffix.
The files which match the
filter are listed in the list box immediately below the filter string.
The filter string can be keyboard edited, and the list of files is
regenerated when the Filter button is pressed.
File names can in the Filter list box can be added to the Combine
Scripts list box by clicking on the desired file name with the left
mouse button.
The entry box labeled Create script contains the name of the file
that will be created by combining all of the scripts in the Combine
Scripts list box.
The following buttons appear at the bottom of the widget:
- OK
- When this button is invoked, a new script is created by combining
the scripts listed in the Combine scripts list box. The name for
the new script comes from the Create script entry box. If a file
with this name already exists, the user is asked whether to overwrite
the old file or cancel the operation.
Depending on the size of the input files, the sorting algorithm may take
a few seconds to complete. The sorting is
performed in the background so that the user can continue working during
the sort. A message is posted at the bottom of the widget to let the
user know that the scripts are being combined, and a Halt button
is posted to allow the user to cancel the operation mid-way. Only one
sort may be active at a time. When the operation is complete, the
message and Halt button disappear.
- Show Script
- This button pops up a widget for running the new script in the
MGED display window.
- Up
- This button raises the parent of the script-combining widget to the
top of the stacking order.
- Cancel
- This button closes the script-combining widget.
Showing Scripts
This widget allows the user to run an animation script in the
MGED display window. The widget is basically a front-end to the
MGED preview
command, with the added feature that
the widget re-displays animation curves which are
"zapped" from the screen during the preview
command.
The Show Script widget has the following entry boxes and
buttons:
- Script file
- The name of the file containing the animation script
- Max frames per second
- The maximum rate at which frames will be shown in the display
window. The display will try to run at the maximum rate, or as fast as
MGED knows how if if no maximum rate is specified.
- Start frame
- The frame number of the first frame in the script to be shown.
If no start frame
is specified, then the animation display will start at first frame
encountered in the animation script.
- End frame
- The frame number of the last frame of the script to be shown.
If no end frame is specified, then the animation display will continue
to the end of the animation script.
- Polygon Rendering
- If this checkbutton is enabled, animated objects will be rendered
with polygons rather than in wireframe form. Note that the user should turn
on polygon lighting prior to this form of previewing (the F5 key toggles
polygon lighting).
- Show
- Display the animation. Before pressing this button, the user should
make sure that all of the objects which are to be animated are currently
being edited (with the MGED
e
command.
- Up
- Raise the parent of this widget to the top of the stacking order.
- Cancel
- Close this widget.
- Restore
- Restore the view and objects to their previous state. When an
animation has been run, the animated objects and the view state are left
as they were specified in the last frame of the animation. This button
returns all the objects to the normal modeled positions and restores the
display to the viewing state that was current before the animation was
run.