OGRE  2.0
Object-Oriented Graphics Rendering Engine
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
Ogre::Animation Class Reference

An animation sequence. More...

#include <OgreAnimation.h>

+ Inheritance diagram for Ogre::Animation:
+ Collaboration diagram for Ogre::Animation:

Public Types

enum  InterpolationMode { IM_LINEAR, IM_SPLINE }
 The types of animation interpolation available. More...
 
typedef ConstVectorIterator
< NodeTrackList
NodeTrackIterator
 
typedef vector
< NodeAnimationTrack * >::type 
NodeTrackList
 
typedef ConstMapIterator
< NumericTrackList
NumericTrackIterator
 
typedef map< unsigned short,
NumericAnimationTrack * >
::type 
NumericTrackList
 
typedef ConstMapIterator
< OldNodeTrackList
OldNodeTrackIterator
 
typedef map< unsigned short,
OldNodeAnimationTrack * >
::type 
OldNodeTrackList
 
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 _collectIdentityOldNodeTracks (TrackHandleList &tracks) const
 Internal method for collecting identity node tracks. More...
 
void _destroyOldNodeTracks (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...
 
const OldNodeTrackList_getOldNodeTrackList (void) const
 Fast access to NON-UPDATEABLE OldNode 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 (OldNode *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...
 
Animationclone (const String &newName) const
 Clone this animation. More...
 
NodeAnimationTrackcreateNodeTrack (void)
 Creates a NodeAnimationTrack for animating a OldNode. More...
 
NodeAnimationTrackcreateNodeTrack (Node *node)
 Creates a new AnimationTrack automatically associated with a OldNode. More...
 
NumericAnimationTrackcreateNumericTrack (unsigned short handle)
 Creates a NumericAnimationTrack for animating any numeric value. More...
 
NumericAnimationTrackcreateNumericTrack (unsigned short handle, const AnimableValuePtr &anim)
 Creates a NumericAnimationTrack and associates it with an animable. More...
 
OldNodeAnimationTrackcreateOldNodeTrack (unsigned short handle)
 Creates a OldNodeAnimationTrack for animating a OldOldNode. More...
 
OldNodeAnimationTrackcreateOldNodeTrack (unsigned short handle, OldNode *node)
 Creates a new AnimationTrack automatically associated with a OldNode. More...
 
VertexAnimationTrackcreateVertexTrack (unsigned short handle, VertexAnimationType animType)
 Creates a VertexAnimationTrack for animating vertex position data. More...
 
VertexAnimationTrackcreateVertexTrack (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 destroyAllOldNodeTracks (void)
 
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 destroyNumericTrack (unsigned short handle)
 Destroys the numeric track with the given handle. More...
 
void destroyOldNodeTrack (unsigned short handle)
 Destroys the node track with the given handle. More...
 
void destroyVertexTrack (unsigned short handle)
 Destroys the Vertex track with the given handle. More...
 
const StringgetBaseKeyFrameAnimationName () 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...
 
AnimationContainergetContainer ()
 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 StringgetName (void) const
 Gets the name of this animation. More...
 
NodeAnimationTrackgetNodeTrack (size_t handle) const
 Gets a node track by it's handle. More...
 
NodeTrackIterator getNodeTrackIterator (void) const
 Get non-updateable iterator over node tracks. More...
 
NumericAnimationTrackgetNumericTrack (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...
 
size_t 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...
 
size_t getNumOldNodeTracks (void) const
 Gets the number of OldNodeAnimationTrack objects contained in this animation. More...
 
unsigned short getNumVertexTracks (void) const
 Gets the number of VertexAnimationTrack objects contained in this animation. More...
 
OldNodeAnimationTrackgetOldNodeTrack (unsigned short handle) const
 Gets a node track by it's handle. More...
 
OldNodeTrackIterator getOldNodeTrackIterator (void) const
 Get non-updateable iterator over node tracks. 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...
 
VertexAnimationTrackgetVertexTrack (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 hasNumericTrack (unsigned short handle) const
 Does a track exist with the given handle? More...
 
bool hasOldNodeTrack (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 operator delete (void *ptr)
 
void operator delete (void *ptr, void *)
 
void operator delete (void *ptr, const char *, int, const char *)
 
void operator delete[] (void *ptr)
 
void operator delete[] (void *ptr, const char *, int, const char *)
 
void * operator new (size_t sz, const char *file, int line, const char *func)
 operator new, with debug line info More...
 
void * operator new (size_t sz)
 
void * operator new (size_t sz, void *ptr)
 placement operator new More...
 
void * operator new[] (size_t sz, const char *file, int line, const char *func)
 array operator new, with debug line info More...
 
void * operator new[] (size_t sz)
 
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...
 

Protected Types

typedef vector< Real >::type KeyFrameTimeList
 Global keyframe time list used to search global keyframe index. More...
 

Protected Member Functions

void buildKeyFrameTimeList (void) const
 Internal method to build global keyframe time list. More...
 
void optimiseOldNodeTracks (bool discardIdentityTracks)
 
void optimiseVertexTracks (void)
 

Protected Attributes

String mBaseKeyFrameAnimationName
 
Real mBaseKeyFrameTime
 
AnimationContainermContainer
 
InterpolationMode mInterpolationMode
 
KeyFrameTimeList mKeyFrameTimes
 
bool mKeyFrameTimesDirty
 Dirty flag indicate that keyframe time list need to rebuild. More...
 
Real mLength
 
String mName
 
NodeTrackList mNodeTrackList
 Node tracks, indexed by handle. More...
 
NumericTrackList mNumericTrackList
 Numeric tracks, indexed by handle. More...
 
OldNodeTrackList mOldNodeTrackList
 OldNode tracks, indexed by handle. More...
 
RotationInterpolationMode mRotationInterpolationMode
 
bool mUseBaseKeyFrame
 
VertexTrackList mVertexTrackList
 Vertex tracks, indexed by handle. More...
 

Static Protected Attributes

static InterpolationMode msDefaultInterpolationMode
 
static RotationInterpolationMode msDefaultRotationInterpolationMode
 

Detailed Description

An animation sequence.

Remarks
This class defines the interface for a sequence of animation, whether that be animation of a mesh, a path along a spline, or possibly more than one type of animation in one. An animation is made up of many 'tracks', which are the more specific types of animation.
You should not create these animations directly. They will be created via a parent object which owns the animation, e.g. Skeleton.

Definition at line 90 of file OgreAnimation.h.

Member Typedef Documentation

typedef vector<Real>::type Ogre::Animation::KeyFrameTimeList
protected

Global keyframe time list used to search global keyframe index.

Definition at line 555 of file OgreAnimation.h.

Definition at line 393 of file OgreAnimation.h.

Definition at line 399 of file OgreAnimation.h.

Definition at line 396 of file OgreAnimation.h.

A list of track handles.

Definition at line 454 of file OgreAnimation.h.

Definition at line 402 of file OgreAnimation.h.

Member Enumeration Documentation

The types of animation interpolation available.

Enumerator
IM_LINEAR 

Values are interpolated along straight lines.

IM_SPLINE 

Values are interpolated along a spline, resulting in smoother changes in direction.

Definition at line 95 of file OgreAnimation.h.

The types of rotational interpolation available.

Enumerator
RIM_LINEAR 

Values are interpolated linearly.

This is faster but does not necessarily give a completely accurate result.

RIM_SPHERICAL 

Values are interpolated spherically.

This is more accurate but has a higher cost.

Definition at line 104 of file OgreAnimation.h.

Constructor & Destructor Documentation

Ogre::Animation::Animation ( const String name,
Real  length 
)

You should not use this constructor directly, use the parent object such as Skeleton instead.

Parameters
nameThe name of the animation, should be unique within it's parent (e.g. Skeleton)
lengthThe length of the animation in seconds.
virtual Ogre::Animation::~Animation ( )
virtual

Member Function Documentation

void Ogre::Animation::_applyBaseKeyFrame ( )

Internal method to adjust keyframes relative to a base keyframe (.

See also
setUseBaseKeyFrame) */
void Ogre::Animation::_collectIdentityOldNodeTracks ( TrackHandleList tracks) const

Internal method for collecting identity node tracks.

Remarks
This method remove non-identity node tracks form the track handle list.
Parameters
tracksA list of track handle of non-identity node tracks, where this method will remove non-identity node track handles.
void Ogre::Animation::_destroyOldNodeTracks ( const TrackHandleList tracks)

Internal method for destroy given node tracks.

const NodeTrackList& Ogre::Animation::_getNodeTrackList ( void  ) const

Fast access to NON-UPDATEABLE node track list.

const NumericTrackList& Ogre::Animation::_getNumericTrackList ( void  ) const

Fast access to NON-UPDATEABLE numeric track list.

const OldNodeTrackList& Ogre::Animation::_getOldNodeTrackList ( void  ) const

Fast access to NON-UPDATEABLE OldNode track list.

TimeIndex Ogre::Animation::_getTimeIndex ( Real  timePos) const

Internal method used to convert time position to time index object.

Note
The time index returns by this function are associated with state of the animation object, if the animation object altered (e.g. create/remove keyframe or track), all related time index will invalidated.
Parameters
timePosThe time position.
Returns
The time index object which contains wrapped time position (in relation to the whole animation sequence) and lower bound index of global keyframe time list.
const VertexTrackList& Ogre::Animation::_getVertexTrackList ( void  ) const

Fast access to NON-UPDATEABLE Vertex track list.

void Ogre::Animation::_keyFrameListChanged ( void  )
inline

Internal method used to tell the animation that keyframe list has been changed, which may cause it to rebuild some internal data.

Definition at line 479 of file OgreAnimation.h.

void Ogre::Animation::_notifyContainer ( AnimationContainer c)
void Ogre::Animation::apply ( Real  timePos,
Real  weight = 1.0,
Real  scale = 1.0f 
)

Applies an animation given a specific time point and weight.

Remarks
Where you have associated animation tracks with objects, you can easily apply an animation to those objects by calling this method.
Parameters
timePosThe time position in the animation to apply.
weightThe influence to give to this track, 1.0 for full influence, less to blend with other animations.
scaleThe 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.

Remarks
Where you have associated animation tracks with OldNode objects, you can easily apply an animation to those nodes by calling this method.
Parameters
timePosThe time position in the animation to apply.
weightThe influence to give to this track, 1.0 for full influence, less to blend with other animations.
scaleThe 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.

Remarks
Where you have associated animation tracks with OldNode objects, you can easily apply an animation to those nodes by calling this method.
Parameters
timePosThe time position in the animation to apply.
weightThe influence to give to this track, 1.0 for full influence, less to blend with other animations.
blendMaskThe influence array defining additional per bone weights. These will be modulated with the weight factor.
scaleThe 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.

Parameters
entityThe Entity to which this animation should be applied
timePosThe time position in the animation to apply.
weightThe weight at which the animation should be applied (only affects pose animation)
softwareWhether to populate the software morph vertex data
hardwareWhether 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.

Remarks
It does not applies to actual attached animable values but rather uses all tracks for a single animable value.
Parameters
timePosThe time position in the animation to apply.
weightThe influence to give to this track, 1.0 for full influence, less to blend with other animations.
scaleThe scale to apply to translations and scalings, useful for adapting an animation to a different size target.
void Ogre::Animation::applyToNode ( OldNode 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.

Remarks
It does not consider the actual node tracks are attached to. As such, it resembles the apply method for a given skeleton (see below).
Parameters
timePosThe time position in the animation to apply.
weightThe influence to give to this track, 1.0 for full influence, less to blend with other animations.
scaleThe 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.

Remarks
It does not apply to the actual attached vertex data but rather uses all tracks for a given vertex data.
Parameters
timePosThe time position in the animation to apply.
weightThe influence to give to this track, 1.0 for full influence, less to blend with other animations.
void Ogre::Animation::buildKeyFrameTimeList ( void  ) const
protected

Internal method to build global keyframe time list.

Animation* Ogre::Animation::clone ( const String newName) const

Clone this animation.

Note
The pointer returned from this method is the only one recorded, thus it is up to the caller to arrange for the deletion of this object.
NodeAnimationTrack* Ogre::Animation::createNodeTrack ( void  )

Creates a NodeAnimationTrack for animating a OldNode.

Parameters
handleHandle to give the track, used for accessing the track later. Must be unique within this Animation.
NodeAnimationTrack* Ogre::Animation::createNodeTrack ( Node node)

Creates a new AnimationTrack automatically associated with a OldNode.

Remarks
This method creates a standard AnimationTrack, but also associates it with a target Node which will receive all keyframe effects.
Parameters
handleNumeric handle to give the track, used for accessing the track later. Must be unique within this Animation.
nodeA pointer to the OldNode object which will be affected by this track
NumericAnimationTrack* Ogre::Animation::createNumericTrack ( unsigned short  handle)

Creates a NumericAnimationTrack for animating any numeric value.

Parameters
handleHandle to give the track, used for accessing the track later. Must be unique within this Animation.
NumericAnimationTrack* Ogre::Animation::createNumericTrack ( unsigned short  handle,
const AnimableValuePtr anim 
)

Creates a NumericAnimationTrack and associates it with an animable.

Parameters
handleHandle to give the track, used for accessing the track later.
animAnimable object link Must be unique within this Animation.
OldNodeAnimationTrack* Ogre::Animation::createOldNodeTrack ( unsigned short  handle)

Creates a OldNodeAnimationTrack for animating a OldOldNode.

Parameters
handleHandle to give the track, used for accessing the track later. Must be unique within this Animation.
OldNodeAnimationTrack* Ogre::Animation::createOldNodeTrack ( unsigned short  handle,
OldNode node 
)

Creates a new AnimationTrack automatically associated with a OldNode.

Remarks
This method creates a standard AnimationTrack, but also associates it with a target OldNode which will receive all keyframe effects.
Parameters
handleNumeric handle to give the track, used for accessing the track later. Must be unique within this Animation.
nodeA pointer to the OldNode object which will be affected by this track
VertexAnimationTrack* Ogre::Animation::createVertexTrack ( unsigned short  handle,
VertexAnimationType  animType 
)

Creates a VertexAnimationTrack for animating vertex position data.

Parameters
handleHandle 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.
animTypeEither morph or pose animation,
VertexAnimationTrack* Ogre::Animation::createVertexTrack ( unsigned short  handle,
VertexData data,
VertexAnimationType  animType 
)

Creates a VertexAnimationTrack and associates it with VertexData.

Parameters
handleHandle to give the track, used for accessing the track later.
dataVertexData object link
animTypeThe animation type Must be unique within 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::destroyAllOldNodeTracks ( void  )
void Ogre::Animation::destroyAllTracks ( void  )

Removes and destroys all tracks making up this animation.

void Ogre::Animation::destroyAllVertexTracks ( void  )

Removes and destroys all tracks making up this animation.

void Ogre::Animation::destroyNumericTrack ( unsigned short  handle)

Destroys the numeric track with the given handle.

void Ogre::Animation::destroyOldNodeTrack ( unsigned short  handle)

Destroys the node track with the given handle.

void Ogre::Animation::destroyVertexTrack ( unsigned short  handle)

Destroys the Vertex track with the given handle.

const String& Ogre::Animation::getBaseKeyFrameAnimationName ( ) const

If a base keyframe is being used, the Animation that provides that keyframe.

Real Ogre::Animation::getBaseKeyFrameTime ( ) const

If a base keyframe is being used, the time of that keyframe.

AnimationContainer* Ogre::Animation::getContainer ( )

Retrieve the container of this animation.

static InterpolationMode Ogre::Animation::getDefaultInterpolationMode ( void  )
static

Gets the default interpolation mode for all animations.

static RotationInterpolationMode Ogre::Animation::getDefaultRotationInterpolationMode ( void  )
static

Gets the default rotation interpolation mode for all animations.

InterpolationMode Ogre::Animation::getInterpolationMode ( void  ) const

Gets the current interpolation mode of this animation.

Remarks
See setInterpolationMode for more info.
Real Ogre::Animation::getLength ( void  ) const

Gets the total length of the animation.

const String& Ogre::Animation::getName ( void  ) const

Gets the name of this animation.

NodeAnimationTrack* Ogre::Animation::getNodeTrack ( size_t  handle) const

Gets a node track by it's handle.

NodeTrackIterator Ogre::Animation::getNodeTrackIterator ( void  ) const
inline

Get non-updateable iterator over node tracks.

Definition at line 411 of file OgreAnimation.h.

NumericAnimationTrack* Ogre::Animation::getNumericTrack ( unsigned short  handle) const

Gets a numeric track by it's handle.

NumericTrackIterator Ogre::Animation::getNumericTrackIterator ( void  ) const
inline

Get non-updateable iterator over node tracks.

Definition at line 422 of file OgreAnimation.h.

size_t Ogre::Animation::getNumNodeTracks ( void  ) const

Gets the number of NodeAnimationTrack objects contained in this animation.

unsigned short Ogre::Animation::getNumNumericTracks ( void  ) const

Gets the number of NumericAnimationTrack objects contained in this animation.

size_t Ogre::Animation::getNumOldNodeTracks ( void  ) const

Gets the number of OldNodeAnimationTrack objects contained in this animation.

unsigned short Ogre::Animation::getNumVertexTracks ( void  ) const

Gets the number of VertexAnimationTrack objects contained in this animation.

OldNodeAnimationTrack* Ogre::Animation::getOldNodeTrack ( unsigned short  handle) const

Gets a node track by it's handle.

OldNodeTrackIterator Ogre::Animation::getOldNodeTrackIterator ( void  ) const
inline

Get non-updateable iterator over node tracks.

Definition at line 415 of file OgreAnimation.h.

RotationInterpolationMode Ogre::Animation::getRotationInterpolationMode ( void  ) const

Gets the current rotation interpolation mode of this animation.

Remarks
See setRotationInterpolationMode for more info.
bool Ogre::Animation::getUseBaseKeyFrame ( ) const

Whether a base keyframe is being used for this Animation.

VertexAnimationTrack* Ogre::Animation::getVertexTrack ( unsigned short  handle) const

Gets a Vertex track by it's handle.

VertexTrackIterator Ogre::Animation::getVertexTrackIterator ( void  ) const
inline

Get non-updateable iterator over node tracks.

Definition at line 429 of file OgreAnimation.h.

bool Ogre::Animation::hasNumericTrack ( unsigned short  handle) const

Does a track exist with the given handle?

bool Ogre::Animation::hasOldNodeTrack ( unsigned short  handle) const

Does a track exist with the given handle?

bool Ogre::Animation::hasVertexTrack ( unsigned short  handle) const

Does a track exist with the given handle?

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr)
inlineinherited

Definition at line 96 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
void *   
)
inlineinherited

Definition at line 102 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

Definition at line 108 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr)
inlineinherited

Definition at line 113 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void Ogre::AllocatedObject< Alloc >::operator delete[] ( void *  ptr,
const char *  ,
int  ,
const char *   
)
inlineinherited

Definition at line 119 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

operator new, with debug line info

Definition at line 68 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz)
inlineinherited

Definition at line 73 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new ( size_t  sz,
void *  ptr 
)
inlineinherited

placement operator new

Definition at line 79 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz,
const char *  file,
int  line,
const char *  func 
)
inlineinherited

array operator new, with debug line info

Definition at line 86 of file OgreMemoryAllocatedObject.h.

template<class Alloc >
void* Ogre::AllocatedObject< Alloc >::operator new[] ( size_t  sz)
inlineinherited

Definition at line 91 of file OgreMemoryAllocatedObject.h.

void Ogre::Animation::optimise ( bool  discardIdentityNodeTracks = true)

Optimise an animation by removing unnecessary tracks and keyframes.

Remarks
When you export an animation, it is possible that certain tracks have been keyframed but actually don't include anything useful - the keyframes include no transformation. These tracks can be completely eliminated from the animation and thus speed up the animation. In addition, if several keyframes in a row have the same value, then they are just adding overhead and can be removed.
Note
Since track-less and identity track has difference behavior for accumulate animation blending if corresponding track presenting at other animation that is non-identity, and in normally this method didn't known about the situation of other animation, it can't deciding whether or not discards identity tracks. So there have a parameter allow you choose what you want, in case you aren't sure how to do that, you should use Skeleton::optimiseAllAnimations instead.
Parameters
discardIdentityNodeTracksIf true, discard identity node tracks.
void Ogre::Animation::optimiseOldNodeTracks ( bool  discardIdentityTracks)
protected
void Ogre::Animation::optimiseVertexTracks ( void  )
protected
static void Ogre::Animation::setDefaultInterpolationMode ( InterpolationMode  im)
static

Sets the default animation interpolation mode.

Remarks
Every animation created after this option is set will have the new interpolation mode specified. You can also change the mode per animation by calling the setInterpolationMode method on the instance in question.
static void Ogre::Animation::setDefaultRotationInterpolationMode ( RotationInterpolationMode  im)
static

Sets the default rotation interpolation mode.

Remarks
Every animation created after this option is set will have the new interpolation mode specified. You can also change the mode per animation by calling the setInterpolationMode method on the instance in question.
void Ogre::Animation::setInterpolationMode ( InterpolationMode  im)

Tells the animation how to interpolate between keyframes.

Remarks
By default, animations normally interpolate linearly between keyframes. This is fast, but when animations include quick changes in direction it can look a little unnatural because directions change instantly at keyframes. An alternative is to tell the animation to interpolate along a spline, which is more expensive in terms of calculation time, but looks smoother because major changes in direction are distributed around the keyframes rather than just at the keyframe.
You can also change the default animation behaviour by calling Animation::setDefaultInterpolationMode.
void Ogre::Animation::setLength ( Real  len)

Sets the length of the animation.

Note
Changing the length of an animation may invalidate existing AnimationState instances which will need to be recreated.
void Ogre::Animation::setRotationInterpolationMode ( RotationInterpolationMode  im)

Tells the animation how to interpolate rotations.

Remarks
By default, animations interpolate linearly between rotations. This is fast but not necessarily completely accurate. If you want more accurate interpolation, use spherical interpolation, but be aware that it will incur a higher cost.
You can also change the default rotation behaviour by calling Animation::setDefaultRotationInterpolationMode.
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.

Remarks
Skeletal and pose animation keyframes are expressed as deltas from a given base state. By default, that is the binding setup of the skeleton, or the object space mesh positions for pose animation. However, sometimes it is useful for animators to create animations with a different starting pose, because that's more convenient, and the animation is designed to simply be added to the existing animation state and not globally averaged with other animations (this is always the case with pose animations, but is activated for skeletal animations via ANIMBLEND_CUMULATIVE).
In order for this to work, the keyframes need to be 're-based' against this new starting state, for example by treating the first keyframe as the reference point (and therefore representing no change). This can be achieved by applying the inverse of this reference keyframe against all other keyframes. Since this fundamentally changes the animation, this method just marks the animation as requiring this rebase, which is performed at the next Animation 'apply' call. This is to allow the Animation to be re-saved with this flag set, but without having altered the keyframes yet, so no data is lost unintentionally. If you wish to save the animation after the adjustment has taken place, you can (
See also
_applyBaseKeyFrame)
Parameters
useBaseKeyFrameWhether a base keyframe should be used
keyframeTimeThe time corresponding to the base keyframe, if any
baseAnimNameOptionally a different base animation (must contain the same tracks)

Member Data Documentation

String Ogre::Animation::mBaseKeyFrameAnimationName
protected

Definition at line 562 of file OgreAnimation.h.

Real Ogre::Animation::mBaseKeyFrameTime
protected

Definition at line 561 of file OgreAnimation.h.

AnimationContainer* Ogre::Animation::mContainer
protected

Definition at line 563 of file OgreAnimation.h.

InterpolationMode Ogre::Animation::mInterpolationMode
protected

Definition at line 548 of file OgreAnimation.h.

KeyFrameTimeList Ogre::Animation::mKeyFrameTimes
mutableprotected

Definition at line 556 of file OgreAnimation.h.

bool Ogre::Animation::mKeyFrameTimesDirty
mutableprotected

Dirty flag indicate that keyframe time list need to rebuild.

Definition at line 558 of file OgreAnimation.h.

Real Ogre::Animation::mLength
protected

Definition at line 546 of file OgreAnimation.h.

String Ogre::Animation::mName
protected

Definition at line 544 of file OgreAnimation.h.

NodeTrackList Ogre::Animation::mNodeTrackList
protected

Node tracks, indexed by handle.

Definition at line 537 of file OgreAnimation.h.

NumericTrackList Ogre::Animation::mNumericTrackList
protected

Numeric tracks, indexed by handle.

Definition at line 541 of file OgreAnimation.h.

OldNodeTrackList Ogre::Animation::mOldNodeTrackList
protected

OldNode tracks, indexed by handle.

Definition at line 539 of file OgreAnimation.h.

RotationInterpolationMode Ogre::Animation::mRotationInterpolationMode
protected

Definition at line 549 of file OgreAnimation.h.

InterpolationMode Ogre::Animation::msDefaultInterpolationMode
staticprotected

Definition at line 551 of file OgreAnimation.h.

RotationInterpolationMode Ogre::Animation::msDefaultRotationInterpolationMode
staticprotected

Definition at line 552 of file OgreAnimation.h.

bool Ogre::Animation::mUseBaseKeyFrame
protected

Definition at line 560 of file OgreAnimation.h.

VertexTrackList Ogre::Animation::mVertexTrackList
protected

Vertex tracks, indexed by handle.

Definition at line 543 of file OgreAnimation.h.


The documentation for this class was generated from the following file: