\hypertarget{a01191}{\section{Skeleton\+Transform Class Reference}
\label{a01191}\index{Skeleton\+Transform@{Skeleton\+Transform}}
}


Skeleton transformation class.  




{\ttfamily \#include $<$Object\+Types/\+Skeleton/\+Helper/\+Skeleton\+Transform.\+hh$>$}

\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01191_aa1ea9b658060d1601a6c66ba0083b2ea}{\hyperlink{a01191_aa1ea9b658060d1601a6c66ba0083b2ea}{Skeleton\+Transform} (\hyperlink{a02397_a4af323aafce89e30343e1ab2b469c688}{Skeleton} \&\+\_\+skeleton)}\label{a01191_aa1ea9b658060d1601a6c66ba0083b2ea}

\begin{DoxyCompactList}\small\item\em Le constructeur. \end{DoxyCompactList}\item 
void \hyperlink{a01191_a02ece88c37db6b77b1b6e5c75386aa81}{scale\+Skeleton} (double \+\_\+factor, \hyperlink{a00996}{Skeleton\+::\+Pose} $\ast$\+\_\+pose=0)
\begin{DoxyCompactList}\small\item\em scale all bones of the skeleton by the given factor \end{DoxyCompactList}\item 
void \hyperlink{a01191_ac4986328c5f53f17ffd422e3e6c11c7f}{translate\+Skeleton} (\hyperlink{a03336_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d} \+\_\+translation, \hyperlink{a00996}{Skeleton\+::\+Pose} $\ast$\+\_\+pose=0)
\begin{DoxyCompactList}\small\item\em translate the skeleton \end{DoxyCompactList}\item 
void \hyperlink{a01191_ae6c7b721b7b66554a44186c45ae6f076}{transform\+Skeleton} (\hyperlink{a02488_a2c834138d15bf416d68149d639c97ed8}{Matrix4x4} \+\_\+transformation, \hyperlink{a00996}{Skeleton\+::\+Pose} $\ast$\+\_\+pose=0)
\begin{DoxyCompactList}\small\item\em transform the skeleton \end{DoxyCompactList}\item 
void \hyperlink{a01191_a8f4884231ded887215c180c158a6fbf4}{translate\+Joint} (\hyperlink{a00751}{Skeleton\+::\+Joint} $\ast$\+\_\+joint, \hyperlink{a03336_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d} \+\_\+translation, bool \+\_\+keep\+Child\+Positions=true)
\begin{DoxyCompactList}\small\item\em apply a translation to a joint in the ref\+Pose \end{DoxyCompactList}\item 
void \hyperlink{a01191_a0a920de535eb1db659bb7203c7fb3bbb}{transform\+Joint} (\hyperlink{a00751}{Skeleton\+::\+Joint} $\ast$\+\_\+joint, \hyperlink{a02488_a2c834138d15bf416d68149d639c97ed8}{Matrix4x4} \+\_\+matrix, bool \+\_\+keep\+Child\+Positions=true)
\begin{DoxyCompactList}\small\item\em apply a transformation to a joint in the ref\+Pose \end{DoxyCompactList}\item 
void \hyperlink{a01191_a154e35e4f1513ff8d42dfec73943e109}{rotate\+Joint} (\hyperlink{a00751}{Skeleton\+::\+Joint} $\ast$\+\_\+joint, \hyperlink{a00996}{Skeleton\+::\+Pose} $\ast$\+\_\+pose, \hyperlink{a02488_a2c834138d15bf416d68149d639c97ed8}{Matrix4x4} \+\_\+rotation, bool \+\_\+apply\+To\+Whole\+Animation=true)
\begin{DoxyCompactList}\small\item\em rotate a joint in an arbitrary Pose \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Static Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01191_afd77366847854cdd1ac8e3646c167655}{static double \hyperlink{a01191_afd77366847854cdd1ac8e3646c167655}{determinant} (\hyperlink{a02488_a2c834138d15bf416d68149d639c97ed8}{Matrix4x4} \&\+\_\+m)}\label{a01191_afd77366847854cdd1ac8e3646c167655}

\begin{DoxyCompactList}\small\item\em compute determinant to check if matrix is rotation matrix \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01191_a9506d7b9b67518da0874c041a2680078}{\hyperlink{a02397_a4af323aafce89e30343e1ab2b469c688}{Skeleton} \& {\bfseries skeleton\+\_\+}}\label{a01191_a9506d7b9b67518da0874c041a2680078}

