OGRE
1.10.12
Object-Oriented Graphics Rendering Engine
|
An animation sequence. More...
#include <OgreAnimation.h>
Public Types | |
enum | InterpolationMode { IM_LINEAR, IM_SPLINE } |
The types of animation interpolation available. More... | |
typedef ConstMapIterator< NodeTrackList > | NodeTrackIterator |
typedef map< unsigned short, NodeAnimationTrack * >::type | NodeTrackList |
typedef ConstMapIterator< NumericTrackList > | NumericTrackIterator |
typedef map< unsigned short, NumericAnimationTrack * >::type | NumericTrackList |
enum | RotationInterpolationMode { RIM_LINEAR, RIM_SPHERICAL } |
The types of rotational interpolation available. More... | |
typedef set< ushort >::type | TrackHandleList |
A list of track handles. More... | |
typedef ConstMapIterator< VertexTrackList > | VertexTrackIterator |
typedef map< unsigned short, VertexAnimationTrack * >::type | VertexTrackList |
Public Member Functions | |
Animation (const String &name, Real length) | |
You should not use this constructor directly, use the parent object such as Skeleton instead. More... | |
virtual | ~Animation () |
void | _applyBaseKeyFrame () |
Internal method to adjust keyframes relative to a base keyframe (. More... | |
void | _collectIdentityNodeTracks (TrackHandleList &tracks) const |
Internal method for collecting identity node tracks. More... | |
void | _destroyNodeTracks (const TrackHandleList &tracks) |
Internal method for destroy given node tracks. More... | |
const NodeTrackList & | _getNodeTrackList (void) const |
Fast access to NON-UPDATEABLE node track list. More... | |
const NumericTrackList & | _getNumericTrackList (void) const |
Fast access to NON-UPDATEABLE numeric track list. More... | |
TimeIndex | _getTimeIndex (Real timePos) const |
Internal method used to convert time position to time index object. More... | |
const VertexTrackList & | _getVertexTrackList (void) const |
Fast access to NON-UPDATEABLE Vertex track list. More... | |
void | _keyFrameListChanged (void) |
Internal method used to tell the animation that keyframe list has been changed, which may cause it to rebuild some internal data. More... | |
void | _notifyContainer (AnimationContainer *c) |
void | apply (Real timePos, Real weight=1.0, Real scale=1.0f) |
Applies an animation given a specific time point and weight. More... | |
void | apply (Skeleton *skeleton, Real timePos, Real weight=1.0, Real scale=1.0f) |
Applies all node tracks given a specific time point and weight to a given skeleton. More... | |
void | apply (Skeleton *skeleton, Real timePos, float weight, const AnimationState::BoneBlendMask *blendMask, Real scale) |
Applies all node tracks given a specific time point and weight to a given skeleton. More... | |
void | apply (Entity *entity, Real timePos, Real weight, bool software, bool hardware) |
Applies all vertex tracks given a specific time point and weight to a given entity. More... | |
void | applyToAnimable (const AnimableValuePtr &anim, Real timePos, Real weight=1.0, Real scale=1.0f) |
Applies all numeric tracks given a specific time point and weight to the specified animable value. More... | |
void | applyToNode (Node *node, Real timePos, Real weight=1.0, Real scale=1.0f) |
Applies all node tracks given a specific time point and weight to the specified node. More... | |
void | applyToVertexData (VertexData *data, Real timePos, Real weight=1.0) |
Applies all vertex tracks given a specific time point and weight to the specified vertex data. More... | |
Animation * | clone (const String &newName) const |
Clone this animation. More... | |
NodeAnimationTrack * | createNodeTrack (unsigned short handle) |
Creates a NodeAnimationTrack for animating a Node. More... | |
NodeAnimationTrack * | createNodeTrack (unsigned short handle, Node *node) |
Creates a new AnimationTrack automatically associated with a Node. More... | |
NumericAnimationTrack * | createNumericTrack (unsigned short handle) |
Creates a NumericAnimationTrack for animating any numeric value. More... | |
NumericAnimationTrack * | createNumericTrack (unsigned short handle, const AnimableValuePtr &anim) |
Creates a NumericAnimationTrack and associates it with an animable. More... | |
VertexAnimationTrack * | createVertexTrack (unsigned short handle, VertexAnimationType animType) |
Creates a VertexAnimationTrack for animating vertex position data. More... | |
VertexAnimationTrack * | createVertexTrack (unsigned short handle, VertexData *data, VertexAnimationType animType) |
Creates a VertexAnimationTrack and associates it with VertexData. More... | |
void | destroyAllNodeTracks (void) |
Removes and destroys all tracks making up this animation. More... | |
void | destroyAllNumericTracks (void) |
Removes and destroys all tracks making up this animation. More... | |
void | destroyAllTracks (void) |
Removes and destroys all tracks making up this animation. More... | |
void | destroyAllVertexTracks (void) |
Removes and destroys all tracks making up this animation. More... | |
void | destroyNodeTrack (unsigned short handle) |
Destroys the node track with the given handle. More... | |
void | destroyNumericTrack (unsigned short handle) |
Destroys the numeric track with the given handle. More... | |
void | destroyVertexTrack (unsigned short handle) |
Destroys the Vertex track with the given handle. More... | |
const String & | getBaseKeyFrameAnimationName () const |
If a base keyframe is being used, the Animation that provides that keyframe. More... | |
Real | getBaseKeyFrameTime () const |
If a base keyframe is being used, the time of that keyframe. More... | |
AnimationContainer * | getContainer () |
Retrieve the container of this animation. More... | |
InterpolationMode | getInterpolationMode (void) const |
Gets the current interpolation mode of this animation. More... | |
Real | getLength (void) const |
Gets the total length of the animation. More... | |
const String & | getName (void) const |
Gets the name of this animation. More... | |
NodeAnimationTrack * | getNodeTrack (unsigned short handle) const |
Gets a node track by it's handle. More... | |
NodeTrackIterator | getNodeTrackIterator (void) const |
Get non-updateable iterator over node tracks. More... | |
NumericAnimationTrack * | getNumericTrack (unsigned short handle) const |
Gets a numeric track by it's handle. More... | |
NumericTrackIterator | getNumericTrackIterator (void) const |
Get non-updateable iterator over node tracks. More... | |
unsigned short | getNumNodeTracks (void) const |
Gets the number of NodeAnimationTrack objects contained in this animation. More... | |
unsigned short | getNumNumericTracks (void) const |
Gets the number of NumericAnimationTrack objects contained in this animation. More... | |
unsigned short | getNumVertexTracks (void) const |
Gets the number of VertexAnimationTrack objects contained in this animation. More... | |
RotationInterpolationMode | getRotationInterpolationMode (void) const |
Gets the current rotation interpolation mode of this animation. More... | |
bool | getUseBaseKeyFrame () const |
Whether a base keyframe is being used for this Animation. More... | |
VertexAnimationTrack * | getVertexTrack (unsigned short handle) const |
Gets a Vertex track by it's handle. More... | |
VertexTrackIterator | getVertexTrackIterator (void) const |
Get non-updateable iterator over node tracks. More... | |
bool | hasNodeTrack (unsigned short handle) const |
Does a track exist with the given handle? More... | |
bool | hasNumericTrack (unsigned short handle) const |
Does a track exist with the given handle? More... | |
bool | hasVertexTrack (unsigned short handle) const |
Does a track exist with the given handle? More... | |
void | optimise (bool discardIdentityNodeTracks=true) |
Optimise an animation by removing unnecessary tracks and keyframes. More... | |
void | setInterpolationMode (InterpolationMode im) |
Tells the animation how to interpolate between keyframes. More... | |
void | setLength (Real len) |
Sets the length of the animation. More... | |
void | setRotationInterpolationMode (RotationInterpolationMode im) |
Tells the animation how to interpolate rotations. More... | |
void | setUseBaseKeyFrame (bool useBaseKeyFrame, Real keyframeTime=0.0f, const String &baseAnimName=BLANKSTRING) |
Sets a base keyframe which for the skeletal / pose keyframes in this animation. More... | |
Static Public Member Functions | |
static InterpolationMode | getDefaultInterpolationMode (void) |
Gets the default interpolation mode for all animations. More... | |
static RotationInterpolationMode | getDefaultRotationInterpolationMode (void) |
Gets the default rotation interpolation mode for all animations. More... | |
static void | setDefaultInterpolationMode (InterpolationMode im) |
Sets the default animation interpolation mode. More... | |
static void | setDefaultRotationInterpolationMode (RotationInterpolationMode im) |
Sets the default rotation interpolation mode. More... | |
An animation sequence.
typedef map<unsigned short, NodeAnimationTrack*>::type Ogre::Animation::NodeTrackList |
typedef map<unsigned short, NumericAnimationTrack*>::type Ogre::Animation::NumericTrackList |
typedef map<unsigned short, VertexAnimationTrack*>::type Ogre::Animation::VertexTrackList |
typedef set<ushort>::type Ogre::Animation::TrackHandleList |
A list of track handles.
|
virtual |
const String& Ogre::Animation::getName | ( | void | ) | const |
Gets the name of this animation.
Real Ogre::Animation::getLength | ( | void | ) | const |
Gets the total length of the animation.
void Ogre::Animation::setLength | ( | Real | len | ) |
Sets the length of the animation.
NodeAnimationTrack* Ogre::Animation::createNodeTrack | ( | unsigned short | handle | ) |
Creates a NodeAnimationTrack for animating a Node.
handle | Handle to give the track, used for accessing the track later. Must be unique within this Animation. |
NumericAnimationTrack* Ogre::Animation::createNumericTrack | ( | unsigned short | handle | ) |
Creates a NumericAnimationTrack for animating any numeric value.
handle | Handle to give the track, used for accessing the track later. Must be unique within this Animation. |
VertexAnimationTrack* Ogre::Animation::createVertexTrack | ( | unsigned short | handle, |
VertexAnimationType | animType | ||
) |
Creates a VertexAnimationTrack for animating vertex position data.
handle | Handle to give the track, used for accessing the track later. Must be unique within this Animation, and is used to identify the target. For example when applied to a Mesh, the handle must reference the index of the geometry being modified; 0 for the shared geometry, and 1+ for SubMesh geometry with the same index-1. |
animType | Either morph or pose animation, |
NodeAnimationTrack* Ogre::Animation::createNodeTrack | ( | unsigned short | handle, |
Node * | node | ||
) |
Creates a new AnimationTrack automatically associated with a Node.
NumericAnimationTrack* Ogre::Animation::createNumericTrack | ( | unsigned short | handle, |
const AnimableValuePtr & | anim | ||
) |
Creates a NumericAnimationTrack and associates it with an animable.
handle | Handle to give the track, used for accessing the track later. |
anim | Animable object link Must be unique within this Animation. |
VertexAnimationTrack* Ogre::Animation::createVertexTrack | ( | unsigned short | handle, |
VertexData * | data, | ||
VertexAnimationType | animType | ||
) |
Creates a VertexAnimationTrack and associates it with VertexData.
handle | Handle to give the track, used for accessing the track later. |
data | VertexData object link |
animType | The animation type Must be unique within this Animation. |
unsigned short Ogre::Animation::getNumNodeTracks | ( | void | ) | const |
Gets the number of NodeAnimationTrack objects contained in this animation.
NodeAnimationTrack* Ogre::Animation::getNodeTrack | ( | unsigned short | handle | ) | const |
Gets a node track by it's handle.
bool Ogre::Animation::hasNodeTrack | ( | unsigned short | handle | ) | const |
Does a track exist with the given handle?
unsigned short Ogre::Animation::getNumNumericTracks | ( | void | ) | const |
Gets the number of NumericAnimationTrack objects contained in this animation.
NumericAnimationTrack* Ogre::Animation::getNumericTrack | ( | unsigned short | handle | ) | const |
Gets a numeric track by it's handle.
bool Ogre::Animation::hasNumericTrack | ( | unsigned short | handle | ) | const |
Does a track exist with the given handle?
unsigned short Ogre::Animation::getNumVertexTracks | ( | void | ) | const |
Gets the number of VertexAnimationTrack objects contained in this animation.
VertexAnimationTrack* Ogre::Animation::getVertexTrack | ( | unsigned short | handle | ) | const |
Gets a Vertex track by it's handle.
bool Ogre::Animation::hasVertexTrack | ( | unsigned short | handle | ) | const |
Does a track exist with the given handle?
void Ogre::Animation::destroyNodeTrack | ( | unsigned short | handle | ) |
Destroys the node track with the given handle.
void Ogre::Animation::destroyNumericTrack | ( | unsigned short | handle | ) |
Destroys the numeric track with the given handle.
void Ogre::Animation::destroyVertexTrack | ( | unsigned short | handle | ) |
Destroys the Vertex track with the given handle.
void Ogre::Animation::destroyAllTracks | ( | void | ) |
Removes and destroys all tracks making up this animation.
void Ogre::Animation::destroyAllNodeTracks | ( | void | ) |
Removes and destroys all tracks making up this animation.
void Ogre::Animation::destroyAllNumericTracks | ( | void | ) |
Removes and destroys all tracks making up this animation.
void Ogre::Animation::destroyAllVertexTracks | ( | void | ) |
Removes and destroys all tracks making up this animation.
Applies an animation given a specific time point and weight.
timePos | The time position in the animation to apply. |
weight | The influence to give to this track, 1.0 for full influence, less to blend with other animations. |
scale | The scale to apply to translations and scalings, useful for adapting an animation to a different size target. |
void Ogre::Animation::applyToNode | ( | Node * | node, |
Real | timePos, | ||
Real | weight = 1.0 , |
||
Real | scale = 1.0f |
||
) |
Applies all node tracks given a specific time point and weight to the specified node.
node | |
timePos | The time position in the animation to apply. |
weight | The influence to give to this track, 1.0 for full influence, less to blend with other animations. |
scale | The scale to apply to translations and scalings, useful for adapting an animation to a different size target. |
void Ogre::Animation::apply | ( | Skeleton * | skeleton, |
Real | timePos, | ||
Real | weight = 1.0 , |
||
Real | scale = 1.0f |
||
) |
Applies all node tracks given a specific time point and weight to a given skeleton.
skeleton | |
timePos | The time position in the animation to apply. |
weight | The influence to give to this track, 1.0 for full influence, less to blend with other animations. |
scale | The scale to apply to translations and scalings, useful for adapting an animation to a different size target. |
void Ogre::Animation::apply | ( | Skeleton * | skeleton, |
Real | timePos, | ||
float | weight, | ||
const AnimationState::BoneBlendMask * | blendMask, | ||
Real | scale | ||
) |
Applies all node tracks given a specific time point and weight to a given skeleton.
skeleton | |
timePos | The time position in the animation to apply. |
weight | The influence to give to this track, 1.0 for full influence, less to blend with other animations. |
blendMask | The influence array defining additional per bone weights. These will be modulated with the weight factor. |
scale | The scale to apply to translations and scalings, useful for adapting an animation to a different size target. |
void Ogre::Animation::apply | ( | Entity * | entity, |
Real | timePos, | ||
Real | weight, | ||
bool | software, | ||
bool | hardware | ||
) |
Applies all vertex tracks given a specific time point and weight to a given entity.
entity | The Entity to which this animation should be applied |
timePos | The time position in the animation to apply. |
weight | The weight at which the animation should be applied (only affects pose animation) |
software | Whether to populate the software morph vertex data |
hardware | Whether to populate the hardware morph vertex data |
void Ogre::Animation::applyToAnimable | ( | const AnimableValuePtr & | anim, |
Real | timePos, | ||
Real | weight = 1.0 , |
||
Real | scale = 1.0f |
||
) |
Applies all numeric tracks given a specific time point and weight to the specified animable value.
anim | |
timePos | The time position in the animation to apply. |
weight | The influence to give to this track, 1.0 for full influence, less to blend with other animations. |
scale | The scale to apply to translations and scalings, useful for adapting an animation to a different size target. |
void Ogre::Animation::applyToVertexData | ( | VertexData * | data, |
Real | timePos, | ||
Real | weight = 1.0 |
||
) |
Applies all vertex tracks given a specific time point and weight to the specified vertex data.
data | |
timePos | The time position in the animation to apply. |
weight | The influence to give to this track, 1.0 for full influence, less to blend with other animations. |
void Ogre::Animation::setInterpolationMode | ( | InterpolationMode | im | ) |
Tells the animation how to interpolate between keyframes.
InterpolationMode Ogre::Animation::getInterpolationMode | ( | void | ) | const |
Gets the current interpolation mode of this animation.
void Ogre::Animation::setRotationInterpolationMode | ( | RotationInterpolationMode | im | ) |
Tells the animation how to interpolate rotations.
RotationInterpolationMode Ogre::Animation::getRotationInterpolationMode | ( | void | ) | const |
Gets the current rotation interpolation mode of this animation.
|
static |
Sets the default animation interpolation mode.
|
static |
Gets the default interpolation mode for all animations.
|
static |
Sets the default rotation interpolation mode.
|
static |
Gets the default rotation interpolation mode for all animations.
const NodeTrackList& Ogre::Animation::_getNodeTrackList | ( | void | ) | const |
Fast access to NON-UPDATEABLE node track list.
|
inline |
Get non-updateable iterator over node tracks.
const NumericTrackList& Ogre::Animation::_getNumericTrackList | ( | void | ) | const |
Fast access to NON-UPDATEABLE numeric track list.
|
inline |
Get non-updateable iterator over node tracks.
const VertexTrackList& Ogre::Animation::_getVertexTrackList | ( | void | ) | const |
Fast access to NON-UPDATEABLE Vertex track list.
|
inline |
Get non-updateable iterator over node tracks.
Referenced by Ogre::Lod0Stripifier::StripLod0Vertices().
void Ogre::Animation::optimise | ( | bool | discardIdentityNodeTracks = true | ) |
Optimise an animation by removing unnecessary tracks and keyframes.
discardIdentityNodeTracks | If true, discard identity node tracks. |
void Ogre::Animation::_collectIdentityNodeTracks | ( | TrackHandleList & | tracks | ) | const |
Internal method for collecting identity node tracks.
tracks | A list of track handle of non-identity node tracks, where this method will remove non-identity node track handles. |
void Ogre::Animation::_destroyNodeTracks | ( | const TrackHandleList & | tracks | ) |
Internal method for destroy given node tracks.
Clone this animation.
|
inline |
Internal method used to tell the animation that keyframe list has been changed, which may cause it to rebuild some internal data.
References Ogre::BLANKSTRING.
Internal method used to convert time position to time index object.
timePos | The time position. |
void Ogre::Animation::setUseBaseKeyFrame | ( | bool | useBaseKeyFrame, |
Real | keyframeTime = 0.0f , |
||
const String & | baseAnimName = BLANKSTRING |
||
) |
Sets a base keyframe which for the skeletal / pose keyframes in this animation.
useBaseKeyFrame | Whether a base keyframe should be used |
keyframeTime | The time corresponding to the base keyframe, if any |
baseAnimName | Optionally a different base animation (must contain the same tracks) |
bool Ogre::Animation::getUseBaseKeyFrame | ( | ) | const |
Whether a base keyframe is being used for this Animation.
Real Ogre::Animation::getBaseKeyFrameTime | ( | ) | const |
If a base keyframe is being used, the time of that keyframe.
const String& Ogre::Animation::getBaseKeyFrameAnimationName | ( | ) | const |
If a base keyframe is being used, the Animation that provides that keyframe.
void Ogre::Animation::_applyBaseKeyFrame | ( | ) |
Internal method to adjust keyframes relative to a base keyframe (.
void Ogre::Animation::_notifyContainer | ( | AnimationContainer * | c | ) |
AnimationContainer* Ogre::Animation::getContainer | ( | ) |
Retrieve the container of this animation.