\hypertarget{a01185}{\section{Skeleton\+Editing\+Plugin Class Reference}
\label{a01185}\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
}


{\ttfamily \#include $<$Plugin-\/\+Skeleton\+Editing/\+Skeleton\+Editing\+Plugin.\+hh$>$}

Inheritance diagram for Skeleton\+Editing\+Plugin\+:\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[height=12.000000cm]{a01185}
\end{center}
\end{figure}
\subsection*{Public Slots}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01185_a29098145c2a2e57aec76f7680bd5b76f}{Q\+String {\bfseries version} ()}\label{a01185_a29098145c2a2e57aec76f7680bd5b76f}

\end{DoxyCompactItemize}
\begin{Indent}{\bf Scriptable Functions}\par
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01185_a74fd5dac813f99aa4434ea4d4506b0eb}{void \hyperlink{a01185_a74fd5dac813f99aa4434ea4d4506b0eb}{split\+Bone} (int \+\_\+object\+Id, int \+\_\+tail\+Joint)}\label{a01185_a74fd5dac813f99aa4434ea4d4506b0eb}

\begin{DoxyCompactList}\small\item\em insert a joint in the middle of a bone given by its (unique) tail\+Joint \end{DoxyCompactList}\item 
\hypertarget{a01185_a1711684e761076fc160ff62c8647819f}{void \hyperlink{a01185_a1711684e761076fc160ff62c8647819f}{add\+Joint} (int \+\_\+object\+Id, int \+\_\+parent, \hyperlink{a02488_a7932a926ab17fabe9f4a0ee1b498526c}{Vector} \+\_\+position)}\label{a01185_a1711684e761076fc160ff62c8647819f}

\begin{DoxyCompactList}\small\item\em add joint to the skeleton \end{DoxyCompactList}\item 
\hypertarget{a01185_a0eba4a9631d930d0850e5fafa665392f}{void \hyperlink{a01185_a0eba4a9631d930d0850e5fafa665392f}{delete\+Joint} (int \+\_\+object\+Id, int \+\_\+joint\+Id)}\label{a01185_a0eba4a9631d930d0850e5fafa665392f}

\begin{DoxyCompactList}\small\item\em delete joint from the skeleton \end{DoxyCompactList}\item 
void \hyperlink{a01185_a06b115d257287180782a8f33db1acf74}{transform\+Joint} (int \+\_\+object\+Id, int \+\_\+joint\+Id, \hyperlink{a02488_a2c834138d15bf416d68149d639c97ed8}{Matrix4x4} \+\_\+matrix)
\begin{DoxyCompactList}\small\item\em transform joint with given matrix \end{DoxyCompactList}\item 
\hypertarget{a01185_a6030ff062241f32fe0045c4cddef30ad}{\hyperlink{a02488_a2c834138d15bf416d68149d639c97ed8}{Matrix4x4} \hyperlink{a01185_a6030ff062241f32fe0045c4cddef30ad}{global\+Matrix} (int \+\_\+object\+Id, int \+\_\+joint\+Id)}\label{a01185_a6030ff062241f32fe0045c4cddef30ad}

\begin{DoxyCompactList}\small\item\em get global matrix of a joint in the active pose \end{DoxyCompactList}\item 
\hypertarget{a01185_a82d96e27e1f2ec819772156baf743493}{\hyperlink{a02488_a2c834138d15bf416d68149d639c97ed8}{Matrix4x4} \hyperlink{a01185_a82d96e27e1f2ec819772156baf743493}{local\+Matrix} (int \+\_\+object\+Id, int \+\_\+joint\+Id)}\label{a01185_a82d96e27e1f2ec819772156baf743493}

\begin{DoxyCompactList}\small\item\em get local matrix of a joint in the active pose \end{DoxyCompactList}\item 
\hypertarget{a01185_ab1f5aeca76d807f1003daa0027f4564e}{\hyperlink{a02488_a7932a926ab17fabe9f4a0ee1b498526c}{Vector} \hyperlink{a01185_ab1f5aeca76d807f1003daa0027f4564e}{global\+Translation} (int \+\_\+object\+Id, int \+\_\+joint\+Id)}\label{a01185_ab1f5aeca76d807f1003daa0027f4564e}

\begin{DoxyCompactList}\small\item\em get global translation of a joint in the active pose \end{DoxyCompactList}\item 
\hypertarget{a01185_ad09a1f5bad93479472e98f231dad54a5}{\hyperlink{a02488_a7932a926ab17fabe9f4a0ee1b498526c}{Vector} \hyperlink{a01185_ad09a1f5bad93479472e98f231dad54a5}{local\+Translation} (int \+\_\+object\+Id, int \+\_\+joint\+Id)}\label{a01185_ad09a1f5bad93479472e98f231dad54a5}

\begin{DoxyCompactList}\small\item\em get local translation of a joint in the active pose \end{DoxyCompactList}\item 
\hypertarget{a01185_a203f5b2d91d3f81fd38735ada1a8dc07}{int \hyperlink{a01185_a203f5b2d91d3f81fd38735ada1a8dc07}{animation\+Count} (int \+\_\+object\+Id)}\label{a01185_a203f5b2d91d3f81fd38735ada1a8dc07}

\begin{DoxyCompactList}\small\item\em get the number of animations \end{DoxyCompactList}\item 
\hypertarget{a01185_a75ae942e546a17a066a27e720c983a65}{int \hyperlink{a01185_a75ae942e546a17a066a27e720c983a65}{frame\+Count} (int \+\_\+object\+Id, int \+\_\+animation\+Index)}\label{a01185_a75ae942e546a17a066a27e720c983a65}

