messiah_motion.h


Provides information and manipulation relating to an object's motion.

Version:
1.1
Date:
6/07/03
Topics


Channel Type Macros



#define FX_CHANTYPE_POSITION
 Position type channel.

#define FX_CHANTYPE_ROTATION
 Rotation type channel.

#define FX_CHANTYPE_SCALE
 Scale type channel.

#define FX_CHANTYPE_PIVOT
 Pivot type channel.

#define FX_CHANTYPE_VALUE
 Value type channel.

#define FX_CHANTYPE_COLOR
 Color type channel (0-255).


Channel Macros

These macros represent the IDs of single or groups of channels and are used with functions such as fxChannelsGet().


#define FX_CHAN_N
 Replace 'N' with an int between 0 and 29, indicates an individual channel.

#define FX_X_POSITION
 Local X position.

#define FX_Y_POSITION
 Local Y position.

#define FX_Z_POSITION
 Local Z position.

#define FX_HEADING
 Local Heading (Y rotate).

#define FX_PITCH
 Local Pitch (X rotate).

#define FX_BANK
 Local Bank (Z rotate).

#define FX_X_SCALE
 Local X scale.

#define FX_Y_SCALE
 Local Y scale.

#define FX_Z_SCALE
 Local Z scale.

#define FX_X_PIVOT
 Local X pivot.

#define FX_Y_PIVOT
 Local Y pivot.

#define FX_Z_PIVOT
 Local Z pivot.

#define FX_X_WPOSITION
 World X position.

#define FX_Y_WPOSITION
 World Y position.

#define FX_Z_WPOSITION
 World Z position.

#define FX_POSITION
 All local position channels.

#define FX_ROTATION
 All local rotation channels.

#define FX_SCALE
 All local scale channels.

#define FX_PIVOT
 All local pivot channels.

#define FX_MOTION_CHANNELS
 All motion channels (position, rotation, scale).

#define FX_OBJECT_CHANNELS
 All object channels (motion channels, pivot).

#define FX_ALL_CHANNELS
 All channels (0-11).

#define FX_EX_CHANNELS
 All channels (0-31).

#define FX_WORLD_POSITION
 All world position channels.

#define FX_WORLD_ROTATION
 All world rotation channels.

#define FX_WORLD_SCALE
 All world scale channels.

#define FX_WORLD_PIVOT
 All world pivot channels.


Flags (fxChannels*)

Macros passed as the flags parameter for the Channel Functions ( fxChannel(s)* ).


#define FX_CHANXFER_SETUP
 Indicates that the function will use the item's Setup values rather than its animation values.


Matrix Macros

These macros represent transformation matrix types.


#define FX_MATRIX_LOCAL
 Object's local transformation matrix.

#define FX_MATRIX_WORLD
 Object's world transformation matrix.

#define FX_MATRIX_WORLD_FILTERED
 Object's world rotation matrix (transform and scale info omitted).


Channel Flag Macros

These macros represent channel flags and are used in functions such as fxKeyInclusionGet().


#define FX_X_POSITION_BIT
 X position channel flag.

#define FX_Y_POSITION_BIT
 Y position channel flag.

#define FX_Z_POSITION_BIT
 Z position channel flag.

#define FX_HEADING_BIT
 Heading (Y) channel flag.

#define FX_PITCH_BIT
 Pitch (X) channel flag.

#define FX_BANK_BIT
 Bank (Z) channel flag.

#define FX_X_SCALE_BIT
 X scale channel flag.

#define FX_Y_SCALE_BIT
 Y scale channel flag.

#define FX_Z_SCALE_BIT
 Z scale channel flag.

#define FX_X_PIVOT_BIT
 X pivot channel flag.

#define FX_Y_PIVOT_BIT
 Y pivot channel flag.

#define FX_Z_PIVOT_BIT
 Z pivot channel flag.

#define FX_POSITION_BITS
 All position channels flag.

#define FX_ROTATION_BITS
 All rotation channels flag.

#define FX_SCALE_BITS
 All scale channels flag.

