#include <OgreSkeleton.h>
Inheritance diagram for Ogre::Skeleton:
Public Methods | |
Skeleton (const String &name) | |
Constructor, don't call directly, use SkeletonManager. | |
~Skeleton () | |
virtual void | load (void) |
Generic load - called by SkeletonManager. | |
virtual void | unload (void) |
Generic unload - called by SkeletonManager. | |
Bone * | createBone (void) |
Creates a brand new Bone owned by this Skeleton. | |
Bone * | createBone (unsigned short handle) |
Creates a brand new Bone owned by this Skeleton. | |
Bone * | createBone (const String &name) |
Creates a brand new Bone owned by this Skeleton. | |
Bone * | createBone (const String &name, unsigned short handle) |
Creates a brand new Bone owned by this Skeleton. | |
unsigned short | getNumBones (void) const |
Returns the number of bones in this skeleton. | |
Bone * | getRootBone (void) const |
Gets the root bone of the skeleton. | |
Bone * | getBone (unsigned short handle) const |
Gets a bone by it's handle. | |
Bone * | getBone (const String &name) const |
Gets a bone by it's name. | |
void | setBindingPose (void) |
Sets the current position / orientation to be the 'binding pose' ie the layout in which bones were originally bound to a mesh. | |
void | reset (void) |
Resets the position and orientation of all bones in this skeleton to their original binding position. | |
Animation * | createAnimation (const String &name, Real length) |
Creates a new Animation object for animating this skeleton. | |
Animation * | getAnimation (const String &name) const |
Returns the named Animation object. | |
void | removeAnimation (const String &name) |
Removes an Animation from this skeleton. | |
void | setAnimationState (const AnimationStateSet &animSet) |
Changes the state of the skeleton to reflect the application of the passed in collection of animations. | |
const AnimationStateSet & | getAnimationState (void) const |
Gets the last animation state of this skeleton. | |
void | _initAnimationState (AnimationStateSet *animSet) |
Initialise an animation set suitable for use with this mesh. | |
void | _getBoneMatrices (Matrix4 *pMatrices) |
Populates the passed in array with the bone matrices based on the current position. | |
unsigned short | getNumAnimations (void) const |
Gets the number of animations on this skeleton. | |
Animation * | getAnimation (unsigned short index) const |
Gets a single animation by index. | |
TagPoint * | createTagPoint (const Quaternion &offsetOrientation=Quaternion::IDENTITY, const Vector3 &offsetPosition=Vector3::UNIT_SCALE) |
Creates a TagPoint ready to be attached to a bone. | |
void | setCurrentEntity (Entity *pCurrentEntity) |
Sets the entity that is currently updating this skeleton. | |
Entity * | getCurrentEntity (void) |
Gets the entity that is currently updating this skeleton. | |
SkeletonAnimationBlendMode | getBlendMode () |
Gets the animation blending mode which this skeleton will use. | |
void | setBlendMode (SkeletonAnimationBlendMode state) |
Sets the animation blending mode this skeleton will use. | |
virtual size_t | getSize (void) const |
Retrieves info about the size of the resource. | |
virtual void | touch (void) |
'Touches' the resource to indicate it has been used. | |
time_t | getLastAccess (void) const |
Gets the last time the resource was 'touched'. | |
const String & | getName (void) const |
Gets resource name. | |
ResourceHandle | getHandle (void) const |
bool | isLoaded (void) const |
Returns true if the Resource has been loaded, false otherwise. | |
virtual void | destroy () |
A method to make the resource delete itself. | |
Protected Types | |
typedef std::map< unsigned short, Bone * > | BoneList |
Storage of bones, lookup by bone handle. | |
typedef std::map< String, Bone * > | BoneListByName |
Lookup by bone name. | |
typedef std::map< unsigned short, TagPoint * > | TagPointList |
Storage of tagPoints, lookup by handle. | |
typedef std::map< String, Animation * > | AnimationList |
Storage of animations, lookup by name. | |
Protected Methods | |
void | deriveRootBone (void) const |
Internal method which parses the bones to derive the root bone. | |
void | _dumpContents (const String &filename) |
Debugging method. | |
Protected Attributes | |
SkeletonAnimationBlendMode | mBlendState |
BoneList | mBoneList |
BoneListByName | mBoneListByName |
TagPointList | mTagPointList |
Entity * | mCurrentEntity |
Entity that is currently updating this skeleton. | |
Bone * | mRootBone |
Pointer to root bone (all others follow). | |
unsigned short | mNextAutoHandle |
Bone automatic handles. | |
unsigned short | mNextTagPointAutoHandle |
TagPoint automatic handles. | |
AnimationList | mAnimationsList |
AnimationStateSet | mLastAnimationState |
Saved version of last animation. | |
String | mName |
ResourceHandle | mHandle |
bool | mIsLoaded |
time_t | mLastAccess |
size_t | mSize |
So how does this animate a mesh? Well every vertex in a mesh is assigned to one or more bones which affects it's position when the bone is moved. If a vertex is assigned to more than one bone, then weights must be assigned to determine how much each bone affects the vertex (actually a weight of 1.0 is used for single bone assignments). Weighted vertex assignments are especially useful around the joints themselves to avoid 'pinching' of the mesh in this region.
Therefore by moving the skeleton using preset animations, we can animate the mesh. The advantage of using skeletal animation is that you store less animation data, especially as vertex counts increase. In addition, you are able to blend multiple animations together (e.g. walking and looking around, running and shooting) and provide smooth transitions between animations without incurring as much of an overhead as would be involved if you did this on the core vertex data.
Skeleton definitions are loaded from datafiles, namely the .skeleton file format. They are loaded on demand, especially when referenced by a Mesh.
Definition at line 72 of file OgreSkeleton.h.
|
Storage of animations, lookup by name.
Definition at line 277 of file OgreSkeleton.h. |
|
Storage of bones, lookup by bone handle.
Definition at line 255 of file OgreSkeleton.h. |
|
Lookup by bone name.
Definition at line 258 of file OgreSkeleton.h. |
|
Storage of tagPoints, lookup by handle.
Definition at line 262 of file OgreSkeleton.h. |
|
Constructor, don't call directly, use SkeletonManager.
Definition at line 43 of file OgreSkeleton.cpp. References Ogre::ANIMBLEND_AVERAGE, mBlendState, Ogre::Resource::mName, mNextAutoHandle, mNextTagPointAutoHandle, and mRootBone. |
|
Definition at line 58 of file OgreSkeleton.cpp. References unload(). |
|
Debugging method.
Definition at line 457 of file OgreSkeleton.cpp. References Ogre::AnimationTrack::getAssociatedNode(), Ogre::Bone::getHandle(), Ogre::AnimationTrack::getKeyFrame(), Ogre::Animation::getLength(), Ogre::Animation::getName(), Ogre::AnimationTrack::getNumKeyFrames(), Ogre::Animation::getNumTracks(), Ogre::Node::getOrientation(), Ogre::Node::getPosition(), Ogre::KeyFrame::getRotation(), Ogre::KeyFrame::getTime(), Ogre::Animation::getTrack(), Ogre::KeyFrame::getTranslate(), mAnimationsList, mBoneList, Ogre::Resource::mName, Ogre::of, Ogre::Real, and Ogre::Quaternion::ToAngleAxis(). |
|
Populates the passed in array with the bone matrices based on the current position.
Definition at line 360 of file OgreSkeleton.cpp. References Ogre::Bone::_getBindingPoseInverseTransform(), Ogre::Node::_getFullTransform(), Ogre::Node::_update(), getRootBone(), and mBoneList. Referenced by Ogre::Mesh::_getBoneMatrices(). |
|
Initialise an animation set suitable for use with this mesh.
Definition at line 341 of file OgreSkeleton.cpp. References Ogre::AnimationStateSet, Ogre::Animation::getLength(), Ogre::Animation::getName(), and mAnimationsList. Referenced by Ogre::Mesh::_initAnimationState(). |
|
Creates a new Animation object for animating this skeleton.
Definition at line 293 of file OgreSkeleton.cpp. References mAnimationsList, mLastAnimationState, and Ogre::Real. Referenced by Ogre::SkeletonSerializer::readAnimation(). |
|
Creates a brand new Bone owned by this Skeleton.
Definition at line 167 of file OgreSkeleton.cpp. References Except, mBoneList, mBoneListByName, and OGRE_MAX_NUM_BONES. |
|
Creates a brand new Bone owned by this Skeleton.
Definition at line 140 of file OgreSkeleton.cpp. References Except, Ogre::Bone::getHandle(), mBoneList, mBoneListByName, mNextAutoHandle, and OGRE_MAX_NUM_BONES. |
|
Creates a brand new Bone owned by this Skeleton.
Definition at line 153 of file OgreSkeleton.cpp. References Except, Ogre::Node::getName(), mBoneList, mBoneListByName, and OGRE_MAX_NUM_BONES. |
|
Creates a brand new Bone owned by this Skeleton.
Definition at line 134 of file OgreSkeleton.cpp. References mNextAutoHandle. Referenced by Ogre::Bone::createChild(), Ogre::Bone::createChildImpl(), and Ogre::SkeletonSerializer::readBone(). |
|
Creates a TagPoint ready to be attached to a bone.
Definition at line 180 of file OgreSkeleton.cpp. References mNextTagPointAutoHandle, mTagPointList, Ogre::Node::rotate(), Ogre::Bone::setBindingPose(), and Ogre::Node::translate(). Referenced by Ogre::Bone::createChildTagPoint(). |
|
Internal method which parses the bones to derive the root bone.
Definition at line 434 of file OgreSkeleton.cpp. References Except, Ogre::Node::getParent(), mBoneList, and mRootBone. Referenced by getRootBone(). |
|
A method to make the resource delete itself.
Definition at line 137 of file OgreResource.h. |
|
Gets a single animation by index.
Definition at line 393 of file OgreSkeleton.cpp. References mAnimationsList. |
|
Returns the named Animation object.
Definition at line 307 of file OgreSkeleton.cpp. References Except, and mAnimationsList. Referenced by Ogre::SkeletonSerializer::exportSkeleton(), and setAnimationState(). |
|
Gets the last animation state of this skeleton.
Definition at line 336 of file OgreSkeleton.cpp. References Ogre::AnimationStateSet, and mLastAnimationState. |
|
Gets the animation blending mode which this skeleton will use.
Definition at line 524 of file OgreSkeleton.cpp. References mBlendState, and Ogre::SkeletonAnimationBlendMode. |
|
Gets a bone by it's name.
Definition at line 420 of file OgreSkeleton.cpp. References Except, and mBoneListByName. |
|
Gets a bone by it's handle.
Definition at line 406 of file OgreSkeleton.cpp. References Except, and mBoneList. Referenced by Ogre::Entity::_updateRenderQueue(), Ogre::Entity::attachObjectToBone(), Ogre::SkeletonSerializer::readAnimationTrack(), Ogre::SkeletonSerializer::readBoneParent(), and Ogre::SkeletonSerializer::writeSkeleton(). |
|
Gets the entity that is currently updating this skeleton.
Definition at line 197 of file OgreSkeleton.cpp. References mCurrentEntity. Referenced by Ogre::TagPoint::_update(). |
|
Definition at line 120 of file OgreResource.h. References Ogre::ResourceHandle. Referenced by Ogre::Material::clone(), Ogre::BspLevel::loadQuake3Level(), and Ogre::ResourceManager::unload(). |
|
Gets the last time the resource was 'touched'.
Definition at line 108 of file OgreResource.h. |
|
|
Gets the number of animations on this skeleton.
Definition at line 388 of file OgreSkeleton.cpp. References mAnimationsList. Referenced by Ogre::SkeletonSerializer::exportSkeleton(). |
|
Returns the number of bones in this skeleton.
Definition at line 355 of file OgreSkeleton.cpp. References mBoneList. Referenced by Ogre::Mesh::_getNumBoneMatrices(), Ogre::Entity::_updateRenderQueue(), and Ogre::SkeletonSerializer::writeSkeleton(). |
|
Gets the root bone of the skeleton.
Definition at line 204 of file OgreSkeleton.cpp. References deriveRootBone(), and mRootBone. Referenced by _getBoneMatrices(), and setBindingPose(). |
|
Retrieves info about the size of the resource.
Definition at line 93 of file OgreResource.h. Referenced by Ogre::ResourceManager::unload(). |
|
Returns true if the Resource has been loaded, false otherwise.
Definition at line 127 of file OgreResource.h. Referenced by Ogre::GpuProgramUsage::_load(), Ogre::Technique::isLoaded(), Ogre::D3D9Texture::load(), Ogre::D3D9Texture::unload(), and Ogre::D3D9Texture::~D3D9Texture(). |
|
Generic load - called by SkeletonManager.
Implements Ogre::Resource. Definition at line 63 of file OgreSkeleton.cpp. References Ogre::DataChunk::clear(), Except, Ogre::SkeletonSerializer::importSkeleton(), Ogre::Resource::mIsLoaded, Ogre::Resource::mName, Ogre::String::split(), Ogre::String::toLowerCase(), and unload(). Referenced by Ogre::Mesh::setSkeletonName(). |
|
Removes an Animation from this skeleton.
Definition at line 320 of file OgreSkeleton.cpp. References Except, and mAnimationsList. |
|
Resets the position and orientation of all bones in this skeleton to their original binding position.
Definition at line 283 of file OgreSkeleton.cpp. References mBoneList. Referenced by setAnimationState(). |
|
Changes the state of the skeleton to reflect the application of the passed in collection of animations.
Definition at line 214 of file OgreSkeleton.cpp. References Ogre::AnimationStateSet, Ogre::ANIMBLEND_CUMULATIVE, Ogre::Animation::apply(), getAnimation(), Ogre::AnimationState::getAnimationName(), Ogre::AnimationState::getEnabled(), Ogre::AnimationState::getTimePosition(), Ogre::AnimationState::getWeight(), mBlendState, mLastAnimationState, and reset(). Referenced by Ogre::Mesh::_getBoneMatrices(). |
|
Sets the current position / orientation to be the 'binding pose' ie the layout in which bones were originally bound to a mesh.
Definition at line 270 of file OgreSkeleton.cpp. References Ogre::Node::_update(), getRootBone(), and mBoneList. Referenced by Ogre::SkeletonSerializer::importSkeleton(). |
|
Sets the animation blending mode this skeleton will use.
Definition at line 529 of file OgreSkeleton.cpp. References mBlendState, and Ogre::SkeletonAnimationBlendMode. |
|
Sets the entity that is currently updating this skeleton.
Definition at line 192 of file OgreSkeleton.cpp. References mCurrentEntity. Referenced by Ogre::Entity::cacheBoneMatrices(). |
|
'Touches' the resource to indicate it has been used.
Reimplemented in Ogre::Material. Definition at line 100 of file OgreResource.h. Referenced by Ogre::ResourceManager::load(). |
|
Generic unload - called by SkeletonManager.
Reimplemented from Ogre::Resource. Definition at line 104 of file OgreSkeleton.cpp. References mAnimationsList, mBoneList, Ogre::Resource::mIsLoaded, and mTagPointList. |
|
Definition at line 278 of file OgreSkeleton.h. Referenced by _dumpContents(), _initAnimationState(), createAnimation(), getAnimation(), getNumAnimations(), removeAnimation(), and unload(). |
|
Definition at line 253 of file OgreSkeleton.h. Referenced by getBlendMode(), setAnimationState(), setBlendMode(), and Skeleton(). |
|
Definition at line 256 of file OgreSkeleton.h. Referenced by _dumpContents(), _getBoneMatrices(), createBone(), deriveRootBone(), getBone(), getNumBones(), reset(), setBindingPose(), and unload(). |
|
Definition at line 259 of file OgreSkeleton.h. Referenced by createBone(), and getBone(). |
|
Entity that is currently updating this skeleton.
Definition at line 266 of file OgreSkeleton.h. Referenced by getCurrentEntity(), and setCurrentEntity(). |
|
Definition at line 57 of file OgreResource.h. Referenced by Ogre::ResourceManager::add(), Ogre::Material::clone(), Ogre::Material::copyDetailsTo(), and Ogre::Material::operator=(). |
|
|
Definition at line 59 of file OgreResource.h. Referenced by Ogre::Material::operator=(). |
|
Saved version of last animation.
Definition at line 282 of file OgreSkeleton.h. Referenced by createAnimation(), getAnimationState(), and setAnimationState(). |
|
|
Bone automatic handles.
Definition at line 271 of file OgreSkeleton.h. Referenced by createBone(), and Skeleton(). |
|
TagPoint automatic handles.
Definition at line 274 of file OgreSkeleton.h. Referenced by createTagPoint(), and Skeleton(). |
|
Pointer to root bone (all others follow).
Definition at line 269 of file OgreSkeleton.h. Referenced by deriveRootBone(), getRootBone(), and Skeleton(). |
|
Definition at line 60 of file OgreResource.h. Referenced by Ogre::D3D9Texture::_setFinalAttributes(), Ogre::D3DTexture::loadImage(), Ogre::D3DTexture::loadImage3D(), Ogre::GLTexture::loadImages(), and Ogre::Material::operator=(). |
|
Definition at line 263 of file OgreSkeleton.h. Referenced by createTagPoint(), and unload(). |
Copyright © 2002-2003 by The OGRE Team
Last modified Wed Jan 21 00:20:34 2004