\subsection{Animation} The objective of this part is to animate the mesh we previously generated around the skeleton. We have as an input segments of the skeleton, and its mesh. The idea is to deform the segments of the skeleton, and to automatically have the impact of this deformation on the vertices of the mesh. \subsubsection{Trees} When we will animate our mesh, we want to keep it as one piece. For example, when you move your arm, your elbow and your forearm follows the movement of your arm. This means that the transformation that we will apply after the shoulders must be kept on the arms and forearms. To manage to do this, we structured everything in trees. The tree for a person will be the following for example (to simplify, we will take the hypothesis that this human has no knees). \begin{figure}[H] \centering \begin{tikzpicture} % Head \draw (0,0) circle [radius=1]; \draw (0,0) node{Head}; % Left son of head \draw (0,-1) -- (-3,-2); \draw (-3,-3) circle [radius=1]; \draw (-3,-3) node{Left arm}; % Left son of left arm \draw (-3,-4) -- (-6,-5); \draw (-6,-6) circle [radius=1]; \draw (-6,-6) node{Left forearm}; % Middle son \draw ( 0,-1) -- ( 0,-2); \draw ( 0,-3) circle [radius=1]; \draw ( 0,-3) node{Body}; % Left leg \draw (0, -4) -- (-2, -5); \draw ( -2,-6) circle [radius=1]; \draw ( -2,-6) node{Left leg}; % Right leg \draw (0, -4) -- (2, -5); \draw ( 2,-6) circle [radius=1]; \draw ( 2,-6) node{Right leg}; % Right son \draw (0,-1) -- (3,-2); \draw (3,-3) circle [radius=1]; \draw (3,-3) node{Right arm}; % Left son of left arm \draw (3,-4) -- (6,-5); \draw (6,-6) circle [radius=1]; \draw (6,-6) node{Right forearm}; \end{tikzpicture} \caption{Tree for a human being skeleton} \end{figure} \paragraph{} At each node of this, there will be a rotation (with a center, and angles), and we will draw the animated mesh by traversing the tree. At each node, we will apply the transformation of the current node, and then draw the subtree. Of course, we also need to know what faces are in each nodes, so we will have a tree of rotations, and a tree of faces. \subsubsection{Junctions processing} All we said before is valid only if the three vertices of a face are mapped to the same segment. But some faces have vertices that are mapped to different segments. For these faces, we need to apply a different transformation for each vertex. For this purpose, we created a hashtable between vertex numbers and paths in trees so that we are able to find the transformation for these vertices. \subsubsection{Graphical User Interface} In order to be able to manipulate the animated mesh easily, two graphical interfaces were made : \begin{enumerate} \item the first one allows the user to add rotation points to the skeleton (by default, only the junction points are considered as rotation points, and there are no knees and elbows for example). \item the second one has the OpenGL rendering and a menu controlled with the keyboard, allowing the user to select rotation points and to change the value of the angles. \end{enumerate}