#define FX_PIVOT_BITS
 All pivot channels flag.

#define FX_MOTION_CHANNELS_BITS
 All motion channels flag (position, rotation, scale).

#define FX_OBJECT_CHANNELS_BITS
 All object channels flag (motion channels, pivot).

#define FX_ALL_CHANNELS_BITS
 First 12 channels.

#define FX_EX_CHANNELS_BITS
 All 32 channels.


Motion End Behavior Macros

These macros represent the end behavior of a motion curve. See messiah's documentation for more information about end behavior types.


#define FX_END_RESET
 Reset.

#define FX_END_STOP
 Stop.

#define FX_END_REPEAT
 Repeat.

#define FX_END_REPEAT_LOCAL
 Repeat Local.

#define FX_END_PINGPONG
 Ping Pong.

#define FX_END_ACCUMULATE
 Accumulate.

#define FX_END_ACCUMULATE_LOCAL
 Accumulate Local.

#define FX_END_WRAP
 Wrap.

#define FX_END_PINGPONG_LOCAL
 Ping Pong Local.


Motion Curve Type Macros

These macros represent the types of motion curves (TCB, Bezier etc.)


#define FX_CURVETYPE_TCB
 TCB (Tension, Continuity, Bias Catmul-Rom Spline).

#define FX_CURVETYPE_BEZIER
 Bezier.

#define FX_CURVETYPE_LINEAR
 Linear.

#define FX_CURVETYPE_STEP
 Constant Stepped.


Channel Operator Macros

These macros represent the types of operations that can be used when setting a channel's value with fxChannelsBlend().


#define FX_CHANOP_EQUAL
 Assignment, channel will equal the value being passed.

#define FX_CHANOP_ADD
 Addition, the value being passed will be added to the existing channel value.

#define FX_CHANOP_SUB
 Subtraction, the value being passed will be subtracted from the existing channel value.

#define FX_CHANOP_MULT
 Multiplication, , the value being passed will be multiplied by the existing channel value.

#define FX_CHANOP_DIV
 Division, , the value being passed will be divided by the existing channel value.

#define FX_CHANOP_MAX
 Max, the channel will be assigned the value being passed only if it is larger than the channel's existing value.

#define FX_CHANOP_MIN
 Min, the channel will be assigned the value being passed only if it is smaller than the channel's existing value.


Tangent Type Macros

These macros represent the types of tangents available.


#define FX_TANGENTS_BREAK
 The curve is allowed to be c1 discontinuous.

#define FX_TANGENTS_LOCK_LENGTH
 Control handles are equidistant from control point.


Misc. Functions



FXint fxMotionNumKeys (FXobject obj, FXint *num_keys, FXint flags)
 Retrieves the number of keyframes on a given object.

FXint fxMatrixGet (FXobject obj, FXint chan_mat, FXdouble frame, FXmatrix m, FXint flags)
 Retrieves the transformation matrix from an object.


Channel Functions

These functions provide operations on, and information about, an object's channels. They allow you to retrieve and set the attributes of these channels such as their value, name, type and inclusion status. They also allow you to link the value of a channel to any of your plugin's variables.


FXint fxChannelsGet (FXobject obj, FXint channel_ID, FXdouble frame, FXdouble *channels, FXint flags)
 Retrieve one or more channels' value at a given frame.

FXint fxChannelsSet (FXobject obj, FXint channel_ID, FXdouble *channels, FXint flags)
 Set the value of one or more channels on a given object.

FXint fxChannelsBlend (FXobject, FXint channel_ID, FXdouble *channels, FXint blend_op, FXint flags)
 Set the value of one or more channels on a given object using blending flags.

FXint fxChannelActiveGet (FXobject obj, FXint *channel, FXint flags)
 Retrieve the currently active (selected) channel for a given object.

FXint fxChannelActiveSet (FXobject obj, FXint channel, FXint flags)
 Set the currently active (selected) channel for a given object.

FXint fxChannelNumKeys (FXobject obj, FXint channel, FXint *num_keys, FXint flags)
 Retrieves the number of included keyframes on a given channel.