\begin{DoxyCompactList}\small\item\em get the number of frames \end{DoxyCompactList}\item 
\hypertarget{a01185_af9fd3ef632e8ee3d031574c48b1db6e0}{int \hyperlink{a01185_af9fd3ef632e8ee3d031574c48b1db6e0}{active\+Animation} (int \+\_\+object\+Id)}\label{a01185_af9fd3ef632e8ee3d031574c48b1db6e0}

\begin{DoxyCompactList}\small\item\em get active animation \end{DoxyCompactList}\item 
\hypertarget{a01185_a10ef110cfa7fc600f4e7b472e95f5824}{int \hyperlink{a01185_a10ef110cfa7fc600f4e7b472e95f5824}{active\+Frame} (int \+\_\+object\+Id)}\label{a01185_a10ef110cfa7fc600f4e7b472e95f5824}

\begin{DoxyCompactList}\small\item\em get active frame \end{DoxyCompactList}\item 
\hypertarget{a01185_a9a9ae8febb7f72e9bde2329877339f95}{void \hyperlink{a01185_a9a9ae8febb7f72e9bde2329877339f95}{set\+Active\+Pose} (int \+\_\+object\+Id, int \+\_\+animation\+Index, int \+\_\+frame)}\label{a01185_a9a9ae8febb7f72e9bde2329877339f95}

\begin{DoxyCompactList}\small\item\em set active pose \end{DoxyCompactList}\item 
\hypertarget{a01185_a5f4bef026d7603125b929e561f6c1084}{void \hyperlink{a01185_a5f4bef026d7603125b929e561f6c1084}{add\+Animation} (int \+\_\+object\+Id, Q\+String \+\_\+name, int \+\_\+frames)}\label{a01185_a5f4bef026d7603125b929e561f6c1084}

\begin{DoxyCompactList}\small\item\em add animation \end{DoxyCompactList}\item 
void \hyperlink{a01185_a7f93274971aaea12d4e0df80b84aed4f}{split\+Joint} (Q\+Mouse\+Event $\ast$\+\_\+event)
\begin{DoxyCompactList}\small\item\em split selected Joint \end{DoxyCompactList}\end{DoxyCompactItemize}
\end{Indent}
\subsection*{Signals}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01185_ad9df65dfd781e9c919a0c1817cecfcda}{void {\bfseries update\+View} ()}\label{a01185_ad9df65dfd781e9c919a0c1817cecfcda}

\item 
\hypertarget{a01185_a963f75f8386525fc96dc716650f84c3d}{void {\bfseries updated\+Object} (int, const \hyperlink{a01393}{Update\+Type} \&\+\_\+type)}\label{a01185_a963f75f8386525fc96dc716650f84c3d}

\item 
\hypertarget{a01185_a5eb79492cae471bc17d7e20b617bedb3}{void {\bfseries node\+Visibility\+Changed} (int)}\label{a01185_a5eb79492cae471bc17d7e20b617bedb3}

\item 
\hypertarget{a01185_a574a10363851053400398662a64d54d8}{void {\bfseries set\+Renderer} (unsigned int \+\_\+viewer, Q\+String \+\_\+renderer\+Name)}\label{a01185_a574a10363851053400398662a64d54d8}

\item 
\hypertarget{a01185_aeb1bd3c97e67912d6203467e74285310}{void {\bfseries get\+Current\+Renderer} (unsigned int \+\_\+viewer, Q\+String \&\+\_\+renderer\+Name)}\label{a01185_aeb1bd3c97e67912d6203467e74285310}

\item 
\hypertarget{a01185_aa92193f375a5bf9b8f4b525a7687e5a4}{void {\bfseries add\+Pick\+Mode} (const std\+::string \&\+\_\+mode)}\label{a01185_aa92193f375a5bf9b8f4b525a7687e5a4}

\item 
\hypertarget{a01185_a2d5746b6cc0d460184886e0627249100}{void {\bfseries add\+Hidden\+Pick\+Mode} (const std\+::string \&\+\_\+mode)}\label{a01185_a2d5746b6cc0d460184886e0627249100}

\item 
\hypertarget{a01185_a3f6cacc92723d32b4ef4c66f6a650d56}{void {\bfseries set\+Pick\+Mode\+Mouse\+Tracking} (const std\+::string \&\+\_\+mode, bool \+\_\+mouse\+Tracking)}\label{a01185_a3f6cacc92723d32b4ef4c66f6a650d56}

\item 
\hypertarget{a01185_acd65514cc23e8d7757419df26a39ac41}{void {\bfseries set\+Pick\+Mode\+Toolbar} (const std\+::string \&\+\_\+mode, Q\+Tool\+Bar $\ast$\+\_\+toolbar)}\label{a01185_acd65514cc23e8d7757419df26a39ac41}

\item 
\hypertarget{a01185_a77437bb3f74e45c1d18fc505a0966b9e}{void {\bfseries add\+Context\+Menu\+Item} (Q\+Action $\ast$\+\_\+action, \hyperlink{a02438_a238952a111d7daede783625350d7b287}{Context\+Menu\+Type} \+\_\+type)}\label{a01185_a77437bb3f74e45c1d18fc505a0966b9e}

\item 
\hypertarget{a01185_a45e42e6330a45d1257f1e3804b242c2e}{void {\bfseries log} (\hyperlink{a02444_a595b2880f3ae74561ba390e3fd8c0e7c}{Logtype} \+\_\+type, Q\+String \+\_\+message)}\label{a01185_a45e42e6330a45d1257f1e3804b242c2e}