\item 
\hypertarget{a01191_a62f6af985b1e77c71847e2c291da7ed9}{\hyperlink{a00996}{Skeleton\+::\+Pose} $\ast$ {\bfseries ref\+Pose\+\_\+}}\label{a01191_a62f6af985b1e77c71847e2c291da7ed9}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Skeleton transformation class. 

This class should be used to manipulate skeletons since it makes sure that all necessary transformations are applied and that the transformations do not mess up the skeleton 

Definition at line 64 of file Skeleton\+Transform.\+hh.



\subsection{Member Function Documentation}
\hypertarget{a01191_a154e35e4f1513ff8d42dfec73943e109}{\index{Skeleton\+Transform@{Skeleton\+Transform}!rotate\+Joint@{rotate\+Joint}}
\index{rotate\+Joint@{rotate\+Joint}!Skeleton\+Transform@{Skeleton\+Transform}}
\subsubsection[{rotate\+Joint}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Transform\+::rotate\+Joint (
\begin{DoxyParamCaption}
\item[{{\bf Skeleton\+::\+Joint} $\ast$}]{\+\_\+joint, }
\item[{{\bf Skeleton\+::\+Pose} $\ast$}]{\+\_\+pose, }
\item[{{\bf Matrix4x4}}]{\+\_\+rotation, }
\item[{bool}]{\+\_\+apply\+To\+Whole\+Animation = {\ttfamily true}}
\end{DoxyParamCaption}
)}}\label{a01191_a154e35e4f1513ff8d42dfec73943e109}


rotate a joint in an arbitrary Pose 

Rotate a joint in an arbitrary Pose.

Rotate a joint in the given pose and with the given rotation matrix.


\begin{DoxyParams}{Parameters}
{\em \+\_\+joint} & Target joint \\
\hline
{\em \+\_\+pose} & Target pose \\
\hline
{\em \+\_\+rotation} & The rotation matrix that should be applied \\
\hline
{\em \+\_\+apply\+To\+Whole\+Animation} & Should the relative rotation be applied to all frames of the animation? \\
\hline
\end{DoxyParams}


Definition at line 291 of file Skeleton\+Transform.\+cc.

\hypertarget{a01191_a02ece88c37db6b77b1b6e5c75386aa81}{\index{Skeleton\+Transform@{Skeleton\+Transform}!scale\+Skeleton@{scale\+Skeleton}}
\index{scale\+Skeleton@{scale\+Skeleton}!Skeleton\+Transform@{Skeleton\+Transform}}
\subsubsection[{scale\+Skeleton}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Transform\+::scale\+Skeleton (
\begin{DoxyParamCaption}
\item[{double}]{\+\_\+factor, }
\item[{{\bf Skeleton\+::\+Pose} $\ast$}]{\+\_\+pose = {\ttfamily 0}}
\end{DoxyParamCaption}
)}}\label{a01191_a02ece88c37db6b77b1b6e5c75386aa81}


scale all bones of the skeleton by the given factor 


\begin{DoxyParams}{Parameters}
{\em \+\_\+factor} & scale factor \\
\hline
{\em \+\_\+pose} & pose that should be scaled. if this is the ref\+Pose, all animations of the skeleton are scaled as well so that ref\+Pose and the animations have the same size. scaling other poses should only be used for intermediate poses. if \+\_\+pose is N\+U\+L\+L the ref\+Pose is used. \\
\hline
\end{DoxyParams}


Definition at line 71 of file Skeleton\+Transform.\+cc.

\hypertarget{a01191_a0a920de535eb1db659bb7203c7fb3bbb}{\index{Skeleton\+Transform@{Skeleton\+Transform}!transform\+Joint@{transform\+Joint}}
\index{transform\+Joint@{transform\+Joint}!Skeleton\+Transform@{Skeleton\+Transform}}
\subsubsection[{transform\+Joint}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Transform\+::transform\+Joint (
\begin{DoxyParamCaption}
\item[{{\bf Skeleton\+::\+Joint} $\ast$}]{\+\_\+joint, }
\item[{{\bf Matrix4x4}}]{\+\_\+matrix, }
\item[{bool}]{\+\_\+keep\+Child\+Positions = {\ttfamily true}}
\end{DoxyParamCaption}
)}}\label{a01191_a0a920de535eb1db659bb7203c7fb3bbb}


apply a transformation to a joint in the ref\+Pose 

apply a transformation to a joint in the ref\+Pose. this also applies suitable transformations to all animation-\/frames.

it's only possible to apply transformations to the ref\+Pose. applying transformations to animation poses does not make much sense. Use rotate\+Joint to change joint positions during the animation.