FXint fxChannelSetup (FXobject obj, FXchar *name, FXint channel, FXint channel_type, FXdouble def, FXdouble min, FXdouble max, FXint flags)
 Channel information setup function.

FXint fxChannelDataLink (FXobject obj, FXint channel, FXint value_type, FXvoid *value, FXint flags)
 Links an object's channel's value to a variable.

FXint fxChannelEndSet (FXobject obj, FXint channel_ID, FXint end_type, FXint flags)
 Set a channel's end behavior.

FXint fxChannelEndGet (FXobject obj, FXint channel_ID, FXint *end_type, FXint flags)
 Get a channel's end behavior.


Key Functions

These functions provide operations on, and information about, an object's keyframes.


FXint fxKeyEditBegin (FXmodule module, FXobject obj, FXint flags)
 Begins a keyframe editing session, always call before editing keys.

FXint fxKeyEditEnd (FXmodule module, FXobject obj, FXint flags)
 Ends a keyframe editing session.

FXint fxKeyChannelsGet (FXobject obj, FXint keyID, FXint channel_flag, FXdouble *channels, FXint flags)
 Retrieve one or more keyframe values.

FXint fxKeyChannelsSet (FXobject obj, FXint keyID, FXint channel_flag, FXdouble *channels, FXint flags)
 Set one or more keyframe values.

FXint fxKeyInclusionGet (FXobject obj, FXint keyID, FXint *channel_flags, FXint flags)
 Get the inclusion status of a keyframe for a given channel.

FXint fxKeyInclusionSet (FXobject obj, FXint keyID, FXint channel_flags, FXint flags)
 Set the active status of a keyframe for a given channel.

FXint fxKeySelected (FXobject obj, FXint keyID, FXint channel, FXint flags)
 Determine whether a keyframe is selected or not.

FXint fxKeySelect (FXobject obj, FXint keyID, FXint channel, FXint flags)
 Selects a keyframe on a given channel.

FXint fxKeyDeselect (FXobject obj, FXint keyID, FXint channel, FXint flags)
 Deselects a keyframe on a given channel.

FXint fxKeyActiveGet (FXobject obj, FXint *keyID, FXint flags)
 Retrieves the index of the currently active keyframe.

FXint fxKeyActiveSet (FXobject obj, FXint keyID, FXint flags)
 Sets the currently active keyframe to the specified index.

FXint fxKeyCreate (FXobject obj, FXdouble frame, FXint *keyID, FXint flags)
 Create a keyframe.

FXint fxKeyDelete (FXobject obj, FXint keyID, FXint flags)
 Delete the keyframe at the specified index: keyID.

FXint fxKeyCurveSet (FXobject obj, FXint keyID, FXint channel_ID, FXint curve_type, FXint flags)
 Sets the type of a motion curve (TCB, Bezier etc.) at the specified keyframe.

FXint fxKeyCurveGet (FXobject obj, FXint keyID, FXint channel_ID, FXint *curve_type, FXint flags)
 Retrieves the type of a motion curve at the specified keyframe.

FXint fxKeyTangentsSet (FXobject obj, FXint keyID, FXint channel_ID, FXint tangent_flags, FXint flags)
 Sets the tangent attributes of the specified keyframe.

FXint fxKeyTangentsGet (FXobject obj, FXint keyID, FXint channel_ID, FXint *tangent_flags, FXint flags)
 Retrieves the tangent attributes of the specified keyframe.


Define Documentation

#define FX_TANGENTS_BREAK
 

The curve is allowed to be c1 discontinuous.

Example:

FX_TANGENTS_BREAK.gif

#define FX_TANGENTS_LOCK_LENGTH
 

Control handles are equidistant from control point.

Locked:

FX_TANGENTS_LOCK_LENGTH.gif
Unlocked:
FX_TANGENTS_LOCK_LENGTH_inv.gif


Function Documentation

FXint fxChannelActiveGet FXobject    obj,
FXint   channel,
FXint    flags
 

Retrieve the currently active (selected) channel for a given object.

Parameters:
obj [in] The object
channel [out] Storage for a Channel Macro (FXint)
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
Use this function when you need to determine which channel is currently active for a given object. The channel identifier will be stored in the variable pointed to by channel. You can test against the Channel Macros for specific channels.

FXint fxChannelActiveSet FXobject    obj,
FXint    channel,
FXint    flags
 

Set the currently active (selected) channel for a given object.

Parameters:
obj [in] The object
channel [in] A Channel Macro
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
This function will set the channel as the active, or selected, channel for an object. Use the Channel Type Macros to identify the channel(s) you wish to set as active,

FXint fxChannelDataLink FXobject    obj,
FXint    channel,
FXint    value_type,
FXvoid   value,
FXint    flags
 

Links an object's channel's value to a variable.

Parameters:
obj [in] The object
channel [in] A Channel Macro indicating the channel to link
value_type [in] An Argument Data Type, indicating the type of value
value [in] The address of the variable that you want updated whenever this channel's value changes
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
This function is a very handy way of dealing with animated values in your object based module. You can use this function to link the value of an object's channel to some internal variable in your plugin, whenever the channel's value changes your variable's value gets changed accordingly.
See also:
Tutorial - NormScale

FXint fxChannelEndGet FXobject    obj,
FXint    channel_ID,
FXint   end_type,
FXint    flags
 

Get a channel's end behavior.

Parameters:
obj [in] The object
channel_ID [in] A Channel Macro indicating the channel to affect
end_type [out] Storage for an End Behavior Identifier indicating the current end behavior of the channel (FXint)
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure

FXint fxChannelEndSet FXobject    obj,
FXint    channel_ID,
FXint    end_type,
FXint    flags
 

Set a channel's end behavior.

Parameters:
obj [in] The object
channel_ID [in] A Channel Macro indicating the channel to affect
end_type [in] An End Behavior Identifier
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure

FXint fxChannelNumKeys FXobject    obj,
FXint    channel,
FXint   num_keys,
FXint    flags
 

Retrieves the number of included keyframes on a given channel.

Parameters:
obj [in] The object
channel [in] The channel identifier, one of: Channel Macro
num_keys [out] Storage for the number of keyframes (FXint)
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
Whereas fxMotionNumKeys() will return the number of keys for all of the object's motion, this function is used to get the number of "included" keyframes for a given channel.
See also:
Keyframes Discussion

FXint fxChannelsBlend FXobject   ,
FXint    channel_ID,
FXdouble   channels,
FXint    blend_op,
FXint    flags
 

Set the value of one or more channels on a given object using blending flags.

Parameters:
obj [in] The object
channel_ID [in] A Channel Macro indicating the channel(s) to set
channels [in] array of values to assign to the channels
blend_op [in] A Channel Operator Macro indicating the operation to perform
flags [in] Channel Function's Flags
Return values:
FX_TRUE on success
FX_FALSE on failure
This function is almost identical to fxChannelsSet() except that you can use a Channel Operator Macro to alter the way the channels are applied to the object. This is very much like changing the channel operator flag on an variable in Command Mode.

FXint fxChannelSetup FXobject    obj,
FXchar   name,
FXint    channel,
FXint    channel_type,
FXdouble    def,
FXdouble    min,
FXdouble    max,
FXint    flags
 

Channel information setup function.

Parameters:
obj [in] The object
name [in] Name of the channel as you wish it to appear to the user
channel [in] Channel index identifier, typically one of the FX_CHAN_N macros
channel_type [in] On of the Channel Types
def [in] Default value for this channel
min [in] Low-bound for this channel
max [in] Hi-bound for this channel
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
This function is used to setup a channel's properties. You should only use this function on objects that you "own", that is objects associated with your object based module (Effect Modules, Shaders). You should use this function in response to the O_CREATE() AN message.
See also:
Tutorial - NormScale

FXint fxChannelsGet FXobject    obj,
FXint    channel_ID,
FXdouble    frame,
FXdouble   channels,
FXint    flags
 

