Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

Ogre::Animation Class Reference

An animation sequence. More...

#include <OgreAnimation.h>

List of all members.

Public Types

typedef std::map< unsigned
short, AnimationTrack * > 
TrackList
typedef ConstMapIterator<
TrackList
TrackIterator
enum  InterpolationMode { IM_LINEAR, IM_SPLINE }
 The types of animation interpolation available. More...

enum  RotationInterpolationMode { RIM_LINEAR, RIM_SPHERICAL }
 The types of rotational interpolation available. More...


Public Member Functions

 Animation (const String &name, Real length)
 You should not use this constructor directly, use the parent object such as Skeleton instead.

virtual ~Animation ()
const StringgetName (void) const
 Gets the name of this animation.

Real getLength (void) const
 Gets the total length of the animation.

AnimationTrackcreateTrack (unsigned short handle)
 Creates an AnimationTrack.

AnimationTrackcreateTrack (unsigned short handle, Node *node)
 Creates a new AnimationTrack automatically associated with a Node.

unsigned short getNumTracks (void) const
 Gets the number of AnimationTrack objects which make up this animation.

AnimationTrackgetTrack (unsigned short handle) const
 Gets a track by it's handle.

void destroyTrack (unsigned short handle)
 Destroys the track with the given handle.

void destroyAllTracks (void)
 Removes and destroys all tracks making up this animation.

void apply (Real timePos, Real weight=1.0, bool accumulate=false, Real scale=1.0f)
 Applies an animation given a specific time point and weight.

void apply (Skeleton *skeleton, Real timePos, Real weight=1.0, bool accumulate=false, Real scale=1.0f)
 Applies an animation given a specific time point and weight to a given skeleton.

void setInterpolationMode (InterpolationMode im)
 Tells the animation how to interpolate between keyframes.

InterpolationMode getInterpolationMode (void) const
 Gets the current interpolation mode of this animation.

void setRotationInterpolationMode (RotationInterpolationMode im)
 Tells the animation how to interpolate rotations.

RotationInterpolationMode getRotationInterpolationMode (void) const
 Gets the current rotation interpolation mode of this animation.

const TrackList_getTrackList (void) const
 Fast access to NON-UPDATEABLE track list.

TrackIterator getTrackIterator (void) const
 Get non-updateable iterator over tracks.

void optimise (void)
 Optimise an animation by removing unnecessary tracks and keyframes.


Static Public Member Functions

void setDefaultInterpolationMode (InterpolationMode im)
 Sets the default animation interpolation mode.

InterpolationMode getDefaultInterpolationMode (void)
 Gets the default interpolation mode for all animations.

void setDefaultRotationInterpolationMode (RotationInterpolationMode im)
 Sets the default rotation interpolation mode.

RotationInterpolationMode getDefaultRotationInterpolationMode (void)
 Gets the default rotation interpolation mode for all animations.


Protected Attributes

TrackList mTrackList
 Tracks, indexed by handle.

String mName
Real mLength
InterpolationMode mInterpolationMode
RotationInterpolationMode mRotationInterpolationMode

Static Protected Attributes

InterpolationMode msDefaultInterpolationMode
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 45 of file OgreAnimation.h.


Member Typedef Documentation

typedef ConstMapIterator<TrackList> Ogre::Animation::TrackIterator
 

Definition at line 199 of file OgreAnimation.h.

Referenced by getTrackIterator().

typedef std::map<unsigned short, AnimationTrack*> Ogre::Animation::TrackList
 

Definition at line 198 of file OgreAnimation.h.


Member Enumeration Documentation

enum Ogre::Animation::InterpolationMode
 

The types of animation interpolation available.

Enumeration values:
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 50 of file OgreAnimation.h.

enum Ogre::Animation::RotationInterpolationMode
 

The types of rotational interpolation available.

Enumeration values:
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 59 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:
name The name of the animation, should be unique within it's parent (e.g. Skeleton)
length The length of the animation in seconds.