\item 
\hypertarget{a01185_ad979655957fad3aadfb8d281da658807}{void {\bfseries log} (Q\+String \+\_\+message)}\label{a01185_ad979655957fad3aadfb8d281da658807}

\item 
\hypertarget{a01185_a238f13893ea34738263fbf104d32eef0}{void {\bfseries script\+Info} (Q\+String \+\_\+function\+Name)}\label{a01185_a238f13893ea34738263fbf104d32eef0}

\item 
\hypertarget{a01185_a90f46f2159d395e4b5335473181b77c3}{void {\bfseries set\+Slot\+Description} (Q\+String \+\_\+slot\+Name, Q\+String \+\_\+slot\+Description, Q\+String\+List \+\_\+parameters, Q\+String\+List \+\_\+descriptions)}\label{a01185_a90f46f2159d395e4b5335473181b77c3}

\item 
\hypertarget{a01185_a289dcf1a225ecb5e6292eed9e7129226}{void {\bfseries add\+Toolbar} (Q\+Tool\+Bar $\ast$\+\_\+toolbar)}\label{a01185_a289dcf1a225ecb5e6292eed9e7129226}

\item 
\hypertarget{a01185_ab89a19fad88ea7bad975d46cff651a36}{void {\bfseries get\+Tool\+Bar} (Q\+String \+\_\+name, Q\+Tool\+Bar $\ast$\&\+\_\+toolbar)}\label{a01185_ab89a19fad88ea7bad975d46cff651a36}

\item 
\hypertarget{a01185_a53878808ad762a9b65d766fe408a511e}{void {\bfseries register\+Key} (int \+\_\+key, Qt\+::\+Keyboard\+Modifiers \+\_\+modifiers, Q\+String \+\_\+description, bool \+\_\+multi\+Use=false)}\label{a01185_a53878808ad762a9b65d766fe408a511e}

\item 
\hypertarget{a01185_a5ccc745298563c7148e1808befb261c8}{void {\bfseries add\+Toolbox} (Q\+String \+\_\+name, Q\+Widget $\ast$\+\_\+widget)}\label{a01185_a5ccc745298563c7148e1808befb261c8}

\item 
\hypertarget{a01185_a6acef61dca849b373673a074e3d2366a}{void {\bfseries add\+Empty\+Object} (\hyperlink{a00477}{Data\+Type} \+\_\+type, int \&\+\_\+id)}\label{a01185_a6acef61dca849b373673a074e3d2366a}

\item 
\hypertarget{a01185_a61a867be2374ab091c18c1d720bcc641}{void {\bfseries delete\+Object} (int \+\_\+id)}\label{a01185_a61a867be2374ab091c18c1d720bcc641}

\item 
\hypertarget{a01185_a93d876a403a265fa4ee2997fdf7c5ef5}{void {\bfseries create\+Backup} (int \+\_\+objectid, Q\+String \+\_\+name, \hyperlink{a01393}{Update\+Type} \+\_\+type=\hyperlink{a03407_ga4ce39b8d60eb78ada5080d032c9463a8}{U\+P\+D\+A\+T\+E\+\_\+\+A\+L\+L})}\label{a01185_a93d876a403a265fa4ee2997fdf7c5ef5}

\end{DoxyCompactItemize}
\subsection*{Public Member Functions}
\begin{DoxyCompactItemize}
\item 
\hyperlink{a01185_aefb8cabec5cd630d2156b8f668207398}{Skeleton\+Editing\+Plugin} ()
\begin{DoxyCompactList}\small\item\em Default Constructor. \end{DoxyCompactList}\item 
\hyperlink{a01185_af268faae4a67bf7457396b21a121b01d}{$\sim$\+Skeleton\+Editing\+Plugin} ()
\begin{DoxyCompactList}\small\item\em Destructor. \end{DoxyCompactList}\item 
\hypertarget{a01185_aff1264a3135488e2100001f0c77685d5}{Q\+String \hyperlink{a01185_aff1264a3135488e2100001f0c77685d5}{name} ()}\label{a01185_aff1264a3135488e2100001f0c77685d5}

\begin{DoxyCompactList}\small\item\em Name of the Plugin. \end{DoxyCompactList}\item 
\hypertarget{a01185_a6d0daf61b383840cb6654357436e67cf}{Q\+String \hyperlink{a01185_a6d0daf61b383840cb6654357436e67cf}{description} ()}\label{a01185_a6d0daf61b383840cb6654357436e67cf}

\begin{DoxyCompactList}\small\item\em Description of the Plugin. \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Slots}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01185_a8d9993b2bb07dcff2d10cb975fc9f631}{void {\bfseries initialize\+Plugin} ()}\label{a01185_a8d9993b2bb07dcff2d10cb975fc9f631}

\item 
void \hyperlink{a01185_a2bcc06da65cd7ba4c59ddc105dd4631a}{plugins\+Initialized} ()
\begin{DoxyCompactList}\small\item\em Initialization of the plugin when it is loaded by the core. \end{DoxyCompactList}\item 
\hypertarget{a01185_a5590aa3933300ce62be33516808d81be}{void {\bfseries slot\+Object\+Updated} (int \+\_\+id, const \hyperlink{a01393}{Update\+Type} \&\+\_\+type)}\label{a01185_a5590aa3933300ce62be33516808d81be}

\item 
\hypertarget{a01185_a156a76725c38f5585ba6a0bda6725966}{void {\bfseries slot\+Mouse\+Wheel\+Event} (Q\+Wheel\+Event $\ast$\+\_\+event, const std\+::string \&\+\_\+mode)}\label{a01185_a156a76725c38f5585ba6a0bda6725966}