Retrieve one or more channels' value at a given frame.

Parameters:
obj [in] The object
channel_ID [in] A Channel Macro indicating the channel(s) to retrieve
frame [in] The frame (possibly fractional) to retrieve the value from
channels [out] Storage for the channel(s) value (FXdouble for single channel, FXdouble [] for multiple)
flags [in] Channel Function's Flags
Return values:
FX_TRUE on success
FX_FALSE on failure
You can use this function to get the value of a single channel or you can use it to get a whole group of channels at one time. For example, to retrieve an object X position only you could use:

FXdouble xpos;
fxChannelsGet( obj, FX_X_POSITION, NOW, &xpos, FX_NOFLAG);
But if you were interested in all three of the position channels you could use:

FXvecd pos; // == FXdouble pos[3]
fxChannelsGet( obj, FX_POSITION, NOW, pos, FX_NOFLAG);
This would be more efficient than calling fxChannelsGet() once for each channel.
If you want to retrieve the object's Setup values you should pass FX_CHANXFER_SETUP() as the flags param.

FXint fxChannelsSet FXobject    obj,
FXint    channel_ID,
FXdouble   channels,
FXint    flags
 

Set the value of one or more channels on a given object.

Parameters:
obj [in] The object
channel_ID [in] A Channel Macro indicating the channel(s) to set
channels [in] array of values to assign to the channels
flags [in] Channel Function's Flags
Return values:
FX_TRUE on success
FX_FALSE on failure
To set the value of a single channel, x position for example you would use the following:

FXdouble xpos = 2.5; // set x position to 2.5
fxChannelsSet( obj, FX_X_POSITION, &xpos, FX_NOFLAG);
If you wanted to set multiple channels, all of the rotation channels for example you could use:

FXvecd rot = { 3.14, 0.0, 3.14 };
fxChannelsSet( obj, FX_ROTATION, rot, FX_NOFLAG);
If you want to set the object's Setup values you should pass FX_CHANXFER_SETUP() as the flags param.

FXint fxKeyActiveGet FXobject    obj,
FXint   keyID,
FXint    flags
 

Retrieves the index of the currently active keyframe.

Parameters:
obj [in] The object
keyID [out] Storage for the keyframe index (FXint)
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
Although more than one keyframe may be selected at any given time, only one can be the active key (indicated by a yellow circle in the motion graph). This function retrieves the index of the active keyframe.

FXint fxKeyActiveSet FXobject    obj,
FXint    keyID,
FXint    flags
 

Sets the currently active keyframe to the specified index.

Parameters:
obj [in] The object
keyID [in] The keyframe index
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
See also:
fxKeyActiveGet()

FXint fxKeyChannelsGet FXobject    obj,
FXint    keyID,
FXint    channel_flag,
FXdouble   channels,
FXint    flags
 

Retrieve one or more keyframe values.

Parameters:
obj [in] The object
keyID [in] 0 based index of the keyframe
channel_flag [in] A Channel Macro indicating the channel(s) to retrieve
channels [out] Storage for keyframe's values (FXdouble for single key, FXdouble [] for multiple)
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
This function is identical to fxChannelsGet() except that it changes keyframe values rather than the object's procedural motion.
To retrieve an object's xpos channel on the first keyframe you could use:

FXdouble xpos;
fxKeyChannelsGet( obj, 0, FX_X_POSITION, &xpos, FX_NOFLAG);
But if you were interested in all three of the position channels you could use:

FXvecd pos; // == FXdouble pos[3]
fxKeyChannelsGet( obj, 0, FX_POSITION, pos, FX_NOFLAG);
This would be more efficient than calling fxKeyChannelsGet() once for each channel.

FXint fxKeyChannelsSet FXobject    obj,
FXint    keyID,
FXint    channel_flag,
FXdouble   channels,
FXint    flags
 

Set one or more keyframe values.

