\hypertarget{group___animation}{}\section{Animation}
\label{group___animation}\index{Animation@{Animation}}
\subsection*{Classes}
\begin{DoxyCompactItemize}
\item 
class \hyperlink{class_ogre_1_1_animable_object}{Ogre\+::\+Animable\+Object}
\begin{DoxyCompactList}\small\item\em Defines an interface to classes which have one or more \hyperlink{class_ogre_1_1_animable_value}{Animable\+Value} instances to expose. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_animable_value}{Ogre\+::\+Animable\+Value}
\begin{DoxyCompactList}\small\item\em Defines an object property which is animable, i.\+e. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_animation}{Ogre\+::\+Animation}
\begin{DoxyCompactList}\small\item\em An animation sequence. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_animation_container}{Ogre\+::\+Animation\+Container}
\begin{DoxyCompactList}\small\item\em An animation container interface, which allows generic access to sibling animations. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_animation_state}{Ogre\+::\+Animation\+State}
\begin{DoxyCompactList}\small\item\em Represents the state of an animation and the weight of its influence. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_animation_state_controller_value}{Ogre\+::\+Animation\+State\+Controller\+Value}
\begin{DoxyCompactList}\small\item\em \hyperlink{class_ogre_1_1_controller_value}{Controller\+Value} wrapper class for \hyperlink{class_ogre_1_1_animation_state}{Animation\+State}. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_animation_state_set}{Ogre\+::\+Animation\+State\+Set}
\begin{DoxyCompactList}\small\item\em Class encapsulating a set of \hyperlink{class_ogre_1_1_animation_state}{Animation\+State} objects. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_animation_track}{Ogre\+::\+Animation\+Track}
\begin{DoxyCompactList}\small\item\em A \textquotesingle{}track\textquotesingle{} in an animation sequence, i.\+e. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_bone}{Ogre\+::\+Bone}
\begin{DoxyCompactList}\small\item\em A bone in a skeleton. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_key_frame}{Ogre\+::\+Key\+Frame}
\begin{DoxyCompactList}\small\item\em A key frame in an animation sequence defined by an \hyperlink{class_ogre_1_1_animation_track}{Animation\+Track}. \end{DoxyCompactList}\item 
struct \hyperlink{struct_ogre_1_1_linked_skeleton_animation_source}{Ogre\+::\+Linked\+Skeleton\+Animation\+Source}
\begin{DoxyCompactList}\small\item\em Link to another skeleton to share animations. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_node_animation_track}{Ogre\+::\+Node\+Animation\+Track}
\begin{DoxyCompactList}\small\item\em Specialised \hyperlink{class_ogre_1_1_animation_track}{Animation\+Track} for dealing with node transforms. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_numeric_animation_track}{Ogre\+::\+Numeric\+Animation\+Track}
\begin{DoxyCompactList}\small\item\em Specialised \hyperlink{class_ogre_1_1_animation_track}{Animation\+Track} for dealing with generic animable values. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_numeric_key_frame}{Ogre\+::\+Numeric\+Key\+Frame}
\begin{DoxyCompactList}\small\item\em Specialised \hyperlink{class_ogre_1_1_key_frame}{Key\+Frame} which stores any numeric value. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_pose}{Ogre\+::\+Pose}
\begin{DoxyCompactList}\small\item\em A pose is a linked set of vertex offsets applying to one set of vertex data. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_skeleton}{Ogre\+::\+Skeleton}
\begin{DoxyCompactList}\small\item\em A collection of \hyperlink{class_ogre_1_1_bone}{Bone} objects used to animate a skinned mesh. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_skeleton_manager}{Ogre\+::\+Skeleton\+Manager}
\begin{DoxyCompactList}\small\item\em Handles the management of skeleton resources. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_skeleton_serializer}{Ogre\+::\+Skeleton\+Serializer}
\begin{DoxyCompactList}\small\item\em Class for serialising skeleton data to/from an O\+G\+RE .skeleton file. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_tag_point}{Ogre\+::\+Tag\+Point}
\begin{DoxyCompactList}\small\item\em A tagged point on a skeleton, which can be used to attach entities to on specific other entities. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_time_index}{Ogre\+::\+Time\+Index}
\begin{DoxyCompactList}\small\item\em Time index object used to search keyframe at the given position. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_transform_key_frame}{Ogre\+::\+Transform\+Key\+Frame}
\begin{DoxyCompactList}\small\item\em Specialised \hyperlink{class_ogre_1_1_key_frame}{Key\+Frame} which stores a full transform. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_vertex_animation_track}{Ogre\+::\+Vertex\+Animation\+Track}
\begin{DoxyCompactList}\small\item\em Specialised \hyperlink{class_ogre_1_1_animation_track}{Animation\+Track} for dealing with changing vertex position information. \end{DoxyCompactList}\item 
struct \hyperlink{struct_ogre_1_1_vertex_bone_assignment__s}{Ogre\+::\+Vertex\+Bone\+Assignment\+\_\+s}
\begin{DoxyCompactList}\small\item\em Records the assignment of a single vertex to a single bone with the corresponding weight. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_vertex_morph_key_frame}{Ogre\+::\+Vertex\+Morph\+Key\+Frame}
\begin{DoxyCompactList}\small\item\em Specialised \hyperlink{class_ogre_1_1_key_frame}{Key\+Frame} which stores absolute vertex positions for a complete buffer, designed to be interpolated with other keys in the same track. \end{DoxyCompactList}\item 
class \hyperlink{class_ogre_1_1_vertex_pose_key_frame}{Ogre\+::\+Vertex\+Pose\+Key\+Frame}
\begin{DoxyCompactList}\small\item\em Specialised \hyperlink{class_ogre_1_1_key_frame}{Key\+Frame} which references a Mesh\+::\+Pose at a certain influence level, which stores offsets for a subset of the vertices in a buffer to provide a blendable pose. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \hyperlink{group___animation_ga4393e2afffe021cb323b896779de3d17}{O\+G\+R\+E\+\_\+\+M\+A\+X\+\_\+\+N\+U\+M\+\_\+\+B\+O\+N\+ES}~256
\end{DoxyCompactItemize}
\subsection*{Typedefs}
\begin{DoxyCompactItemize}
\item 
typedef \hyperlink{class_ogre_1_1_map_iterator}{Map\+Iterator}$<$ \hyperlink{group___animation_ga8d88c1f65ad1d1bff16764d738e4cc55}{Animation\+State\+Map} $>$ \hyperlink{group___animation_gac427736c80940f4469fe0f4ac1694f67}{Ogre\+::\+Animation\+State\+Iterator}
\item 
typedef std\+::map$<$ \hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String}, \hyperlink{class_ogre_1_1_animation_state}{Animation\+State} $\ast$ $>$ \hyperlink{group___animation_ga8d88c1f65ad1d1bff16764d738e4cc55}{Ogre\+::\+Animation\+State\+Map}
\item 
typedef \hyperlink{class_ogre_1_1_const_map_iterator}{Const\+Map\+Iterator}$<$ \hyperlink{group___animation_ga8d88c1f65ad1d1bff16764d738e4cc55}{Animation\+State\+Map} $>$ \hyperlink{group___animation_gaad9cc8241f80d9d8fb4f112409de792f}{Ogre\+::\+Const\+Animation\+State\+Iterator}
\item 
typedef \hyperlink{class_ogre_1_1_const_vector_iterator}{Const\+Vector\+Iterator}$<$ \hyperlink{group___animation_ga6f881141254ff23343b18f2c053b7941}{Enabled\+Animation\+State\+List} $>$ \hyperlink{group___animation_ga7bc761681d8c97c449763d8b77dcedf8}{Ogre\+::\+Const\+Enabled\+Animation\+State\+Iterator}
\item 
typedef std\+::list$<$ \hyperlink{class_ogre_1_1_animation_state}{Animation\+State} $\ast$ $>$ \hyperlink{group___animation_ga6f881141254ff23343b18f2c053b7941}{Ogre\+::\+Enabled\+Animation\+State\+List}
\item 
typedef std\+::vector$<$ \hyperlink{class_ogre_1_1_pose}{Pose} $\ast$ $>$ \hyperlink{group___animation_ga8f03b49c53cbcc1d22f4ef3abfb5b1eb}{Ogre\+::\+Pose\+List}
\item 
typedef struct \hyperlink{struct_ogre_1_1_vertex_bone_assignment__s}{Ogre\+::\+Vertex\+Bone\+Assignment\+\_\+s} \hyperlink{group___animation_gaf7318ddaeea193a759de6349554ec3a4}{Ogre\+::\+Vertex\+Bone\+Assignment}
\begin{DoxyCompactList}\small\item\em Records the assignment of a single vertex to a single bone with the corresponding weight. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Enumerations}
\begin{DoxyCompactItemize}
\item 
enum \hyperlink{group___animation_ga230b218164ffe5e6ee8970bef57e6abd}{Ogre\+::\+Skeleton\+Animation\+Blend\+Mode} \{ \hyperlink{group___animation_gga230b218164ffe5e6ee8970bef57e6abda4d13dab20a3642f5fc20cf2bec22c2c3}{Ogre\+::\+A\+N\+I\+M\+B\+L\+E\+N\+D\+\_\+\+A\+V\+E\+R\+A\+GE} = 0, 
\hyperlink{group___animation_gga230b218164ffe5e6ee8970bef57e6abda5628f84206e4555c948422d2e62b7793}{Ogre\+::\+A\+N\+I\+M\+B\+L\+E\+N\+D\+\_\+\+C\+U\+M\+U\+L\+A\+T\+I\+VE} = 1
 \}