\item 
void \hyperlink{a01185_a099da51787ae10142caba409e641f996}{slot\+Mouse\+Event} (Q\+Mouse\+Event $\ast$\+\_\+event)
\begin{DoxyCompactList}\small\item\em Mouse\+Press event occured. \end{DoxyCompactList}\item 
\hypertarget{a01185_a5c80ff2430c23271c559167868400d6f}{void {\bfseries slot\+Key\+Event} (Q\+Key\+Event $\ast$\+\_\+event)}\label{a01185_a5c80ff2430c23271c559167868400d6f}

\item 
\hypertarget{a01185_a9e85625fc0fab99271e3b1107f56772a}{void {\bfseries slot\+Key\+Release\+Event} (Q\+Key\+Event $\ast$\+\_\+event)}\label{a01185_a9e85625fc0fab99271e3b1107f56772a}

\item 
void \hyperlink{a01185_a5ca2dcbd0d42e64c6a731fd292b4c186}{slot\+Pick\+Mode\+Changed} (const std\+::string \&\+\_\+mode)
\begin{DoxyCompactList}\small\item\em slot is called when the pick\+Mode changed \end{DoxyCompactList}\item 
\hypertarget{a01185_ae28b998349bf1d901e492b7e0a887082}{void {\bfseries slot\+Set\+Editing\+Mode} (Q\+Action $\ast$\+\_\+action)}\label{a01185_ae28b998349bf1d901e492b7e0a887082}

\item 
\hypertarget{a01185_a3701aeefeb864bebdf7aadb0737bedb0}{void {\bfseries slot\+Pick\+Toolbar\+Action} (Q\+Action $\ast$\+\_\+action)}\label{a01185_a3701aeefeb864bebdf7aadb0737bedb0}

\item 
void \hyperlink{a01185_ad872640b513031c735e9d9c224f66ec3}{set\+Descriptions} ()
\begin{DoxyCompactList}\small\item\em Set Descriptions for Scripting Slots. \end{DoxyCompactList}\item 
void \hyperlink{a01185_a0179dcf3fa806111a6465f269a433681}{manipulator\+Moved} (\hyperlink{a02486_af3661d1854c63aa68ed6f3f61bbbd9f5}{Qt\+Translation\+Manipulator\+Node} $\ast$\+\_\+node, Q\+Mouse\+Event $\ast$\+\_\+event)
\begin{DoxyCompactList}\small\item\em move the object when its manipulator moves \end{DoxyCompactList}\item 
void \hyperlink{a01185_a212555fb01f7cd286f43b00064b5f4a7}{Manipulator\+Position\+Changed} (\hyperlink{a02486_af3661d1854c63aa68ed6f3f61bbbd9f5}{Qt\+Translation\+Manipulator\+Node} $\ast$\+\_\+node)
\begin{DoxyCompactList}\small\item\em update object when its manipulator changes position \end{DoxyCompactList}\item 
\hypertarget{a01185_a075cf305ff8e072d5e6ac800292e7d03}{void {\bfseries slot\+Rotate\+Manipulator} (bool \+\_\+toggled)}\label{a01185_a075cf305ff8e072d5e6ac800292e7d03}

\end{DoxyCompactItemize}
\subsection*{Private Member Functions}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01185_a606eb246219c08edf96ff9643ef09648}{void {\bfseries move\+Joint} (Q\+Mouse\+Event $\ast$\+\_\+event)}\label{a01185_a606eb246219c08edf96ff9643ef09648}

\item 
bool \hyperlink{a01185_a3e855990e1d97764ace2699bbbfb8ffc}{can\+Modify} (Q\+Mouse\+Event $\ast$\+\_\+event)
\begin{DoxyCompactList}\small\item\em checks, if the skeleton can be modified. a skeleton can be modified, if the active pose is the reference pose \end{DoxyCompactList}\item 
\hypertarget{a01185_a09fed5b86c97a40d235c96305b75a462}{void {\bfseries insert\+Joint} (Q\+Mouse\+Event $\ast$\+\_\+event)}\label{a01185_a09fed5b86c97a40d235c96305b75a462}

\item 
\hypertarget{a01185_adf6c6d4ba2b89e00207b9e42ba66b2ff}{void {\bfseries cancel\+Joint\+Insertion} ()}\label{a01185_adf6c6d4ba2b89e00207b9e42ba66b2ff}

\item 
\hypertarget{a01185_a1b47c83c72cd54625903d130b0710f7d}{void {\bfseries delete\+Joint} (Q\+Mouse\+Event $\ast$\+\_\+event)}\label{a01185_a1b47c83c72cd54625903d130b0710f7d}

\item 
\hypertarget{a01185_a9c3f4e4ca3d303905db648cb3d91835b}{void {\bfseries select\+Joint} (Q\+Mouse\+Event $\ast$\+\_\+event)}\label{a01185_a9c3f4e4ca3d303905db648cb3d91835b}

\item 
\hypertarget{a01185_afbf0b14755f4cf143fcee6f799130986}{\hyperlink{a00996}{Skeleton\+::\+Pose} $\ast$ {\bfseries active\+Pose} (\hyperlink{a01188}{Skeleton\+Object} $\ast$\+\_\+skeleton\+Obj)}\label{a01185_afbf0b14755f4cf143fcee6f799130986}

\item 
\hypertarget{a01185_a2c4e324866ba62ac830c18c8fd6c73df}{void {\bfseries set\+Joint\+Position} (\hyperlink{a01188}{Skeleton\+Object} $\ast$\+\_\+skeleton\+Obj, \hyperlink{a00751}{Skeleton\+::\+Joint} $\ast$\+\_\+joint, \hyperlink{a03336_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d} \&\+\_\+position)}\label{a01185_a2c4e324866ba62ac830c18c8fd6c73df}

