Projet d'animation sous Blender


Jean-Sébastien Franco (jean-sébastien.franco@imag.fr)
Florence Bertails (florence.bertails@imag.fr)

1) Cadre du projet
2) Répartion du travail
3) Scénario détaillé
4) Réalisation des scènes
5) Conclusion
 
 


1) Cadre du projet

    L'environnement South Park a été choisi cette année pour servir de support au projet. Les dessins animés de South Park mettent en scène une
bande de 4 copains d'école, Stan, Kyle, Cartman et Kenny, qui évoluent dans un univers très américain, violent et parfois assez vulgaire...
Pour ce court film d'animation, nous avons choisi de nous focaliser sur le personnage de Kenny, qui est le plus énigmatique de la bande (on ne
comprend rien à ce qu'il dit à cause de sa capuche), et aussi le plus malchanceux (il meurt pratiquement à chaque épisode de manière atroce,
ce qui est souvent très drôle).
 
 


2) Répartition du travail

- Jean-Sébastien :

 - Florence :


3) Scénario détaillé

    A force de constater combien Kenny joue de malchance à chaque épisode de la série, nous avons pris le parti d'aider ce malheureux personnage à se venger de ses créateurs.
Ainsi l'histoire commence innocemment, dans un pré à vaches, où Cartman et Kenny se tournent les pouces.
    Soudain un danger de mort certaine s'avance vers Kenny : une vache s'emporte et lui fonce droit dessus. Lassé d'être l'éternelle victime de SouthPark, Kenny l'arrête brutalement dans sa course, se tourne vers la caméra, et d'un coup de poing, il casse l'écran de la télévision dans laquelle se joue la scène. En passant la tête à travers l'écran, il découvre alors que de l'autre côté se trouve en fait le bureau de l'animateur qui a créé cette histoire. Kenny saut sur le bureau et grimpe sur un livre qui n'est rien d'autre que le scénario de l'histoire. En parcourant rapidement ce scénario, il tombe sur l'image de sa mort (il est sauvagement piétiné par la vache), et décide alors de se venger, en modifiant le scénario. Une fois son oeuvre accomplie, il retourne dans la télé, et là commence une nouvelle histoire.

Ce n'est plus le Kenny chétif qu'on a devant les yeux, mais un terrifiant Kenny Ninja qui livre combat avec la vache. Victorieux, notre Kenny parcout son chemin. Il arrive à Monbonnot Land, puis tout naturellement à L'Inria, où il savoure sa victoire, en narguant le spectateur. Malheureusement pour lui, l'animateur est entre-temps revenu dans son bureau, et ne semble pas très content des gribouillis que Kenny lui a laissé sur le scénario. Et comme par hasard, l'amphi de l'Inria, sous lequel se trouve Kenny, vient s'écraser, dans une scène horrible.
 
 


4) Modelisation des personnages pour l'animation