\item 
enum \hyperlink{group___animation_ga5b37bdf2f67384dbd81643164545f7bd}{Ogre\+::\+Skeleton\+Chunk\+ID} \{ \newline
\hyperlink{group___animation_gga5b37bdf2f67384dbd81643164545f7bda7ed2511945645204fe9f7423e32aea49}{Ogre\+::\+S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+H\+E\+A\+D\+ER} = 0x1000, 
\hyperlink{group___animation_gga5b37bdf2f67384dbd81643164545f7bdad777591f3958da3716318eb820bbcab8}{Ogre\+::\+S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+L\+E\+N\+D\+M\+O\+DE} = 0x1010, 
\hyperlink{group___animation_gga5b37bdf2f67384dbd81643164545f7bdaacf798731cab07af608a45eb331faa01}{Ogre\+::\+S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+O\+NE} = 0x2000, 
\hyperlink{group___animation_gga5b37bdf2f67384dbd81643164545f7bda60d951d9cd1e76668758a78eaa75e3af}{Ogre\+::\+S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+O\+N\+E\+\_\+\+P\+A\+R\+E\+NT} = 0x3000, 
\newline
\hyperlink{group___animation_gga5b37bdf2f67384dbd81643164545f7bdaa559ee7367718e8c9ffdfd1af83c9ca8}{Ogre\+::\+S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+ON} = 0x4000, 
\hyperlink{group___animation_gga5b37bdf2f67384dbd81643164545f7bdaedacebfaa34fe1ed9b95efb6210e13e1}{Ogre\+::\+S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+B\+A\+S\+E\+I\+N\+FO} = 0x4010, 
\hyperlink{group___animation_gga5b37bdf2f67384dbd81643164545f7bda691013153a33fde3a543deed39382c20}{Ogre\+::\+S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+T\+R\+A\+CK} = 0x4100, 
\hyperlink{group___animation_gga5b37bdf2f67384dbd81643164545f7bdaebf5354fd4093986740b6f7a0b9c998e}{Ogre\+::\+S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+T\+R\+A\+C\+K\+\_\+\+K\+E\+Y\+F\+R\+A\+ME} = 0x4110, 
\newline
\hyperlink{group___animation_gga5b37bdf2f67384dbd81643164545f7bda869ed880064984ab52e95a922efec6cd}{Ogre\+::\+S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+L\+I\+NK} = 0x5000
 \}\begin{DoxyCompactList}\small\item\em Definition of the O\+G\+RE .skeleton file format. \end{DoxyCompactList}