\item 
\hypertarget{a01185_ade11b053e0e53121f3ee5673305ebd34}{\hyperlink{a03368_aca56e7eac7bf182bfff4ea1841d2cea2}{Open\+Mesh\+::\+Vec3d} \hyperlink{a01185_ade11b053e0e53121f3ee5673305ebd34}{get\+Nearest\+Joint} (\hyperlink{a01188}{Skeleton\+Object} $\ast$\+\_\+skeleton\+Obj, \hyperlink{a03368_aca56e7eac7bf182bfff4ea1841d2cea2}{Open\+Mesh\+::\+Vec3d} \&\+\_\+hit\+Point, int \&\+\_\+best\+Joint\+I\+D)}\label{a01185_ade11b053e0e53121f3ee5673305ebd34}

\begin{DoxyCompactList}\small\item\em Get nearest joint to hit\+Point (used for snapping) \end{DoxyCompactList}\item 
void \hyperlink{a01185_a069938eb3ac9db75a2411ba7141ddb51}{place\+Manip} (Q\+Mouse\+Event $\ast$\+\_\+event)
\begin{DoxyCompactList}\small\item\em Place and show the Manipulator. \end{DoxyCompactList}\item 
void \hyperlink{a01185_a2f45f994554a26f4241974fcf692429a}{show\+Manipulators} ()
\begin{DoxyCompactList}\small\item\em Show/\+Hide active manipulators. \end{DoxyCompactList}\item 
void \hyperlink{a01185_a896a664ae4ed07bc29982b79e7761e30}{update\+Manipulator\+Position} (\hyperlink{a00330}{Base\+Object\+Data} $\ast$\+\_\+skeleton\+Obj)
\begin{DoxyCompactList}\small\item\em make sure the manipulator is positioned on a joint \end{DoxyCompactList}\item 
\hypertarget{a01185_aa606620786d7fd5f27d090d8531e5297}{void \hyperlink{a01185_aa606620786d7fd5f27d090d8531e5297}{inverse\+Kinematic} (\hyperlink{a03336_ae4a56bb6b65d7f966934982a1e370213}{A\+C\+G\+::\+Vec3d} dest, \hyperlink{a00996}{Skeleton\+::\+Pose} $\ast$current\+Pose, \hyperlink{a00751}{Skeleton\+::\+Joint} $\ast$picked\+Joint, std\+::vector$<$ \hyperlink{a00751}{Skeleton\+::\+Joint} $\ast$ $>$ rotatable\+Joints)}\label{a01185_aa606620786d7fd5f27d090d8531e5297}

\begin{DoxyCompactList}\small\item\em function for computing the position of our joints using inverse Kinematic \end{DoxyCompactList}\end{DoxyCompactItemize}
\subsection*{Private Attributes}
\begin{DoxyCompactItemize}
\item 
\hypertarget{a01185_adcbeb723d3d21609d9de0580a4fa76f8}{Q\+Tool\+Bar $\ast$ {\bfseries toolbar\+\_\+}}\label{a01185_adcbeb723d3d21609d9de0580a4fa76f8}

\item 
\hypertarget{a01185_a7039cf2302478242bb44d655d908bb14}{Q\+Action\+Group $\ast$ {\bfseries tool\+Bar\+Actions\+\_\+}}\label{a01185_a7039cf2302478242bb44d655d908bb14}

\item 
\hypertarget{a01185_abfbef79325b6261c960b246f301e4c82}{Q\+Action $\ast$ {\bfseries skeleton\+Editing\+Action\+\_\+}}\label{a01185_abfbef79325b6261c960b246f301e4c82}

\item 
\hypertarget{a01185_aa495c08bb1e2185e8c0c43d8e3cd2744}{Q\+Tool\+Bar $\ast$ {\bfseries pick\+Toolbar\+\_\+}}\label{a01185_aa495c08bb1e2185e8c0c43d8e3cd2744}

\item 
\hypertarget{a01185_a808454642a965eca4862feffb1ddbeeb}{Q\+Action\+Group $\ast$ {\bfseries pick\+Tool\+Bar\+Actions\+\_\+}}\label{a01185_a808454642a965eca4862feffb1ddbeeb}

\item 
\hypertarget{a01185_a136016194d97d9a269ede85017fe97e0}{Q\+Action $\ast$ {\bfseries select\+Joint\+Action\+\_\+}}\label{a01185_a136016194d97d9a269ede85017fe97e0}

\item 
\hypertarget{a01185_a73c5f86b1bd35ea9e0695050c1f59b5c}{Q\+Action $\ast$ {\bfseries insert\+Joint\+Action\+\_\+}}\label{a01185_a73c5f86b1bd35ea9e0695050c1f59b5c}

\item 
\hypertarget{a01185_a99b6c6685178ad7ef7a30d92d20ead23}{Q\+Action $\ast$ {\bfseries split\+Joint\+Action\+\_\+}}\label{a01185_a99b6c6685178ad7ef7a30d92d20ead23}

\item 
\hypertarget{a01185_adcbf6e1aac1baf715756d622c0a2cebb}{Q\+Action $\ast$ {\bfseries delete\+Joint\+Action\+\_\+}}\label{a01185_adcbf6e1aac1baf715756d622c0a2cebb}