Un certain nombre d'aspects de la modélisation que nous avons faite pour l'animation sont communs entre les personnages (ce qui inclut les vaches) pour toute l'animation, c'est pourquoi nous leurs consacrons un paragraphe spécial. L'idée générale a été de commencer par la modélisation de ces personnages afin de pouvoir avoir une base de travail pratique et réutilisable : une sorte de marionnette avec des propriétés intrinsèques à inclure en tant que bibliothèque pour chaque scène de l'animation. Dans la théorie, l'idéal serait de réaliser les points suivants, pour chaque personnage, avant de créer une scène :
1) faire la modélisation
2) créer skinning (création du squelette d'IKA et affectation du poids de chaque vertex du modèle aux bones correspondants), qui, s'il est fait correctement, permet d'animer le personnage de manière fluide en ne deplacant que les bones du squelette, et d'avoir notamment une certaine élasticité au niveau des articulations, endroit où la surface utilisée pour modéliser le personnage subit des déformations avec la contribution de plusieurs bones, pour éviter l'autocollison de la surface et simuler l'effet de peau pendant l'animation
3) ajouter certaines contraintes cinématiques de base aux personnages, comme le tracking des bones des yeux sur un empty symbolisant l'endroit ou le personnage focalise son attention, et éventuellement les contraintes de cinematique inverse , pour les pieds notamment, et leurs empty associés. Créer un empty parent de tous les autres objets associés au personnage (le squelette et les emptys des contraintes cinématiques) s'avère aussi fort utile pour déplacer le personnage d'un bloc sans laisser les empty des contraintes cinématiques derrière. Ceci suppose que les animations créées en 5) soient animées "sur place", c'est-à-dire sans mouvement réel, même pour les animations de déplacement comme la marche, ce qui est généralemet la bonne manière de procéder de toute façon pour garantir la réutilisabilité des animations.
4) réaliser les différentes expressions faciales ou plus généralement toute déformation du modèle pouvant être obtenus par relative vertex keys .
5) profiter du fait que les dernières versions de blender traitent l'animation du squelette de manière dédiée, grâce a l'introduction de la fenêtre spécifique aux keyframes des squelettes, regroupés en actions , qui sont les collections de mouvements attachables aux personnages : on peut donc créer des animations de base (marcher, courir) qui font partie de la définition du personnage en tant que bibliothèque. Nous avons pu constater, tardivement dans le projet cependant, que n'importe quelle action de n'importe quelle personnage peut être associée à n'importe quel autre personnage, auquel cas les keyframes définies s'appliquent automatiquement aux bones portant le même nom; cela permet ainsi de réaliser une animation de marche commune à tous les personnages bipèdes, par exemple. Ceci a été exploité en fin de projet pour les scènes où apparaissent à la fois cartman et kenny par exemple : l'animation de marche est la même décalée dans le temps pour éviter que les personnages marchent de manière complètement synchronisée, ce qui est laid (à moins de vouloir modéliser une fanfare ou un bataillon de soldats!) .

Ceci n'est bien sûr que la théorie, et dans la pratique nous apprenions les différentes techniques au fur et à mesure, et donc les "marionnettes" se sont enrichies progressivement au cours du projet, donnant lieu à plusieurs versions des personnages. Cependant, nous avons commencé par la modélisation des personnages et avons tout de même pu factoriser avec succès les étapes 1), 2) et 3) décrites ci-dessus sur l'ensemble du projet et des personnages, ce qui a permis de gagner beaucoup de temps par la suite.  Les relatives vertex keys et les animations (étapes 4 et 5) ont été créées au fur et à mesure des besoins du projet, la plupart des animations étant de toutes façons très spécifiques à une scène donnée.  Une caracteristique utile de Blender que nous avons eploitée pour ces animations est la possibilité de recopier un keyframe symétrique sur un squelette dans le Pose-Mode. Ceci rend possible, si l'on se conforme a la convention de nommage symetrique des bones (ex: Arm.L et Arm.R), de réaliser une animation des actions courir et marcher sur 5 keyframes en éditant réelement 2 ou 3 keyframes du squelette, les autres clés étant obtenues par symétrie. Au cours de la modélisation des personnages, nous avons realisé, malheureusement un peu tardivement, qu'il fallait a tout prix modéliser les personnages avec très peu de polygones (low poly). L'édition des points est facilitée car il y en a moins. Mais surtout, partir d'un modele low-poly permet d'utiliser pleinement l'option de génération de surface de subdivisions de Catmull-Clark  proposée par Blender. L'avantage est multiple: une surface lisse haute resolution est obtenue avec une modélisation sur peu de points edités a la main; l'affectation des poids du skinning est interpolée automatiquement pour les nouveaux points de la subdivision, ce qui permet, en faisant une édition des poids tout a fait rudimentaire, d'obtenir un skinning très propre et bien réparti sur l'articulation sans effort supplémentaire, ce qui aurait pris une édition manuelle fastidieuse (voire impossible) sur les points d'une surface subdivisée avec la touche W (irréversible); la creation des animations peut se faire en desactivant la subdivision pour accélerer les rendus et l'interactivité de la fenêtre d'édition, ce qui gagne beaucoup de temps.
 


5) Réalisation des scènes