\item 
enum \hyperlink{group___animation_ga9046e6e0d12c46c57a9056987e9d158e}{Ogre\+::\+Vertex\+Animation\+Type} \{ \hyperlink{group___animation_gga9046e6e0d12c46c57a9056987e9d158eab1a15dd49cf588c9b4d29e96511dc91a}{Ogre\+::\+V\+A\+T\+\_\+\+N\+O\+NE} = 0, 
\hyperlink{group___animation_gga9046e6e0d12c46c57a9056987e9d158ea16f039e4ae5cfb19ecd7cd41be4f93cd}{Ogre\+::\+V\+A\+T\+\_\+\+M\+O\+R\+PH} = 1, 
\hyperlink{group___animation_gga9046e6e0d12c46c57a9056987e9d158ea66715a5b810eee81efa1d964700b3d30}{Ogre\+::\+V\+A\+T\+\_\+\+P\+O\+SE} = 2
 \}\begin{DoxyCompactList}\small\item\em Type of vertex animation. \end{DoxyCompactList}
\end{DoxyCompactItemize}


\subsection{Detailed Description}


\subsection{Macro Definition Documentation}
\mbox{\Hypertarget{group___animation_ga4393e2afffe021cb323b896779de3d17}\label{group___animation_ga4393e2afffe021cb323b896779de3d17}} 
\index{Animation@{Animation}!O\+G\+R\+E\+\_\+\+M\+A\+X\+\_\+\+N\+U\+M\+\_\+\+B\+O\+N\+ES@{O\+G\+R\+E\+\_\+\+M\+A\+X\+\_\+\+N\+U\+M\+\_\+\+B\+O\+N\+ES}}
\index{O\+G\+R\+E\+\_\+\+M\+A\+X\+\_\+\+N\+U\+M\+\_\+\+B\+O\+N\+ES@{O\+G\+R\+E\+\_\+\+M\+A\+X\+\_\+\+N\+U\+M\+\_\+\+B\+O\+N\+ES}!Animation@{Animation}}
\subsubsection{\texorpdfstring{O\+G\+R\+E\+\_\+\+M\+A\+X\+\_\+\+N\+U\+M\+\_\+\+B\+O\+N\+ES}{OGRE\_MAX\_NUM\_BONES}}
{\footnotesize\ttfamily \#define O\+G\+R\+E\+\_\+\+M\+A\+X\+\_\+\+N\+U\+M\+\_\+\+B\+O\+N\+ES~256}



\subsection{Typedef Documentation}
\mbox{\Hypertarget{group___animation_ga8d88c1f65ad1d1bff16764d738e4cc55}\label{group___animation_ga8d88c1f65ad1d1bff16764d738e4cc55}} 
\index{Animation@{Animation}!Animation\+State\+Map@{Animation\+State\+Map}}
\index{Animation\+State\+Map@{Animation\+State\+Map}!Animation@{Animation}}
\subsubsection{\texorpdfstring{Animation\+State\+Map}{AnimationStateMap}}
{\footnotesize\ttfamily typedef std\+::map$<$\hyperlink{namespace_ogre_af73bbdc8bed8a3e6fcd56bb8fa188c45}{String}, \hyperlink{class_ogre_1_1_animation_state}{Animation\+State}$\ast$$>$ \hyperlink{group___animation_ga8d88c1f65ad1d1bff16764d738e4cc55}{Ogre\+::\+Animation\+State\+Map}}

\mbox{\Hypertarget{group___animation_gac427736c80940f4469fe0f4ac1694f67}\label{group___animation_gac427736c80940f4469fe0f4ac1694f67}} 
\index{Animation@{Animation}!Animation\+State\+Iterator@{Animation\+State\+Iterator}}
\index{Animation\+State\+Iterator@{Animation\+State\+Iterator}!Animation@{Animation}}
\subsubsection{\texorpdfstring{Animation\+State\+Iterator}{AnimationStateIterator}}
{\footnotesize\ttfamily typedef \hyperlink{class_ogre_1_1_map_iterator}{Map\+Iterator}$<$\hyperlink{group___animation_ga8d88c1f65ad1d1bff16764d738e4cc55}{Animation\+State\+Map}$>$ \hyperlink{group___animation_gac427736c80940f4469fe0f4ac1694f67}{Ogre\+::\+Animation\+State\+Iterator}}

\mbox{\Hypertarget{group___animation_gaad9cc8241f80d9d8fb4f112409de792f}\label{group___animation_gaad9cc8241f80d9d8fb4f112409de792f}} 
\index{Animation@{Animation}!Const\+Animation\+State\+Iterator@{Const\+Animation\+State\+Iterator}}
\index{Const\+Animation\+State\+Iterator@{Const\+Animation\+State\+Iterator}!Animation@{Animation}}
\subsubsection{\texorpdfstring{Const\+Animation\+State\+Iterator}{ConstAnimationStateIterator}}
{\footnotesize\ttfamily typedef \hyperlink{class_ogre_1_1_const_map_iterator}{Const\+Map\+Iterator}$<$\hyperlink{group___animation_ga8d88c1f65ad1d1bff16764d738e4cc55}{Animation\+State\+Map}$>$ \hyperlink{group___animation_gaad9cc8241f80d9d8fb4f112409de792f}{Ogre\+::\+Const\+Animation\+State\+Iterator}}

\mbox{\Hypertarget{group___animation_ga6f881141254ff23343b18f2c053b7941}\label{group___animation_ga6f881141254ff23343b18f2c053b7941}} 
\index{Animation@{Animation}!Enabled\+Animation\+State\+List@{Enabled\+Animation\+State\+List}}
\index{Enabled\+Animation\+State\+List@{Enabled\+Animation\+State\+List}!Animation@{Animation}}
\subsubsection{\texorpdfstring{Enabled\+Animation\+State\+List}{EnabledAnimationStateList}}
{\footnotesize\ttfamily typedef std\+::list$<$\hyperlink{class_ogre_1_1_animation_state}{Animation\+State}$\ast$$>$ \hyperlink{group___animation_ga6f881141254ff23343b18f2c053b7941}{Ogre\+::\+Enabled\+Animation\+State\+List}}

\mbox{\Hypertarget{group___animation_ga7bc761681d8c97c449763d8b77dcedf8}\label{group___animation_ga7bc761681d8c97c449763d8b77dcedf8}} 
\index{Animation@{Animation}!Const\+Enabled\+Animation\+State\+Iterator@{Const\+Enabled\+Animation\+State\+Iterator}}
\index{Const\+Enabled\+Animation\+State\+Iterator@{Const\+Enabled\+Animation\+State\+Iterator}!Animation@{Animation}}
\subsubsection{\texorpdfstring{Const\+Enabled\+Animation\+State\+Iterator}{ConstEnabledAnimationStateIterator}}
{\footnotesize\ttfamily typedef \hyperlink{class_ogre_1_1_const_vector_iterator}{Const\+Vector\+Iterator}$<$\hyperlink{group___animation_ga6f881141254ff23343b18f2c053b7941}{Enabled\+Animation\+State\+List}$>$ \hyperlink{group___animation_ga7bc761681d8c97c449763d8b77dcedf8}{Ogre\+::\+Const\+Enabled\+Animation\+State\+Iterator}}

\mbox{\Hypertarget{group___animation_ga8f03b49c53cbcc1d22f4ef3abfb5b1eb}\label{group___animation_ga8f03b49c53cbcc1d22f4ef3abfb5b1eb}} 
\index{Animation@{Animation}!Pose\+List@{Pose\+List}}
\index{Pose\+List@{Pose\+List}!Animation@{Animation}}
\subsubsection{\texorpdfstring{Pose\+List}{PoseList}}
{\footnotesize\ttfamily typedef std\+::vector$<$\hyperlink{class_ogre_1_1_pose}{Pose}$\ast$$>$ \hyperlink{group___animation_ga8f03b49c53cbcc1d22f4ef3abfb5b1eb}{Ogre\+::\+Pose\+List}}

\mbox{\Hypertarget{group___animation_gaf7318ddaeea193a759de6349554ec3a4}\label{group___animation_gaf7318ddaeea193a759de6349554ec3a4}} 
\index{Animation@{Animation}!Vertex\+Bone\+Assignment@{Vertex\+Bone\+Assignment}}
\index{Vertex\+Bone\+Assignment@{Vertex\+Bone\+Assignment}!Animation@{Animation}}
\subsubsection{\texorpdfstring{Vertex\+Bone\+Assignment}{VertexBoneAssignment}}
{\footnotesize\ttfamily typedef struct \hyperlink{struct_ogre_1_1_vertex_bone_assignment__s}{Ogre\+::\+Vertex\+Bone\+Assignment\+\_\+s}  \hyperlink{group___animation_gaf7318ddaeea193a759de6349554ec3a4}{Ogre\+::\+Vertex\+Bone\+Assignment}}



Records the assignment of a single vertex to a single bone with the corresponding weight. 

\begin{DoxyRemark}{Remarks}
This simple struct simply holds a vertex index, bone index and weight representing the assignment of a vertex to a bone for skeletal animation. There may be many of these per vertex if blended vertex assignments are allowed. 
\end{DoxyRemark}


\subsection{Enumeration Type Documentation}
\mbox{\Hypertarget{group___animation_ga9046e6e0d12c46c57a9056987e9d158e}\label{group___animation_ga9046e6e0d12c46c57a9056987e9d158e}} 
\index{Animation@{Animation}!Vertex\+Animation\+Type@{Vertex\+Animation\+Type}}
\index{Vertex\+Animation\+Type@{Vertex\+Animation\+Type}!Animation@{Animation}}
\subsubsection{\texorpdfstring{Vertex\+Animation\+Type}{VertexAnimationType}}
{\footnotesize\ttfamily enum \hyperlink{group___animation_ga9046e6e0d12c46c57a9056987e9d158e}{Ogre\+::\+Vertex\+Animation\+Type}}



Type of vertex animation. 

Vertex animation comes in 2 types, morph and pose. The reason for the 2 types is that we have 2 different potential goals -\/ to encapsulate a complete, flowing morph animation with multiple keyframes (a typical animation, but implemented by having snapshots of the vertex data at each keyframe), or to represent a single pose change, for example a facial expression. Whilst both could in fact be implemented using the same system, we choose to separate them since the requirements and limitations of each are quite different. \begin{DoxyParagraph}{}
Morph animation is a simple approach where we have a whole series of snapshots of vertex data which must be interpolated, e.\+g. a running animation implemented as morph targets. Because this is based on simple snapshots, it\textquotesingle{}s quite fast to use when animating an entire mesh because it\textquotesingle{}s a simple linear change between keyframes. However, this simplistic approach does not support blending between multiple morph animations. If you need animation blending, you are advised to use skeletal animation for full-\/mesh animation, and pose animation for animation of subsets of meshes or where skeletal animation doesn\textquotesingle{}t fit -\/ for example facial animation. For animating in a vertex shader, morph animation is quite simple and just requires the 2 vertex buffers (one the original position buffer) of absolute position data, and an interpolation factor. Each track in a morph animation references a unique set of vertex data. 
\end{DoxyParagraph}
\begin{DoxyParagraph}{}
\hyperlink{class_ogre_1_1_pose}{Pose} animation is more complex. Like morph animation each track references a single unique set of vertex data, but unlike morph animation, each keyframe references 1 or more \textquotesingle{}poses\textquotesingle{}, each with an influence level. A pose is a series of offsets to the base vertex data, and may be sparse -\/ ie it may not reference every vertex. Because they\textquotesingle{}re offsets, they can be blended -\/ both within a track and between animations. This set of features is very well suited to facial animation. 
\end{DoxyParagraph}
\begin{DoxyParagraph}{}
For example, let\textquotesingle{}s say you modelled a face (one set of vertex data), and defined a set of poses which represented the various phonetic positions of the face. You could then define an animation called \textquotesingle{}Say\+Hello\textquotesingle{}, containing a single track which referenced the face vertex data, and which included a series of keyframes, each of which referenced one or more of the facial positions at different influence levels -\/ the combination of which over time made the face form the shapes required to say the word \textquotesingle{}hello\textquotesingle{}. Since the poses are only stored once, but can be referenced may times in many animations, this is a very powerful way to build up a speech system. 
\end{DoxyParagraph}
\begin{DoxyParagraph}{}
The downside of pose animation is that it can be more difficult to set up. Also, since it uses more buffers (one for the base data, and one for each active pose), if you\textquotesingle{}re animating in hardware using vertex shaders you need to keep an eye on how many poses you\textquotesingle{}re blending at once. You define a maximum supported number in your vertex program definition, see the includes\+\_\+pose\+\_\+animation material script entry. 
\end{DoxyParagraph}
\begin{DoxyParagraph}{}
So, by partitioning the vertex animation approaches into 2, we keep the simple morph technique easy to use, whilst still allowing all the powerful techniques to be used. Note that morph animation cannot be blended with other types of vertex animation (pose animation or other morph animation); pose animation can be blended with other pose animation though, and both types can be combined with skeletal animation. Also note that all morph animation can be expressed as pose animation, but not vice versa. 
\end{DoxyParagraph}
\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{V\+A\+T\+\_\+\+N\+O\+NE@{V\+A\+T\+\_\+\+N\+O\+NE}!Animation@{Animation}}\index{Animation@{Animation}!V\+A\+T\+\_\+\+N\+O\+NE@{V\+A\+T\+\_\+\+N\+O\+NE}}}\mbox{\Hypertarget{group___animation_gga9046e6e0d12c46c57a9056987e9d158eab1a15dd49cf588c9b4d29e96511dc91a}\label{group___animation_gga9046e6e0d12c46c57a9056987e9d158eab1a15dd49cf588c9b4d29e96511dc91a}} 
V\+A\+T\+\_\+\+N\+O\+NE&No animation. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{V\+A\+T\+\_\+\+M\+O\+R\+PH@{V\+A\+T\+\_\+\+M\+O\+R\+PH}!Animation@{Animation}}\index{Animation@{Animation}!V\+A\+T\+\_\+\+M\+O\+R\+PH@{V\+A\+T\+\_\+\+M\+O\+R\+PH}}}\mbox{\Hypertarget{group___animation_gga9046e6e0d12c46c57a9056987e9d158ea16f039e4ae5cfb19ecd7cd41be4f93cd}\label{group___animation_gga9046e6e0d12c46c57a9056987e9d158ea16f039e4ae5cfb19ecd7cd41be4f93cd}} 
V\+A\+T\+\_\+\+M\+O\+R\+PH&Morph animation is made up of many interpolated snapshot keyframes. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{V\+A\+T\+\_\+\+P\+O\+SE@{V\+A\+T\+\_\+\+P\+O\+SE}!Animation@{Animation}}\index{Animation@{Animation}!V\+A\+T\+\_\+\+P\+O\+SE@{V\+A\+T\+\_\+\+P\+O\+SE}}}\mbox{\Hypertarget{group___animation_gga9046e6e0d12c46c57a9056987e9d158ea66715a5b810eee81efa1d964700b3d30}\label{group___animation_gga9046e6e0d12c46c57a9056987e9d158ea66715a5b810eee81efa1d964700b3d30}} 
V\+A\+T\+\_\+\+P\+O\+SE&\hyperlink{class_ogre_1_1_pose}{Pose} animation is made up of a single delta pose keyframe. \\
\hline