\item 
\hypertarget{a01185_a332c63733adca33217cfb1ea4a1ed51b}{Q\+Action $\ast$ {\bfseries move\+Joint\+Action\+\_\+}}\label{a01185_a332c63733adca33217cfb1ea4a1ed51b}

\item 
\hypertarget{a01185_a54cef2c0c4ec7438f6e21172f7c62b24}{Q\+Action $\ast$ {\bfseries transform\+Child\+Manip\+Action\+\_\+}}\label{a01185_a54cef2c0c4ec7438f6e21172f7c62b24}

\item 
\hypertarget{a01185_a133ad1c689fabc8961f41ce21c0c830f}{Q\+Action $\ast$ {\bfseries transform\+All\+Manip\+Action\+\_\+}}\label{a01185_a133ad1c689fabc8961f41ce21c0c830f}

\item 
\hypertarget{a01185_a95b98829e8cf8021ea8a5f08925c6675}{Q\+Action $\ast$ {\bfseries rotate\+Manip\+Action\+\_\+}}\label{a01185_a95b98829e8cf8021ea8a5f08925c6675}

\item 
\hypertarget{a01185_a3f25add7c825ee85a35a6fa18ab54444}{Q\+Action $\ast$ {\bfseries inverse\+Kinematic\+Action\+\_\+}}\label{a01185_a3f25add7c825ee85a35a6fa18ab54444}

\item 
\hypertarget{a01185_ab210d9ae4a943f2fc4b297ea39d9fb2e}{int {\bfseries current\+Skeleton\+\_\+}}\label{a01185_ab210d9ae4a943f2fc4b297ea39d9fb2e}

\item 
\hypertarget{a01185_a09a50e47806f832c3c73ac224d3c74a3}{int {\bfseries current\+Joint\+\_\+}}\label{a01185_a09a50e47806f832c3c73ac224d3c74a3}

\item 
\hypertarget{a01185_a9a9ada3fda1c0f3da1a824accae48f86}{bool {\bfseries joint\+Preview\+\_\+}}\label{a01185_a9a9ada3fda1c0f3da1a824accae48f86}

\item 
\hypertarget{a01185_a8a225abf4abbe467cfbd41cd64a716ed}{bool {\bfseries transform\+Child\+Joints\+\_\+}}\label{a01185_a8a225abf4abbe467cfbd41cd64a716ed}

\item 
\hypertarget{a01185_ac53dd68d6d1949e9e6bc162a7b2ae904}{bool {\bfseries transform\+All\+Frames\+\_\+}}\label{a01185_ac53dd68d6d1949e9e6bc162a7b2ae904}

\item 
\hypertarget{a01185_a7f773c5acc0245fe5629053357cb8e6d}{bool {\bfseries inverse\+Kinematic\+\_\+}}\label{a01185_a7f773c5acc0245fe5629053357cb8e6d}

\item 
\hypertarget{a01185_a32795a50a58fc4f41b6bca8ea3114edd}{bool {\bfseries dbl\+Click\+\_\+}}\label{a01185_a32795a50a58fc4f41b6bca8ea3114edd}

\item 
\hypertarget{a01185_a99039e12de6207651ea6dcb8befd3bb2}{Q\+String \hyperlink{a01185_a99039e12de6207651ea6dcb8befd3bb2}{last\+Renderer\+\_\+}}\label{a01185_a99039e12de6207651ea6dcb8befd3bb2}

\begin{DoxyCompactList}\small\item\em Stores the last active renderer before we switched to skeleton editing mode. \end{DoxyCompactList}\item 
\hypertarget{a01185_a8b95987bfe9b0d5de2ad12dcf4bd90ce}{bool \hyperlink{a01185_a8b95987bfe9b0d5de2ad12dcf4bd90ce}{renderer\+Changed\+\_\+}}\label{a01185_a8b95987bfe9b0d5de2ad12dcf4bd90ce}

\begin{DoxyCompactList}\small\item\em Remembers, if we changed the renderer. \end{DoxyCompactList}\item 
\hypertarget{a01185_a8e4104d54c2cfec14238c039979521c6}{std\+::vector$<$ int $>$ {\bfseries active\+Manipulators\+\_\+}}\label{a01185_a8e4104d54c2cfec14238c039979521c6}

\item 
\hypertarget{a01185_a6bb7ba616d19e393d39258ae14aaaab3}{double {\bfseries manip\+\_\+size\+\_\+}}\label{a01185_a6bb7ba616d19e393d39258ae14aaaab3}

\item 
\hypertarget{a01185_af970f611290aed0af9ad6b5af17daa9b}{double {\bfseries manip\+\_\+size\+\_\+modifier\+\_\+}}\label{a01185_af970f611290aed0af9ad6b5af17daa9b}

\item 
\hypertarget{a01185_ac09dc468da9a63e98a2f5e45f5c0e6ff}{\hyperlink{a01186}{Skeleton\+Marker} {\bfseries object\+Marker\+\_\+}}\label{a01185_ac09dc468da9a63e98a2f5e45f5c0e6ff}

\item 
\hypertarget{a01185_a709b10235eeddfcb18b06fd78eda1eba}{\hyperlink{a03336_a7f5dece6cb3955c9847f5455509f6147}{A\+C\+G\+::\+Matrix4x4d} {\bfseries accum\+Matrix\+\_\+}}\label{a01185_a709b10235eeddfcb18b06fd78eda1eba}

\end{DoxyCompactItemize}


\subsection{Detailed Description}
Plugin for creating and editing skeletons 

Definition at line 75 of file Skeleton\+Editing\+Plugin.\+hh.