virtual Ogre::Animation::~Animation  )  [virtual]
 


Member Function Documentation

const TrackList& Ogre::Animation::_getTrackList void   )  const
 

Fast access to NON-UPDATEABLE track list.

void Ogre::Animation::apply Skeleton skeleton,
Real  timePos,
Real  weight = 1.0,
bool  accumulate = false,
Real  scale = 1.0f
 

Applies an animation given a specific time point and weight to a given skeleton.

Remarks:
Where you have associated animation tracks with Node objects, you can eaily apply an animation to those nodes by calling this method.
Parameters:
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 Real  timePos,
Real  weight = 1.0,
bool  accumulate = false,
Real  scale = 1.0f
 

Applies an animation given a specific time point and weight.

Remarks:
Where you have associated animation tracks with Node objects, you can eaily apply an animation to those nodes by calling this method.
Parameters:
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.

AnimationTrack* Ogre::Animation::createTrack unsigned short  handle,
Node node
 

Creates a new AnimationTrack automatically associated with a Node.

Remarks:
This method creates a standard AnimationTrack, but also associates it with a target Node which will receive all keyframe effects.
Parameters:
handle Numeric handle to give the track, used for accessing the track later. Must be unique within this Animation.
node A pointer to the Node object which will be affected by this track

AnimationTrack* Ogre::Animation::createTrack unsigned short  handle  ) 
 

Creates an AnimationTrack.

Parameters:
handle Numeric handle to give the track, used for accessing the track later. Must be unique within this Animation.

void Ogre::Animation::destroyAllTracks void   ) 
 

Removes and destroys all tracks making up this animation.

void Ogre::Animation::destroyTrack unsigned short  handle  ) 
 

Destroys the track with the given handle.

InterpolationMode Ogre::Animation::getDefaultInterpolationMode void   )  [static]
 

Gets the default interpolation mode for all animations.

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.

unsigned short Ogre::Animation::getNumTracks void   )  const
 

Gets the number of AnimationTrack objects which make up this animation.

RotationInterpolationMode Ogre::Animation::getRotationInterpolationMode void   )  const
 

Gets the current rotation interpolation mode of this animation.

Remarks:
See setRotationInterpolationMode for more info.

AnimationTrack* Ogre::Animation::getTrack unsigned short  handle  )  const
 

Gets a track by it's handle.

TrackIterator Ogre::Animation::getTrackIterator void   )  const
 

Get non-updateable iterator over tracks.

Definition at line 205 of file OgreAnimation.h.

References TrackIterator.

void Ogre::Animation::optimise void   ) 
 

Optimise an animation by removing unnecessary tracks and keyframes.

Remarks:
When you export an animation, it is possible that certain tracks have been keyfamed 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.

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.

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::setRotationInterpolationMode RotationInterpolationMode  im  ) 
 

Tells the animation how to interpolate rotations.

Remarks:
By default, animations interpolate lieanrly 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.


Member Data Documentation

InterpolationMode Ogre::Animation::mInterpolationMode [protected]
 

Definition at line 228 of file OgreAnimation.h.

Real Ogre::Animation::mLength [protected]
 

Definition at line 226 of file OgreAnimation.h.

String Ogre::Animation::mName [protected]
 

Definition at line 224 of file OgreAnimation.h.

RotationInterpolationMode Ogre::Animation::mRotationInterpolationMode [protected]
 

Definition at line 229 of file OgreAnimation.h.

InterpolationMode Ogre::Animation::msDefaultInterpolationMode [static, protected]
 

Definition at line 231 of file OgreAnimation.h.

RotationInterpolationMode Ogre::Animation::msDefaultRotationInterpolationMode [static, protected]
 

Definition at line 232 of file OgreAnimation.h.

TrackList Ogre::Animation::mTrackList [protected]
 

Tracks, indexed by handle.

Definition at line 223 of file OgreAnimation.h.


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

Copyright © 2000-2005 by The OGRE Team
Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 2.5 License.
Last modified Sun Feb 12 13:00:05 2006