\end{DoxyEnumFields}
\mbox{\Hypertarget{group___animation_ga230b218164ffe5e6ee8970bef57e6abd}\label{group___animation_ga230b218164ffe5e6ee8970bef57e6abd}} 
\index{Animation@{Animation}!Skeleton\+Animation\+Blend\+Mode@{Skeleton\+Animation\+Blend\+Mode}}
\index{Skeleton\+Animation\+Blend\+Mode@{Skeleton\+Animation\+Blend\+Mode}!Animation@{Animation}}
\subsubsection{\texorpdfstring{Skeleton\+Animation\+Blend\+Mode}{SkeletonAnimationBlendMode}}
{\footnotesize\ttfamily enum \hyperlink{group___animation_ga230b218164ffe5e6ee8970bef57e6abd}{Ogre\+::\+Skeleton\+Animation\+Blend\+Mode}}

\begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{A\+N\+I\+M\+B\+L\+E\+N\+D\+\_\+\+A\+V\+E\+R\+A\+GE@{A\+N\+I\+M\+B\+L\+E\+N\+D\+\_\+\+A\+V\+E\+R\+A\+GE}!Animation@{Animation}}\index{Animation@{Animation}!A\+N\+I\+M\+B\+L\+E\+N\+D\+\_\+\+A\+V\+E\+R\+A\+GE@{A\+N\+I\+M\+B\+L\+E\+N\+D\+\_\+\+A\+V\+E\+R\+A\+GE}}}\mbox{\Hypertarget{group___animation_gga230b218164ffe5e6ee8970bef57e6abda4d13dab20a3642f5fc20cf2bec22c2c3}\label{group___animation_gga230b218164ffe5e6ee8970bef57e6abda4d13dab20a3642f5fc20cf2bec22c2c3}} 
A\+N\+I\+M\+B\+L\+E\+N\+D\+\_\+\+A\+V\+E\+R\+A\+GE&Animations are applied by calculating a weighted average of all animations. \\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{A\+N\+I\+M\+B\+L\+E\+N\+D\+\_\+\+C\+U\+M\+U\+L\+A\+T\+I\+VE@{A\+N\+I\+M\+B\+L\+E\+N\+D\+\_\+\+C\+U\+M\+U\+L\+A\+T\+I\+VE}!Animation@{Animation}}\index{Animation@{Animation}!A\+N\+I\+M\+B\+L\+E\+N\+D\+\_\+\+C\+U\+M\+U\+L\+A\+T\+I\+VE@{A\+N\+I\+M\+B\+L\+E\+N\+D\+\_\+\+C\+U\+M\+U\+L\+A\+T\+I\+VE}}}\mbox{\Hypertarget{group___animation_gga230b218164ffe5e6ee8970bef57e6abda5628f84206e4555c948422d2e62b7793}\label{group___animation_gga230b218164ffe5e6ee8970bef57e6abda5628f84206e4555c948422d2e62b7793}} 
A\+N\+I\+M\+B\+L\+E\+N\+D\+\_\+\+C\+U\+M\+U\+L\+A\+T\+I\+VE&Animations are applied by calculating a weighted cumulative total. \\
\hline