Les scènes sont présentées dans leur ordre d'apparition. Certaines scènes ont été utilisées plusieurs fois pour assurer la cohérence au montage (scènes entrecoupées pour les contre-champs des personnages face à face, réutilisation des scènes de marche des personnages etc.).
 


Scène Image
de référence
Modélisation Technique d'animation
Intro   Kenny et Cartman sont liés a un empty qui les parente, lui même attaché à un path qui suit le chemin du paysage; la gestuelle et la marche est animée par keyframe sur le squelette. Une contrainte de tracking sur un empty est active pour la camera, ce qui facilite le cadrage. La caméra est liée au même repère que Kenny et Cartman pour suivre les personnages en mouvement le long du chemin. Le tracking est aussi actif sur le regard des personnages, pour toutes les scenes de l'animation.
Peaceful Cows Les vaches ont été modelisées avec une seule surface (et quelques objets supplémentaires pour les détails de la tête), ce qui permet de profiter pleinement du skinning pour l'animation et de simuler la peau de la vache. Cette scène est la première faisant intervenir les vaches. La scène fut entamée avec l'animation d'une seule vache. Les pattes ont des contraintes de cinématique inverse sur 4 emptys animés par keyframe. Le regard est contraint par tracking sur un empty lui aussi animé par keyframe. Le cou, les oreilles et la queue de la vache sont animés bone par bone en cinématique directe. La cinématique inverse a été testée pour l'animation de la queue, mais la cinématique directe donne un résultat plus convaincant pour pemettre de donner l'impression de "fouet", la queue faisant un arc difficile a obtenir par cinématique inverse. Les animations des oreilles et de la queue ont ete réutilisées telles quelles pour toutes les animations faisant intervenir la vache, sans que cela ne choque. 
Le "broutement" et le ruminement de la vache ont été obtenus grâce a la création de 3 relative vertex keys pour le mesh. Ces animations ont elles aussi été réutilisées dans divers scenes. 
Le passage de une a trois vaches dans cette scène s'est fait par recopie d'instance (ALT+D) de tout ce qui concerne une vache, ce qui inclut les emptys des contraintes cinematiques, qui bien heureusement se sont retrouvés contraints aux bons squelettes dupliqués. 
La principale difficulté était de comprendre comment dissocier les animations des differentes vaches, qui sans plus de manipulations broutent alors en toute synchronicité. C'est alors que nous avons compris le fonctionnement de la fenêtre d'actions par la force des choses, et avons pu ainsi dissocier les differentes actions des vaches (make single user) et retoucher les animations alors recopiées pour les decaler dans le temps, rendre cyclique les animations des 2 vaches d'arrière plan, y introduire des variantes et donner sa spécificité à la vache de premier plan, notamment son regard creux "je regarde passer le train" en direction de Kenny et Cartman.
Taunting Cow   L'animation, comme pour Peaceful Cows, fait intervenir la cinématique inverse pour les pattes et le tracking pour les yeux. Les animations des oreilles et de la queue sont d'ailleurs les mêmes que pour cette scene. Le reste est obtenu par cinématique directe, des keyframes sur le squelette.
CartmanScared   Cartman se cache derrière Kenny. La description des techniques d'animation de la scène est identique a Intro.
Charging Cow   Pour la vache, la description est identique a Taunting Cow. L'animation est plus difficile dans ce sens ou il y a effectivement un déplacement de la vache qui se met a charger. L'animation intervient sur deux fronts: le deplacement des empty de la cinematique inverse, couples avec les keyframes de cinematique directe sur la tête et le cou. La camera suit la vache dans  un mouvement de panning (pur keyframing) avec un léger temps de retard pour donner au  spectateur l'impression inconsciente de subir l'action.
Subjective Charge   Le but de cette scène était initialement de soulager l'animateur des nombreux et complexes keyframes à réaliser pour une animation complète de la charge de la vache. C'est donc la camera qui donne le mouvement du point de vue subjectif de la vache. La camera est animée par keyframes avec l'option d'extrapolation cyclique
Les animations de Kenny et Cartman sont spécifiques a la scène et obtenus par keyframe de cinématique directe sur leur squelettes, mis à part pour les yeux avec leur contrainte de tracking. Le empty du regard de kenny est attaché a la camera de sorte que kenny regarde toujours celle-ci.
Cow Stop   La vache et Kenny sont animes par keyframes sur leur squelette et sur le empty qui les groupent (le empty parent de tous les elements en rapport avec le personnage). Le "freinage" de la vache est mis en relief par un système de particules pour simuler la poussière.
Breaking   Bien qu'il aurait été plus simple d'utiliser des vertex key pour animer les cassures de la vitre, cela a été fait en utilisant des bones (scène réalisée en début de projet). Chaque bone se déplie dans une direction donnée, et la fêlure (arête de polygone) qui suit le bone est rendue en utilisant l'option de Blender qui consiste à n'afficher que les arêtes des polygones.
zoom out La texture "Animator" est plaquée en utilisant l'option emit, afin que le texte, bien que dans l'ombre de la scène, ressorte.