\subsection{Constructor \& Destructor Documentation}
\hypertarget{a01185_aefb8cabec5cd630d2156b8f668207398}{\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}!Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}!Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
\subsubsection[{Skeleton\+Editing\+Plugin}]{\setlength{\rightskip}{0pt plus 5cm}Skeleton\+Editing\+Plugin\+::\+Skeleton\+Editing\+Plugin (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a01185_aefb8cabec5cd630d2156b8f668207398}


Default Constructor. 



Definition at line 61 of file Skeleton\+Editing\+Plugin.\+cc.

\hypertarget{a01185_af268faae4a67bf7457396b21a121b01d}{\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}!````~Skeleton\+Editing\+Plugin@{$\sim$\+Skeleton\+Editing\+Plugin}}
\index{````~Skeleton\+Editing\+Plugin@{$\sim$\+Skeleton\+Editing\+Plugin}!Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
\subsubsection[{$\sim$\+Skeleton\+Editing\+Plugin}]{\setlength{\rightskip}{0pt plus 5cm}Skeleton\+Editing\+Plugin\+::$\sim$\+Skeleton\+Editing\+Plugin (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)}}\label{a01185_af268faae4a67bf7457396b21a121b01d}


Destructor. 



Definition at line 97 of file Skeleton\+Editing\+Plugin.\+cc.



\subsection{Member Function Documentation}
\hypertarget{a01185_a3e855990e1d97764ace2699bbbfb8ffc}{\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}!can\+Modify@{can\+Modify}}
\index{can\+Modify@{can\+Modify}!Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
\subsubsection[{can\+Modify}]{\setlength{\rightskip}{0pt plus 5cm}bool Skeleton\+Editing\+Plugin\+::can\+Modify (
\begin{DoxyParamCaption}
\item[{Q\+Mouse\+Event $\ast$}]{\+\_\+event}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a01185_a3e855990e1d97764ace2699bbbfb8ffc}


checks, if the skeleton can be modified. a skeleton can be modified, if the active pose is the reference pose 


\begin{DoxyParams}{Parameters}
{\em \+\_\+event} & the event that occurred \\
\hline
\end{DoxyParams}


Definition at line 293 of file Skeleton\+Editing\+Plugin.\+cc.

\hypertarget{a01185_a0179dcf3fa806111a6465f269a433681}{\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}!manipulator\+Moved@{manipulator\+Moved}}
\index{manipulator\+Moved@{manipulator\+Moved}!Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
\subsubsection[{manipulator\+Moved}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Editing\+Plugin\+::manipulator\+Moved (
\begin{DoxyParamCaption}
\item[{{\bf Qt\+Translation\+Manipulator\+Node} $\ast$}]{\+\_\+node, }
\item[{Q\+Mouse\+Event $\ast$}]{\+\_\+event}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}, {\ttfamily [slot]}}}\label{a01185_a0179dcf3fa806111a6465f269a433681}


move the object when its manipulator moves 


\begin{DoxyParams}{Parameters}
{\em \+\_\+node} & the manipulator node \\
\hline
{\em \+\_\+event} & the mouse event \\
\hline
\end{DoxyParams}


Definition at line 716 of file Skeleton\+Editing\+Plugin.\+cc.

\hypertarget{a01185_a212555fb01f7cd286f43b00064b5f4a7}{\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}!Manipulator\+Position\+Changed@{Manipulator\+Position\+Changed}}
\index{Manipulator\+Position\+Changed@{Manipulator\+Position\+Changed}!Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
\subsubsection[{Manipulator\+Position\+Changed}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Editing\+Plugin\+::\+Manipulator\+Position\+Changed (
\begin{DoxyParamCaption}
\item[{{\bf Qt\+Translation\+Manipulator\+Node} $\ast$}]{\+\_\+node}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}, {\ttfamily [slot]}}}\label{a01185_a212555fb01f7cd286f43b00064b5f4a7}


update object when its manipulator changes position 


\begin{DoxyParams}{Parameters}
{\em \+\_\+node} & the manipulator node \\
\hline
\end{DoxyParams}


Definition at line 845 of file Skeleton\+Editing\+Plugin.\+cc.

\hypertarget{a01185_a069938eb3ac9db75a2411ba7141ddb51}{\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}!place\+Manip@{place\+Manip}}
\index{place\+Manip@{place\+Manip}!Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
\subsubsection[{place\+Manip}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Editing\+Plugin\+::place\+Manip (
\begin{DoxyParamCaption}
\item[{Q\+Mouse\+Event $\ast$}]{\+\_\+event}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a01185_a069938eb3ac9db75a2411ba7141ddb51}


Place and show the Manipulator. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+event} & mouse\+Event that occured \\
\hline
\end{DoxyParams}


Definition at line 539 of file Skeleton\+Editing\+Plugin.\+cc.

\hypertarget{a01185_a2bcc06da65cd7ba4c59ddc105dd4631a}{\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}!plugins\+Initialized@{plugins\+Initialized}}
\index{plugins\+Initialized@{plugins\+Initialized}!Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
\subsubsection[{plugins\+Initialized}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Editing\+Plugin\+::plugins\+Initialized (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}, {\ttfamily [slot]}}}\label{a01185_a2bcc06da65cd7ba4c59ddc105dd4631a}


Initialization of the plugin when it is loaded by the core. 



Definition at line 110 of file Skeleton\+Editing\+Plugin.\+cc.

\hypertarget{a01185_ad872640b513031c735e9d9c224f66ec3}{\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}!set\+Descriptions@{set\+Descriptions}}
\index{set\+Descriptions@{set\+Descriptions}!Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
\subsubsection[{set\+Descriptions}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Editing\+Plugin\+::set\+Descriptions (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}, {\ttfamily [slot]}}}\label{a01185_ad872640b513031c735e9d9c224f66ec3}