Parameters:
obj [in] The object
keyID [in] 0 based index of the keyframe
channel_flag [in] A Channel Macro indicating the channel(s) to set
channels [in] The keyframe's values
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
This function is identical to fxChannelsSet() except that it changes keyframe values rather than the object's procedural motion.
To set the value on the 2nd keyframe for a single channel, x position for example, you would use the following:

FXdouble xpos = 2.5; // set x position to 2.5
fxKeyChannelsSet( obj, 1, FX_X_POSITION, &xpos, FX_NOFLAG);
If you wanted to set multiple channels, all of the rotation channels for example you could use:

FXvecd rot = { 3.14, 0.0, 3.14 };
fxKeyChannelsSet( obj, 1, FX_ROTATION, rot, FX_NOFLAG);

FXint fxKeyCreate FXobject    obj,
FXdouble    frame,
FXint   keyID,
FXint    flags
 

Create a keyframe.

Parameters:
obj [in] The object
frame [in] The frame at which to create the key
keyID [out] Storage for the 0 based index of the keyframe (FXint)
flags [in] Reserved for future use
Return values:
FX_TRUE if new key was created
2 if key already existed at the specified frame
FX_FALSE on failure
This function will create a keyframe at the specified frame and store the resulting key's index in keyID. If a key already existed at the specified frame, then the function returns '2' and the existing key's id is stored in keyID.

FXint fxKeyCurveGet FXobject    obj,
FXint    keyID,
FXint    channel_ID,
FXint   curve_type,
FXint    flags
 

Retrieves the type of a motion curve at the specified keyframe.

Parameters:
obj [in] The object
keyID [in] 0 based index of the keyframe
channel_ID [in] A Channel Macro indicating the channel
curve_type [out] Storage for a Curve Type Macro (FXint)
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
Stores the type of the curve preceding the keyframe keyID in curve_type.

FXint fxKeyCurveSet FXobject    obj,
FXint    keyID,
FXint    channel_ID,
FXint    curve_type,
FXint    flags
 

Sets the type of a motion curve (TCB, Bezier etc.) at the specified keyframe.

Parameters:
obj [in] The object
keyID [in] 0 based index of the keyframe
channel_ID [in] A Channel Macro indicating the channel
curve_type [in] A Curve Type Macro
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
This function is used to set the type of the motion curve preceding the keyframe keyID.

FXint fxKeyDeselect FXobject    obj,
FXint    keyID,
FXint    channel,
FXint    flags
 

Deselects a keyframe on a given channel.

Parameters:
obj [in] The object
keyID [in] 0 based index of the keyframe
channel [in] A Channel Macro indicating the channel
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure

FXint fxKeyEditBegin FXmodule    module,
FXobject    obj,
FXint    flags
 

Begins a keyframe editing session, always call before editing keys.

Parameters:
module [in] The ID of the module doing the editing (i.e. the value returned by fxModuleRegister()).
obj [in] The object that you are editing
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
Always place keyframe editing calls between matching fxKeyEditBegin()/fxKeyEditEnd() pairs. This is required so that the edits are included in the undo buffer. If the module doing the editing is an Function Module or a command then you should pass FX_NULLID as module.

FXint fxKeyEditEnd FXmodule    module,
FXobject    obj,
FXint    flags
 

Ends a keyframe editing session.

Parameters:
module [in] The ID of the module doing the editing (i.e. the value returned by fxModuleRegister()).
obj [in] The object that you are editing
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
Always place keyframe editing calls between matching fxKeyEditBegin()/fxKeyEditEnd() pairs. This is required so that the edits are included in the undo buffer. If the module doing the editing is an Function Module or a command then you should pass FX_NULLID as module.

FXint fxKeyInclusionGet FXobject    obj,
FXint    keyID,
FXint   channel_flags,
FXint    flags
 

Get the inclusion status of a keyframe for a given channel.

Parameters:
obj [in] The object
keyID [in] 0 based index of the keyframe
channel_flag [out] Storage for the flags which will indicate inclusion (FXint)
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
In messiah when a keyframe exists on one channel it exists on all channels at the same frame. This does not mean that the motion curve for all of those channels are affected by these keys however. Keys are considered "included" if they affect a motion curve and "excluded" if they do not. This function allows you to check which channels on a keyframe are included. Upon return the bits in channel_flags will be set according to this inclusion status and can be compared against the Channel Flag Macros.
See also:
Keyframes Discussion