Pour que la lampe (qui est plaçée devant la source lumineuse), ne projette pas d'ombre sur la table, celle-ci a été marquée insensible aux effets du spot qui projette toutes les autres ombres de la scène.

Des particules, parentées à un objet prédéfini (éclat de vitre), ont permis d'animer la tombée en éclats de l'écran.

Le bruit animé qui apparaît sur l'écran de la télé est réalisé grâce à une texture bruitée de base, qui se modifie elle-même à chaque frame.

Cette scène ayant été réalisée au début, la caméra a été simplement animée par positions clefs, alors qu'il aurait été mieux (pour la fluidité de l'animation), de lui faire suivre un chemin (ce que nous avons fait par la suite).

jumping   Kenny est animé par cinématique directe (nous avons testé la cinématique inverse, mais cela ne convient pas du tout pour des mouvements un peu complexes comme ici - l'armature de Kenny manque sans doute d'articulations pour que cette méthode marche correctement).

La caméra est en contrainte de tracking sur Kenny.

climbing   Kenny est encore animé par cinématique directe. C'est le meilleur moyen pour avoir un bon contrôle du mouvement (la cinématique inverse génère trop de déformations non souhaitables), même si cela nécessite de donner beaucoup de positions clefs...
picture   Pour parcourir le scénario, la caméra suit un chemin. Ainsi le contrôle de la trajectoire est simple. Pour rompre la fluidité du mouvement, il suffit de casser les tangentes de la courbe d'interpolation (touche V).
drawing   Pour facilité la tenue du crayon par Kenny, le crayon a été rajouté à l'armature de Kenny sous forme d'un bone (comme une prolongation du bras).

Notons que par cinématique inverse, on aurait pu obtenir le même type de résultat, d'ailleurs cette méthode a été utilisée plus loin (cf. scène Mad Kenny).

returning   Le flash sur la télé est réalisé grâce à des particules (avec la fonction Halo), sur lesquelles on fait jouer de la transparence et un scaling.

A noter que la tranparence sur les particules se règle non pas sur l'échelle globale des frames, mais sur une échelle de 1 à 100 qui représente le pourcentage de la durée de vie des particules !

