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.