\end{DoxyEnumFields}
\mbox{\Hypertarget{group___animation_ga5b37bdf2f67384dbd81643164545f7bd}\label{group___animation_ga5b37bdf2f67384dbd81643164545f7bd}} 
\index{Animation@{Animation}!Skeleton\+Chunk\+ID@{Skeleton\+Chunk\+ID}}
\index{Skeleton\+Chunk\+ID@{Skeleton\+Chunk\+ID}!Animation@{Animation}}
\subsubsection{\texorpdfstring{Skeleton\+Chunk\+ID}{SkeletonChunkID}}
{\footnotesize\ttfamily enum \hyperlink{group___animation_ga5b37bdf2f67384dbd81643164545f7bd}{Ogre\+::\+Skeleton\+Chunk\+ID}}



Definition of the O\+G\+RE .skeleton file format. 

.skeleton files are binary files (for read efficiency at runtime) and are arranged into chunks of data, very like 3D Studio\textquotesingle{}s format. A chunk always consists of\+: unsigned short C\+H\+U\+N\+K\+\_\+\+ID \+: one of the following chunk ids identifying the chunk unsigned long L\+E\+N\+G\+TH \+: length of the chunk in bytes, including this header void$\ast$ D\+A\+TA \+: the data, which may contain other sub-\/chunks (various data types)