FXint fxKeyInclusionSet FXobject    obj,
FXint    keyID,
FXint    channel_flags,
FXint    flags
 

Set the active status of a keyframe for a given channel.

Parameters:
obj [in] The object
keyID [in] 0 based index of the keyframe
channel_flag [in] A Channel Flag Macro combination
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
In messiah when a keyframe exists on one channel it exists on all channels at the same frame. This does not mean that the motion curve for all of those channels are affected by these keys however. Keys are considered "included" if they affect a motion curve and "excluded" if they do not. This function allows you to set which channels on a keyframe are included. You will pass a Channel Flag Macro as channel_flags to indicate which channels will be included:

FXint   included = FX_X_POSITION_BIT|FX_Z_POSITION_BIT;
fxKeyInclusionSet( obj, keyID, included, FX_NOFLAG );
See also:
Keyframes Discussion

FXint fxKeySelect FXobject    obj,
FXint    keyID,
FXint    channel,
FXint    flags
 

Selects a keyframe on a given channel.

Parameters:
obj [in] The object
keyID [in] 0 based index of the keyframe
channel [in] A Channel Macro indicating the channel
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure

FXint fxKeySelected FXobject    obj,
FXint    keyID,
FXint    channel,
FXint    flags
 

Determine whether a keyframe is selected or not.

Parameters:
obj [in] The object
keyID [in] 0 based index of the keyframe
channel [in] A Channel Macro indicating the channel
flags [in] Reserved for future use
Return values:
FX_TRUE if the keyframe keyID on channel is selected given the object obj
FX_FALSE if it is not selected

FXint fxKeyTangentsGet FXobject    obj,
FXint    keyID,
FXint    channel_ID,
FXint   tangent_flags,
FXint    flags
 

Retrieves the tangent attributes of the specified keyframe.

Parameters:
obj [in] The object
keyID [in] 0 based keyframe index
channel_ID [in] A Channel Macro indicating the channel
tangent_flags [out] Storage for a Tangent Flag Macro combination (FXint)
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
Stores the tangent attributes for the keyframe at keyID on the channel channel_ID in the variable tangent_flags.

FXint fxKeyTangentsSet FXobject    obj,
FXint    keyID,
FXint    channel_ID,
FXint    tangent_flags,
FXint    flags
 

Sets the tangent attributes of the specified keyframe.

Parameters:
obj [in] The object
keyID [in] 0 based keyframe index
channel_ID [in] A Channel Macro indicating the channel
tangent_flags [in] A Tangent Flag Macro combination
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
Use this function to set the tangent attributes for the specified keyID on the channel_ID channel. The tangent_flags argument is a bit wise combination of the Tangent Flag Macros.

FXint fxMatrixGet FXobject    obj,
FXint    chan_mat,
FXdouble    frame,
FXmatrix    m,
FXint    flags
 

Retrieves the transformation matrix from an object.

Parameters:
obj [in] The object
chan_mat [in] A Matrix Type Macro
frame [in] The frame you want the matrix to reflect
m [out] Storage for the matrix (FXmatrix)
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
Stores the values of the requested transformation matrix in m

FXint fxMotionNumKeys FXobject    obj,
FXint   num_keys,
FXint    flags
 

Retrieves the number of keyframes on a given object.

Parameters:
obj [in] The object
num_keys [out] Storage for the number of keyframes (FXint)
flags [in] Reserved for future use
Return values:
FX_TRUE on success
FX_FALSE on failure
This function retrieves the number of keyframes that exist for the object irrespective of their inclusion status.
See also:
Keyframes Discussion


© 2003 pmG WorldWide, LLC.


www.projectmessiah.com

groups.yahoo.com/pmGmessiah

Last Updated on Thu Jul 10 04:49:37 2003