\begin{DoxyParams}{Parameters}
{\em \+\_\+joint} & Target joint \\
\hline
{\em \+\_\+matrix} & The transformation to apply \\
\hline
{\em \+\_\+keep\+Child\+Positions} & Keep the global positions of child joints \\
\hline
\end{DoxyParams}


Definition at line 192 of file Skeleton\+Transform.\+cc.

\hypertarget{a01191_ae6c7b721b7b66554a44186c45ae6f076}{\index{Skeleton\+Transform@{Skeleton\+Transform}!transform\+Skeleton@{transform\+Skeleton}}
\index{transform\+Skeleton@{transform\+Skeleton}!Skeleton\+Transform@{Skeleton\+Transform}}
\subsubsection[{transform\+Skeleton}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Transform\+::transform\+Skeleton (
\begin{DoxyParamCaption}
\item[{{\bf Matrix4x4}}]{\+\_\+transformation, }
\item[{{\bf Skeleton\+::\+Pose} $\ast$}]{\+\_\+pose = {\ttfamily 0}}
\end{DoxyParamCaption}
)}}\label{a01191_ae6c7b721b7b66554a44186c45ae6f076}


transform the skeleton 

transform the skeleton in the reference pose and all animations simultanously


\begin{DoxyParams}{Parameters}
{\em \+\_\+transformation} & The transformation to apply \\
\hline
{\em \+\_\+pose} & The pose on which the transformation should be applied \\
\hline
\end{DoxyParams}


Definition at line 149 of file Skeleton\+Transform.\+cc.

\hypertarget{a01191_a8f4884231ded887215c180c158a6fbf4}{\index{Skeleton\+Transform@{Skeleton\+Transform}!translate\+Joint@{translate\+Joint}}
\index{translate\+Joint@{translate\+Joint}!Skeleton\+Transform@{Skeleton\+Transform}}
\subsubsection[{translate\+Joint}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Transform\+::translate\+Joint (
\begin{DoxyParamCaption}
\item[{{\bf Skeleton\+::\+Joint} $\ast$}]{\+\_\+joint, }
\item[{{\bf A\+C\+G\+::\+Vec3d}}]{\+\_\+translation, }
\item[{bool}]{\+\_\+keep\+Child\+Positions = {\ttfamily true}}
\end{DoxyParamCaption}
)}}\label{a01191_a8f4884231ded887215c180c158a6fbf4}


apply a translation to a joint in the ref\+Pose 

apply a translateion to a joint in the ref\+Pose

apply a translation to a joint in the ref\+Pose. this also applies suitable transformations to all animation-\/frames.

it's only possible to apply translations to the ref\+Pose. applying translations to animation poses does not make much sense. Use rotate\+Joint to change joint positions during the animation.


\begin{DoxyParams}{Parameters}
{\em \+\_\+joint} & Target joint \\
\hline
{\em \+\_\+translation} & The translation to apply \\
\hline
{\em \+\_\+keep\+Child\+Positions} & Keep the global positions of child joints \\
\hline
\end{DoxyParams}


Definition at line 271 of file Skeleton\+Transform.\+cc.

\hypertarget{a01191_ac4986328c5f53f17ffd422e3e6c11c7f}{\index{Skeleton\+Transform@{Skeleton\+Transform}!translate\+Skeleton@{translate\+Skeleton}}
\index{translate\+Skeleton@{translate\+Skeleton}!Skeleton\+Transform@{Skeleton\+Transform}}
\subsubsection[{translate\+Skeleton}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Transform\+::translate\+Skeleton (
\begin{DoxyParamCaption}
\item[{{\bf A\+C\+G\+::\+Vec3d}}]{\+\_\+translation, }
\item[{{\bf Skeleton\+::\+Pose} $\ast$}]{\+\_\+pose = {\ttfamily 0}}
\end{DoxyParamCaption}
)}}\label{a01191_ac4986328c5f53f17ffd422e3e6c11c7f}


translate the skeleton 

translates the skeleton in the reference pose and all animations simultanously


\begin{DoxyParams}{Parameters}
{\em \+\_\+translation} & the translation vector \\
\hline
{\em \+\_\+pose} & pose that should be translated. if this is the ref\+Pose, all animations of the skeleton are scaled as well so that ref\+Pose and the animations have the same size. scaling other poses should only be used for intermediate poses. if \+\_\+pose is N\+U\+L\+L the ref\+Pose is used. \\
\hline
\end{DoxyParams}


Definition at line 112 of file Skeleton\+Transform.\+cc.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
Object\+Types/\+Skeleton/\+Helper/Skeleton\+Transform.\+hh\item 
Object\+Types/\+Skeleton/\+Helper/Skeleton\+Transform.\+cc\end{DoxyCompactItemize}