Set Descriptions for Scripting Slots. 



Definition at line 61 of file Skeleton\+Editing\+Scripting.\+cc.

\hypertarget{a01185_a2f45f994554a26f4241974fcf692429a}{\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}!show\+Manipulators@{show\+Manipulators}}
\index{show\+Manipulators@{show\+Manipulators}!Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
\subsubsection[{show\+Manipulators}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Editing\+Plugin\+::show\+Manipulators (
\begin{DoxyParamCaption}
{}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a01185_a2f45f994554a26f4241974fcf692429a}


Show/\+Hide active manipulators. 

Checks if the manipulators should be visible or not.

Definition at line 865 of file Skeleton\+Editing\+Plugin.\+cc.

\hypertarget{a01185_a099da51787ae10142caba409e641f996}{\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}!slot\+Mouse\+Event@{slot\+Mouse\+Event}}
\index{slot\+Mouse\+Event@{slot\+Mouse\+Event}!Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
\subsubsection[{slot\+Mouse\+Event}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Editing\+Plugin\+::slot\+Mouse\+Event (
\begin{DoxyParamCaption}
\item[{Q\+Mouse\+Event $\ast$}]{\+\_\+event}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}, {\ttfamily [slot]}}}\label{a01185_a099da51787ae10142caba409e641f996}


Mouse\+Press event occured. 


\begin{DoxyParams}{Parameters}
{\em \+\_\+event} & the event that occured \\
\hline
\end{DoxyParams}


Definition at line 341 of file Skeleton\+Editing\+Plugin.\+cc.

\hypertarget{a01185_a5ca2dcbd0d42e64c6a731fd292b4c186}{\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}!slot\+Pick\+Mode\+Changed@{slot\+Pick\+Mode\+Changed}}
\index{slot\+Pick\+Mode\+Changed@{slot\+Pick\+Mode\+Changed}!Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
\subsubsection[{slot\+Pick\+Mode\+Changed}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Editing\+Plugin\+::slot\+Pick\+Mode\+Changed (
\begin{DoxyParamCaption}
\item[{const std\+::string \&}]{\+\_\+mode}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}, {\ttfamily [slot]}}}\label{a01185_a5ca2dcbd0d42e64c6a731fd292b4c186}


slot is called when the pick\+Mode changed 


\begin{DoxyParams}{Parameters}
{\em \+\_\+mode} & new pick\+Mode \\
\hline
\end{DoxyParams}


Definition at line 391 of file Skeleton\+Editing\+Plugin.\+cc.

\hypertarget{a01185_a7f93274971aaea12d4e0df80b84aed4f}{\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}!split\+Joint@{split\+Joint}}
\index{split\+Joint@{split\+Joint}!Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
\subsubsection[{split\+Joint}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Editing\+Plugin\+::split\+Joint (
\begin{DoxyParamCaption}
\item[{Q\+Mouse\+Event $\ast$}]{\+\_\+event}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [slot]}}}\label{a01185_a7f93274971aaea12d4e0df80b84aed4f}


split selected Joint 

split the selected joint. selected joint will be child of new joint


\begin{DoxyParams}{Parameters}
{\em \+\_\+event} & mouse\+Event that occured \\
\hline
\end{DoxyParams}


Definition at line 989 of file Skeleton\+Editing\+Plugin.\+cc.

\hypertarget{a01185_a06b115d257287180782a8f33db1acf74}{\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}!transform\+Joint@{transform\+Joint}}
\index{transform\+Joint@{transform\+Joint}!Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
\subsubsection[{transform\+Joint}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Editing\+Plugin\+::transform\+Joint (
\begin{DoxyParamCaption}
\item[{int}]{\+\_\+object\+Id, }
\item[{int}]{\+\_\+joint\+Id, }
\item[{{\bf Matrix4x4}}]{\+\_\+matrix}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [slot]}}}\label{a01185_a06b115d257287180782a8f33db1acf74}


transform joint with given matrix 

transform selected joint with given matrix 

Definition at line 306 of file Skeleton\+Editing\+Scripting.\+cc.

\hypertarget{a01185_a896a664ae4ed07bc29982b79e7761e30}{\index{Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}!update\+Manipulator\+Position@{update\+Manipulator\+Position}}
\index{update\+Manipulator\+Position@{update\+Manipulator\+Position}!Skeleton\+Editing\+Plugin@{Skeleton\+Editing\+Plugin}}
\subsubsection[{update\+Manipulator\+Position}]{\setlength{\rightskip}{0pt plus 5cm}void Skeleton\+Editing\+Plugin\+::update\+Manipulator\+Position (
\begin{DoxyParamCaption}
\item[{{\bf Base\+Object\+Data} $\ast$}]{\+\_\+skeleton\+Obj}
\end{DoxyParamCaption}
)\hspace{0.3cm}{\ttfamily [private]}}}\label{a01185_a896a664ae4ed07bc29982b79e7761e30}


make sure the manipulator is positioned on a joint 



Definition at line 1448 of file Skeleton\+Editing\+Plugin.\+cc.



The documentation for this class was generated from the following files\+:\begin{DoxyCompactItemize}
\item 
Plugin-\/\+Skeleton\+Editing/Skeleton\+Editing\+Plugin.\+hh\item 
Plugin-\/\+Skeleton\+Editing/Skeleton\+Editing\+Plugin.\+cc\item 
Plugin-\/\+Skeleton\+Editing/Skeleton\+Editing\+Scripting.\+cc\end{DoxyCompactItemize}