A .skeleton file contains both the definition of the \hyperlink{class_ogre_1_1_skeleton}{Skeleton} object and the animations it contains. It contains only a single skeleton but can contain multiple animations. \begin{DoxyEnumFields}{Enumerator}
\raisebox{\heightof{T}}[0pt][0pt]{\index{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+H\+E\+A\+D\+ER@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+H\+E\+A\+D\+ER}!Animation@{Animation}}\index{Animation@{Animation}!S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+H\+E\+A\+D\+ER@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+H\+E\+A\+D\+ER}}}\mbox{\Hypertarget{group___animation_gga5b37bdf2f67384dbd81643164545f7bda7ed2511945645204fe9f7423e32aea49}\label{group___animation_gga5b37bdf2f67384dbd81643164545f7bda7ed2511945645204fe9f7423e32aea49}} 
S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+H\+E\+A\+D\+ER&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+L\+E\+N\+D\+M\+O\+DE@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+L\+E\+N\+D\+M\+O\+DE}!Animation@{Animation}}\index{Animation@{Animation}!S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+L\+E\+N\+D\+M\+O\+DE@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+L\+E\+N\+D\+M\+O\+DE}}}\mbox{\Hypertarget{group___animation_gga5b37bdf2f67384dbd81643164545f7bdad777591f3958da3716318eb820bbcab8}\label{group___animation_gga5b37bdf2f67384dbd81643164545f7bdad777591f3958da3716318eb820bbcab8}} 
S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+L\+E\+N\+D\+M\+O\+DE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+O\+NE@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+O\+NE}!Animation@{Animation}}\index{Animation@{Animation}!S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+O\+NE@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+O\+NE}}}\mbox{\Hypertarget{group___animation_gga5b37bdf2f67384dbd81643164545f7bdaacf798731cab07af608a45eb331faa01}\label{group___animation_gga5b37bdf2f67384dbd81643164545f7bdaacf798731cab07af608a45eb331faa01}} 
S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+O\+NE&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+O\+N\+E\+\_\+\+P\+A\+R\+E\+NT@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+O\+N\+E\+\_\+\+P\+A\+R\+E\+NT}!Animation@{Animation}}\index{Animation@{Animation}!S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+O\+N\+E\+\_\+\+P\+A\+R\+E\+NT@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+O\+N\+E\+\_\+\+P\+A\+R\+E\+NT}}}\mbox{\Hypertarget{group___animation_gga5b37bdf2f67384dbd81643164545f7bda60d951d9cd1e76668758a78eaa75e3af}\label{group___animation_gga5b37bdf2f67384dbd81643164545f7bda60d951d9cd1e76668758a78eaa75e3af}} 
S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+B\+O\+N\+E\+\_\+\+P\+A\+R\+E\+NT&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+ON@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+ON}!Animation@{Animation}}\index{Animation@{Animation}!S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+ON@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+ON}}}\mbox{\Hypertarget{group___animation_gga5b37bdf2f67384dbd81643164545f7bdaa559ee7367718e8c9ffdfd1af83c9ca8}\label{group___animation_gga5b37bdf2f67384dbd81643164545f7bdaa559ee7367718e8c9ffdfd1af83c9ca8}} 
S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+ON&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+B\+A\+S\+E\+I\+N\+FO@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+B\+A\+S\+E\+I\+N\+FO}!Animation@{Animation}}\index{Animation@{Animation}!S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+B\+A\+S\+E\+I\+N\+FO@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+B\+A\+S\+E\+I\+N\+FO}}}\mbox{\Hypertarget{group___animation_gga5b37bdf2f67384dbd81643164545f7bdaedacebfaa34fe1ed9b95efb6210e13e1}\label{group___animation_gga5b37bdf2f67384dbd81643164545f7bdaedacebfaa34fe1ed9b95efb6210e13e1}} 
S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+B\+A\+S\+E\+I\+N\+FO&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+T\+R\+A\+CK@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+T\+R\+A\+CK}!Animation@{Animation}}\index{Animation@{Animation}!S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+T\+R\+A\+CK@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+T\+R\+A\+CK}}}\mbox{\Hypertarget{group___animation_gga5b37bdf2f67384dbd81643164545f7bda691013153a33fde3a543deed39382c20}\label{group___animation_gga5b37bdf2f67384dbd81643164545f7bda691013153a33fde3a543deed39382c20}} 
S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+T\+R\+A\+CK&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+T\+R\+A\+C\+K\+\_\+\+K\+E\+Y\+F\+R\+A\+ME@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+T\+R\+A\+C\+K\+\_\+\+K\+E\+Y\+F\+R\+A\+ME}!Animation@{Animation}}\index{Animation@{Animation}!S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+T\+R\+A\+C\+K\+\_\+\+K\+E\+Y\+F\+R\+A\+ME@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+T\+R\+A\+C\+K\+\_\+\+K\+E\+Y\+F\+R\+A\+ME}}}\mbox{\Hypertarget{group___animation_gga5b37bdf2f67384dbd81643164545f7bdaebf5354fd4093986740b6f7a0b9c998e}\label{group___animation_gga5b37bdf2f67384dbd81643164545f7bdaebf5354fd4093986740b6f7a0b9c998e}} 
S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+T\+R\+A\+C\+K\+\_\+\+K\+E\+Y\+F\+R\+A\+ME&\\
\hline

\raisebox{\heightof{T}}[0pt][0pt]{\index{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+L\+I\+NK@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+L\+I\+NK}!Animation@{Animation}}\index{Animation@{Animation}!S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+L\+I\+NK@{S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+L\+I\+NK}}}\mbox{\Hypertarget{group___animation_gga5b37bdf2f67384dbd81643164545f7bda869ed880064984ab52e95a922efec6cd}\label{group___animation_gga5b37bdf2f67384dbd81643164545f7bda869ed880064984ab52e95a922efec6cd}} 
S\+K\+E\+L\+E\+T\+O\+N\+\_\+\+A\+N\+I\+M\+A\+T\+I\+O\+N\+\_\+\+L\+I\+NK&\\
\hline

\end{DoxyEnumFields}