Mad Kenny Le sabre a une lame avec un environment mapping recalcule a chaque image, ce qui donne l'aspect metallique au sabre et souligne l'action (le reflet du decors bouge dans le sabre au cours du deplacement de Kenny) Kenninja est animé par keyframes sur le squelette. Il porte un sabre lié a sa main droite par cinématique inverse.  La camera tourne autour de Kenny dans une vue de contre-plongée pour le mettre en valeur. Cet effet est obtenu en attachant la camera sur un path en forme de demi-cercle. La camera possède une contrainte de tracking sur un empty lie a Kenny. Une expression de colère apparaît sur le visage de Kenninja, grâce a une relative vertex key agissant sur les sourcils de kenny.
Kenny Dash   Kenny est animé par keyframes, et l'ensemble de son groupe est lié a un path en ligne droite. La camera est elle aussi liée a ce path, et possède une contrainte de tracking sur un empty non lié directement a Kenny qui facilite son cadrage au cours de sa course et de son "envol".
Slash   L'animation de la vache est reprise de celle de Peaceful Cows, avec les keyframe des bones, les relative vertex keys et ceux des empty des contraintes de tracking et de cinematique inverse. 100% identique, l'animation reprise s'intègre pourtant bien en donnant l'impression que la vache n'a pas une once de compréhension de ce qui lui arrive. La seule variante ajoutée est le tournoiement du repère principal du groupe de la vache au moment du passage de Kenny. L'animation de Kenny est reprise de la scene précedente, sur le path le long du chemin. La camera a été dissociee pour avoir une vue fixe du passage. Les Ipos associe au path on été retouchés pour donner plus de vitesse a kenny, effet accentué par l'emploi du motion blur. L'effet de passage du sabre a retardement parodie des mangas a ete obtenu en creant un plan de couleur balnche passant très près du centre optique (et donc vu comme un bande blanche par la camera). Des Ipos sur le materiau ont été utiliséa pour le faire apparaître et disparaître de manière fluide au moment voulu, en agissant sur le alpha. La contribution de ce plan pour les calculs d'ombre a ete desactivée.
Manga-Like   Kenny se relève de son envol (keyframes du squelette). Une étincelle apparaît dans ces yeux. Cet effet est obtenu avec une seule particule statique avec l'effet halo lines, avec un materiau de couleur blanche dont on contrôle le alpha par Ipo de la même manière que précedemment. Dans la plus pure tradition des mangas, la vache est sectionnée à retardement. Pour cela le Mesh de la vache a été repris et séparé en 2 parties distinctes. Le haut du corps qui tombe est anime par keyframes. Une gerbe de sang gicle du corps de la vache. Ces jets sont obtenus grâce a plusieurs systèmes de particules. Les 2 taches de sang au sol sont des systèmes de particules statiques écrasés selon l'axe z pour être applatis sur le sol. Un simple étirement par keyframes de la tache de sang donne une impression crédible d'écoulement (technique inspirée du jeu Duke Nukem 3D :) )
Kenny Alone   Kenny marche seul sur le chemin à la recherche de Cartman. Les techniques utilisées sont identiques a Intro. La tête de Kenny ainsi que son regard se déplacent lateralement ce qui donne la bonne impression de recherche.
Arrival Le reflet des plans d'eau de l'INRIA est rendu grâce à une texture d'environnement mapping (la scène est recalculée du point de vue d'un Empty placé en symétrie de la caméra par rapport aux plans - à noter que la couche contenant les plans doit être mentionnée comme non rendue dans la fenêtre de texture, sinon les plans cachent la vue de l'Empty). A cette texture on a mêlé une texture d'eau qui sert à modifier les normales du reflet en miroir plan (technique de bump mapping), ainsi on obtient des reflets agités. La caméra suit un chemin.

Vu le peu d'amplitude du mouvement de la caméra, et vu qu'aucun autre objet est en mouvement dans la scène, la texture d'environnement map est mentionnée statique (elle est calculée une fois pour toutes, au début).

Across Inria   Ici, la texture d'environnement map est recalculée à chaque frame (texture dynamique), pour que l'on voie le reflet de Kenny qui se balade).

La caméra est en translation et en même temps en tracking sur Kenny.

Animator   La main de l'animateur est animée grâce à une armature comportant autant d'articulation qu'une vraie main (il fallait que la scène, qui se déroule dans le bureau de l'animateur, soit la plus réaliste possible!).
Scratching   Le corps de Kenny est écrasé en utilisant une déformation du maillage par vertex keys.

Le sang est animé exactement de la même façon que pour la scène Manga-Like.


 
 
 


6) Conclusion

Lors de ce projet, nous pensons avoir appris à maîtriser l'ensemble des techniques d'animation qu'offre Blender. D'ailleurs, nous avons tâché d'utiliser toutes ces méthodes (mis à part les lattices et les scripts python) dans notre film.

Le temps passé pour ce projet a certes été considérable, mais il nous a permis d'explorer en profondeur toutes les possibilités d'animation dont nous pouvions avoir besoin. La documentation sur Blender et la majeure partie des tutoriaux en ligne nous ont été d'ailleurs d'une aide très précieuse pour obtenir toutes ces informations.