Go to: Synopsis. Return value. Flags. MEL examples.
choice [-attribute string] [-controlPoints boolean] [-index uint] [-name
string] [-selector name]
[-shape boolean] [-sourceAttribute name] [-time time] [objects]
choice is undoable, queryable, and editable.
The choice command provides a mechanism for changing the inputs to
an attribute based on some (usually time-based) criteria. For
example, an object could be animated from frames 1 to 30 by a
motion path, then from frames 30 to 50 it follows keyframe
animation, and after frame 50 it returns to the motion path. Or, a
revolve surface could change its input curve depending on some
transform's rotation value.The choice command creates a choice node
(if one does not already exist) on all specified attributes of the
selected objects. If the attribute was already connected to
something, that something is now reconnected to the i'th index of
the choice node's input (or the next available input if the
-in/index flag is not specified). If a source attribute is
specified, then that attribute is connected to the choice node's
i'th input instead.The choice node operates by using the value of
its selector attribute to determine which of its input attributes
to pass through to its output. The input attributes can be of any
type. For example, if the selector attribute was connected by an
animation curve with keyframes at (1,1), (30,2) and (50,1), then
that would mean that the choice node would pass on the data from
input[1] from time 1 to 30, and after time 50, and the data from
input[2] between times 30 and 50.This command returns the names of
the created or modified choice nodes, and if a keyframe was added
to the animation curve, it specifies the index (or value on the
animation curve).
string[] |
The newly created and/or modified choice nodes, with the
attribute for which a selector keyframe was created.
For example: choice1.input[3] choice2.input[3] |
In query mode, return type is based on queried flag.
attribute, controlPoints, index, name, selector, shape,
sourceAttribute, time
Flag can appear in Create mode of
command |
Flag can appear in Edit mode of command |
Flag can appear in Query mode of command |
Flag can be used more than once in a
command. |
// This example animates an object airplane along a motion path
// from frames 1 to 30, then continues with keyframe animation until
// frame 50, then returns to the motion path at frame 50.
string $path = `curve -d 3 -p -10 0 0 -p -6 0 10 -p -3 0 -10 -p 10 0 0 -k 0 -k 0 -k 0 -k 1 -k 1 -k 1`;
polyPlane;
pathAnimation -c $path -stu 1 -etu 100 pPlane1;
// Set a choice node on the path animation, ensuring that the choice
// selects path animation from 1 to 30, and then returns at 50.
choice -at ty -t 1 -t 30 -t 50 pPlane1;
// Start a new kind of choice at time 31
choice -at ty -t 31 pPlane1;
// Create some keyframe animation between times 31 and 49
currentTime 31;
setKeyframe -at ty pPlane1;
move -r 1 2 3;
setKeyframe -at ty -t 40 pPlane1;
move -r 4 5 6;
setKeyframe -at ty -t 49 pPlane1;
// Note that the -at/attribute and -t/time flags are not
// queryable in themselves, but they can be used to
// modify the choice nodes to query.
// What is the attribute that is connected to the pPlane1.ty choice node's
// selector attribute?
choice -at ty -query -sl pPlane1;
// Which indices will be evaluated for the choice node to pPlane1.ty
// at the given times?
choice -at ty -t 1 -t 30 -t 50 -query -in pPlane1;