#include <MItKeyframe.h>
Iterate over the keyframes of a particular Anim Curve Node, and query and edit the keyframe to which the iterator points.
Determine the time and value of the keyframe, as well as the x,y values and type of the tangent to the curve entering (in tangent) and leaving (out tangent) the keyframe.
Set the time and value of the keyframe, and the type of the tangents.
Anim Curves are implemented as Dependency Graph (DG) Nodes. Each Node has multiple ordered and indexed keyframes.
Use the Keyframe Iterator to systematically visit, and query and/or edit the keyframes of a Anim Curve Node.
Use the Keyframe Iterator in conjunction with the Anim Curve Function Set (MFnAnimCurve) to edit Anim Curve Nodes.
On creation the iterator is attached to a Anim Curve Node. The iterator may be detached from its current Node and attached to another Anim Curve Node using the reset() method.
Though keyframes within a Node are ordered and indexed, the iterator maintains the index of the current Node internally and does not export it. Use the Anim Curve Function Set to access the index for a keyframe. The index is zero-based. When an iterator is first attached to a Node, either on creation or reset, the index is set to zero. There is an overloaded version of the reset() method which does not cause the iterator to change Nodes, but merely resets the index.
Use the next(), reset() and isDone() methods to perform iterations.
Use the specific query methods to determine the time, value and tangent information for the keyframe under the iterator.
Use specific edit methods to set the time and value , as well as the incoming and outgoing tangent type (MItKeyframe::TangentType) of the keyframe under the iterator.
There is no method for setting the x,y value of either of the tangents.
Setting the time of a keyframe will fail if the new time would require a re-ordering of the keyframes. Use the Anim Curve Functiion Set methods MFnAnimCurve::remove() and MFnAnimCurve::addKeyFrame() to re-order the keyframes.
Public Types | |
enum | TangentType { kTangentGlobal = 0, kTangentFixed, kTangentLinear, kTangentFlat, kTangentSmooth, kTangentStep, kTangentSlow, kTangentFast, kTangentClamped, kTangentPlateau, kTangentStepNext } |
< Tangent types. More... | |
Public Member Functions | |
MItKeyframe (MObject &animCurveNode, MStatus *ReturnStatus=NULL) | |
~MItKeyframe () | |
MStatus | reset (MObject &animCurveNode) |
MStatus | reset () |
MStatus | next () |
bool | isDone (MStatus *ReturnStatus=NULL) |
MTime | time (MStatus *ReturnStatus=NULL) |
MStatus | setTime (MTime time) |
double | value (MStatus *ReturnStatus=NULL) |
MStatus | setValue (double value) |
TangentType | inTangentType (MStatus *ReturnStatus=NULL) |
TangentType | outTangentType (MStatus *ReturnStatus=NULL) |
MStatus | setInTangentType (TangentType tangentType) |
MStatus | setOutTangentType (TangentType tangentType) |
MStatus | getTangentOut (float &x, float &y) |
MStatus | getTangentIn (float &x, float &y) |
bool | tangentsLocked (MStatus *ReturnStatus=NULL) const |
MStatus | setTangentsLocked (bool locked) |
< Tangent types.
Class Constructor
Creates an iterator and attaches it to the given Anim Curve Node.
[in] | animCurveNode | Target Node for attachment of iterator |
[out] | ReturnStatus | Status Code (see below) |
MItKeyframe::~MItKeyframe | ( | ) |
Class Destructor
No additional action.
Detaches the iterator from the current Anim Curve Node and attaches it to the given Node. Resets to the first keyframe (index = 0).
[in] | animCurveNode | New target Node for attachment to iterator |
MStatus MItKeyframe::reset | ( | ) |
Resets the keyframe index to 0 (first keyframe) on the Anim Curve Node to which the iterator is attached.
MStatus MItKeyframe::next | ( | ) |
Moves to the next keyframe on the Anim Curve Node to which the iterator is attached.
bool MItKeyframe::isDone | ( | MStatus * | ReturnStatus = NULL |
) |
Indicates that the iterator is at the last keyframe on the Anim Curve Node to which the iterator is attached (index = number of keyframes - 1).
[out] | ReturnStatus | Status Code (see below) |
Determines the time of the current keyframe.
[out] | ReturnStatus | Status Code (see below). |
Sets the time of the current keyframe. This will fail if setting the time would require re-ordering of the keyframes.
Tangents may be changed so that the curve remains monotonic with respect to time.
[in] | time | Time to which the current keyframe time is to be set. |
double MItKeyframe::value | ( | MStatus * | ReturnStatus = NULL |
) |
Determines the value of the current keyframe.
[out] | ReturnStatus | Status Code (see below). |
MStatus MItKeyframe::setValue | ( | double | value | ) |
Sets the value of the current keyframe.
[in] | value | Value to which the current keyframe time is to be set. |
MItKeyframe::TangentType MItKeyframe::inTangentType | ( | MStatus * | ReturnStatus = NULL |
) |
Determines the type of the tangent to the curve entering the current keyframe.
[out] | ReturnStatus | Status Code (see below). |
MItKeyframe::TangentType MItKeyframe::outTangentType | ( | MStatus * | ReturnStatus = NULL |
) |
Determines the type of the tangent to the curve leaving the current keyframe.
[out] | ReturnStatus | Status Code (see below). |
MStatus MItKeyframe::setInTangentType | ( | TangentType | tangentType | ) |
Sets the type of the tangent to the curve entering the current keyframe.
[in] | tangentType | Type to which the tangent is to be set |
MStatus MItKeyframe::setOutTangentType | ( | TangentType | tangentType | ) |
Sets the type of the tangent to the curve entering the current keyframe.
[in] | tangentType | Type to which the tangent is to be set |
MStatus MItKeyframe::getTangentOut | ( | float & | x, | |
float & | y | |||
) |
Determines the x,y value of the tangent to the curve leaving the current keyframe.
[out] | x | Delta x of the slope of the tangent |
[out] | y | Delta y of the slope of the tangent |
MStatus MItKeyframe::getTangentIn | ( | float & | x, | |
float & | y | |||
) |
Determines the x,y value of the tangent to the curve entering the current keyframe.
[out] | x | Delta x of the slope of the tangent |
[out] | y | Delta y of the slope of the tangent |
bool MItKeyframe::tangentsLocked | ( | MStatus * | ReturnStatus = NULL |
) | const |
Determines whether the tangents are locked at this keyframe.
[out] | ReturnStatus | Status Code (see below). |
MStatus MItKeyframe::setTangentsLocked | ( | bool | locked | ) |
Lock or unlock the tangents at this keyframe.
[in] | locked | true if the tangents are to be locked, false otherwise |
Autodesk® Maya® 2009 © 1997-2008 Autodesk, Inc. All rights reserved. | Generated with 1.5.6 |