- 1 Contexte et objecti
- 2 Notions utiles
- 3 Travail réalisé
- 4 Limitations
- 4.1 Problème graphique
- 4.2 Un espace de dessin limité
- 4.3 Pas de sélection multiple
- 4.4 Contrainte sur les points de contrôle
- 4.5 Limites du mode d'interpolation des shapes
- 4.6 Absence de moyen de regrouper des strokes
- 4.7 Pas d’interaction simple avec le z-ordering
- 4.8 Limitation sur la morphologie des formes
- 5 Bilan critique du projet
- 6 Documents additionnels
- Dernière modification de cette page le 24 octobre 2011 à 11:09.
- Cette page a été consultée 3 526 fois.
- Contenu disponible sous Attribution-Share Alike 3.0 Unported.
- Politique de confidentialité
- À propos de Ensiwiki
- Avertissements
Malgré les avancées en modélisation et animation 3D de personnages,
beaucoup de professionnels du dessin animé préfèrent encore les dessins
purement 2D, de type bande dessinée, qui sont plus rapides et intuitifs à
réaliser et offrent plus de liberté sur le plan artistique. De plus,
dessiner en 2D permet de donner des formes inconsistantes à un
personnage selon l’angle de vue - comme les oreilles de Bugs Bunny,
représentées de face même lorsque le personnage est de profil.
Cependant, les méthodes d’animation purement 2D bénéficient peu de
l’apport de l’informatique, même lorsqu’il s’agit de reproduire un
simple mouvement de caméra autours d’un personnage immobile : chaque
dessin doit encore être réalisé à la main via un système de calques. En
effet, les traits représentant le personnage représentent soit des
silhouettes, soit des détails sur les formes volumiques indiquées par
ces dernières. Dans les deux cas une interpolation naïve, purement 2D,
ne donne pas du tout le résultat attendu.
Récemment une nouvelle méthode « 2.5 D » a été proposée pour aborder ce problème :
1) L’utilisateur dessine le personnage vu de face, sur un profil, et de dessus.
2) Un point d’ancrage 3D est associé à chaque trait, ce qui permet de dissocier forme, position, et angle de vue et forme.
3) Une interpolation 2D entre les formes, paramétrée par l’angle de vue, est utilisée pour engendrer automatiquement de nouveaux dessins plausibles lorsque la caméra change de position.
L’objectif de ce projet est dans un premier temps d’étudier et d’implémenter cette méthode. Puis dans un second temps d'analyser les limites de cette méthode et de proposer des solutions pour les éliminer. Le résultat final doit donc être un logiciel doté d'une interface homme-machine permettant à un artiste de dessiner rapidement un personnage de BD consistant.
Stroke Il s’agit d’un élément unitaire du dessin, par exemple un nez ou un œil.
Vue Il s’agit de l’apparence du dessin global pour une position donnée de la caméra. Les vues clefs sont des vues particulières correspondant à des po- sitions particulières de la caméra (dessus, dessous, . . .)
Shape Il s’agit de l’apparence d’un stroke donné dans une vue donnée. Par exemple, le stroke "nez" d’un personnage n’aura pas la même shape dans la vue de face et dans la vue de profil gauche.
Point d’ancrage Il s’agit de la position en trois dimensions d’un stroke.
Caméra Elle correspond au point d’obervation du dessin. Elle possède une po- sition en trois dimension.
Écran C’est sur l’écran qu’est projeté le dessin. Ces différentes définitions sont illustrées sur les figures 1 et
Figure 1 – Définitions.
Figure 2 – Définitions (suite).
– on obtient la vue derrière à partir de la vue face en transformant les coordonnées selon l’axe x en leurs opposés.
– on obtient la vue profil droit à partir de la vue profil gauche en transformant les coordonnées selon l’axe x en leurs opposés.
– on obtient la vue dessus à partir de la vue dessous en transformant les coordonnées selon l’axe y en leurs opposés.
Il faut donc essayer de trouver une correspondance des points des différentes shapes. Pour cela, nous avons pensé à mettre en correspondance les points les plus haut des shapes (ayant la plus grande coordonnées en y). Nous n'avons donc plus d'inversion entre les points du haut et du bas de la forme. Mais ce n'est pas suffisant car il y a encore des inversions entre les parties gauche et droite.
Figure 3 – Disparition de l’œil
.
Vous pouvez également voir cette vidéo qui illustre également ce problème : Média:pb_oeil.mpeg.
Nous avons étudié deux méthodes distinctes pour résoudre ce problème. La première est basée sur une recherche des endroits de recouvrements critiques, tandis que la deuxième tente une approche radicalement différente à l'aide de strokes de forme elliptique.
Dans un premier temps, nous avons modélisé les shapes par une surface plane. Ce qui produisait des discontinuités lorsqu'une shape passait derrière une autre shape (cf. figure 3).
Cela vient du fait que l'ensemble de la shape possède la même profondeur dans l'espace. L'idée est donc de donner une profondeur différente pour chaque point de la shape.
Notre première idée fût de diviser chaque stroke en une multitude de "sous-strokes" plus petits ayant chacun leurs propres points d'ancrages. Cette méthode a deux inconvénients majeurs : la première étant qu'elle ne fait que limiter le problème en rendant la discontinuité moins visible. La seconde, plus gênante, est que cette méthode crée des petits espaces entre les sous-strokes.
Ce dernier inconvénient rend l'utilisation de cette méthode non viable.
La seconde idée est de donner un volume à la stroke. Étant donné que les traits des personnages de BD sont le plus souvent arrondis, nous avons décidés de représenter chaque stroke par une ellipsoïde (cf. rapport pour calcul des axes de l’ellipsoïde).
Après le calcule de l'ellipsoïde, nous faisons une interpolation comme dans la méthode initiale. Mais cette fois-ci, au lieu de laisser cette interpolation dans un plan, nous la projetons sur l'ellipsoïde. La shape aura donc une forme bombée qui correspondra plus à sa forme réelle.
Les problèmes qui se posent sont que certains ellipsoïdes sont trop grand et viennent à en cacher d'autres. Par exemple, il est fréquent que les yeux des personnages soient à l'intérieur de l'ellipsoïde définissant la tête du personnage. On a alors l'impression que le personnage n'a pas d'yeux. Cela pourrait être améliorer en essayant de faire bouger les points d'ancrage intelligemment.
Notre implémentation utilise naïvement des GL_POLYGON sans tenir compte de la concavité des polygones passés en paramètre. On a un affichage médiocre des polygônes concaves.
Une solution serait d'utiliser les fonctions de pavage de glu (avec gluTesselator).
Pour régler ce problème, il suffirait de remplacer, dans le calcul de $\phi$ et de $\theta$, la position de la caméra par un point fixe dans le plan de la caméra. La position de la caméra coïnciderait avec ce point lorsque son axe z vise le centre de la scène.
La solution serait de pouvoir adapter le nombre de points de contrôles utilisés pendant l'interpolation en subdivisant le polygone de contrôle. Le problème est que l'on ne peut pas facilement subdiviser un polygone de contrôle d'une cardinale spline. Peut être faudrait il se ramener à l'utilisation de b-spline. Le polygone de contrôle de cette spline serait généré par une méthode des moindres carrées appliquée sur les points entrés par l'utilisateur. Autrement, on pourrait utiliser une autre représentation que des splines pour modéliser les contours (ce fut d’ailleurs le cas dans le logiciel support de l'article de Siggraph 2010 sur la 2.5D).
Utilisez votre imagination. Bien sûr, il existe de nombreux scenarii qui n’impliquent aucune expérience de vie. Vous pouvez utiliser vos centres d’intérêt et votre imagination pour créer une idée toute nouvelle tant que vous y incluez assez de détails qui peuvent être racontés afin d’aider les gens à se connecter aux personnages ou à l’histoire. Les détails qui peuvent être racontés incluent des thèmes qui sont universels. Par exemple, la plupart des gens peuvent s’identifier à une histoire universelle, qu’elle se déroule dans le monde réel contemporain, dans une ère futuriste ou bien dans un décor fantastique de cape et d’épée.Créez un personnage intéressant. Faites la liste des traits de caractère que vous voudriez donner à un personnage. Notez ses qualités comme ses défauts pour éviter d’en faire un personnage trop parfait.
Récemment une nouvelle méthode « 2.5 D » a été proposée pour aborder ce problème :
1) L’utilisateur dessine le personnage vu de face, sur un profil, et de dessus.
2) Un point d’ancrage 3D est associé à chaque trait, ce qui permet de dissocier forme, position, et angle de vue et forme.
3) Une interpolation 2D entre les formes, paramétrée par l’angle de vue, est utilisée pour engendrer automatiquement de nouveaux dessins plausibles lorsque la caméra change de position.
L’objectif de ce projet est dans un premier temps d’étudier et d’implémenter cette méthode. Puis dans un second temps d'analyser les limites de cette méthode et de proposer des solutions pour les éliminer. Le résultat final doit donc être un logiciel doté d'une interface homme-machine permettant à un artiste de dessiner rapidement un personnage de BD consistant.
Notions utiles
Commençons par définir les termes utilisés dans la suite de ce document. Certains termes sont laissés en anglais car ils correspondent aux termes utilisés dans le document Siggraph ou dans le code de notre logiciel.Stroke Il s’agit d’un élément unitaire du dessin, par exemple un nez ou un œil.
Vue Il s’agit de l’apparence du dessin global pour une position donnée de la caméra. Les vues clefs sont des vues particulières correspondant à des po- sitions particulières de la caméra (dessus, dessous, . . .)
Shape Il s’agit de l’apparence d’un stroke donné dans une vue donnée. Par exemple, le stroke "nez" d’un personnage n’aura pas la même shape dans la vue de face et dans la vue de profil gauche.
Point d’ancrage Il s’agit de la position en trois dimensions d’un stroke.
Caméra Elle correspond au point d’obervation du dessin. Elle possède une po- sition en trois dimension.
Écran C’est sur l’écran qu’est projeté le dessin. Ces différentes définitions sont illustrées sur les figures 1 et
Figure 1 – Définitions.
Figure 2 – Définitions (suite).
Travail réalisé
Calcul des vues clefs secondaires
On a vu précédemment que le dessinateur ne doit fournir que trois vues clefs, les vues primaires. Nous avons donc dû générer les autres vues clefs à partir de celles-ci. Pour cela, nous avons procédé de la manière suivante :– on obtient la vue derrière à partir de la vue face en transformant les coordonnées selon l’axe x en leurs opposés.
– on obtient la vue profil droit à partir de la vue profil gauche en transformant les coordonnées selon l’axe x en leurs opposés.
– on obtient la vue dessus à partir de la vue dessous en transformant les coordonnées selon l’axe y en leurs opposés.
Calcul des points d’ancrages
Le calcul du point d'ancrage d'un stroke se fait à partir de ses shapes dans les vues clefs primaires. Tout d'abord, on calcule les barycentres des shapes face, gauche et dessous du stroke en question. On détermine ensuite un point dont la projection sur l'écran dans les vues clefs primaires donne tour à tour les barycentres calculés précédemment. C'est alors ce point qui est choisi comme point d'ancrage du stroke.Interpolation des formes
Les courbes utilisées pour dessiner les formes dans notre logiciel sont de type cardinal spline. L'utilisateur place directement les points de contrôles sur l'écran, et la courbe est générée automatiquement par le logiciel. Le problème qui se pose est donc le suivant : comment générer, pour une vue intermédiaire, la forme correspondante d'un stroke ? Nous avons choisi comme solution d'interpoler les points de contrôles des courbes entre les différentes vues impliquées.Amélioration
Passage de courbes fermées à ouvertes
Lorsqu'une courbe ouverte doit être transformée en une courbe fermée, cela pose des problèmes. En effet, on ne sait pas où la courbe doit se couper et il y a de grandes chances qu'un croisement apparaisse. Pour remédier à cela, nous avons commencer par réordonnancer les points.Réordonnancement des points
Pour le dessin des vues, le dessinateur créé une forme composée de points qu'il déplacera pour dessiner les autres vues. Il peut donc prendre un point qui se trouvait sur le haut de la courbe et le faire passer sur le bas. Ceci entraîne des déplacements trop irréalistes lors des interpolations. Ceci est visible sur les courbes fermées.Il faut donc essayer de trouver une correspondance des points des différentes shapes. Pour cela, nous avons pensé à mettre en correspondance les points les plus haut des shapes (ayant la plus grande coordonnées en y). Nous n'avons donc plus d'inversion entre les points du haut et du bas de la forme. Mais ce n'est pas suffisant car il y a encore des inversions entre les parties gauche et droite.
Orientation de la courbe
Pour régler le problème de l'inversion gauche-droite, nous avons pensé à mettre les listes de points de telle sorte que les courbes soit orientés dans le sens horaire. Nous faisons alors une distinction entre le cas des courbes fermées et le cas des courbes ouvertes.Cas de l’œil qui disparaît brutalement
Une autre limitation du logiciel d'origine est la suivante : lorsque l'on effectue une rotation de la caméra autour d'un personnage, on constate que certains strokes disparaissent brutalement derrière d'autres. Cela crée une discontinuité à l'écran qui n'est pas agréable à observer. On peut constater ce phénomène en particulier sur l'œil d'un personnage. Lorsque la caméra se déplace vers l'arrière du personnage, l'œil est soudainement masqué par le stroke du visage. Cela est dû au fait que la caméra devient plus éloignée du point d'ancrage de l'œil que du point d'ancrage du visage. Alors le stroke de l'œil se trouve recouvert par le stroke du visage. Ce phénomène est illustré par la figure suivante :Figure 3 – Disparition de l’œil
.
Vous pouvez également voir cette vidéo qui illustre également ce problème : Média:pb_oeil.mpeg.
Nous avons étudié deux méthodes distinctes pour résoudre ce problème. La première est basée sur une recherche des endroits de recouvrements critiques, tandis que la deuxième tente une approche radicalement différente à l'aide de strokes de forme elliptique.
Interpolation par formes critiques
On cherche dans un premier temps à déterminer les angles critiques pour lesquels un recouvrement a lieu entre deux shapes. Une fois celui trouvé, on va déterminer une nouvelle shape qui correspond à l'allure de la shape recouverte. Le but de la manœuvre est, lorsqu'on arrive à proximité d'un angle critique, d'interpoler avec la la nouvelle shape et non plus avec la shape d'origine (voir le rapport pour une explication approfondie de la méthode).Strokes elliptiques
Approche généraleDans un premier temps, nous avons modélisé les shapes par une surface plane. Ce qui produisait des discontinuités lorsqu'une shape passait derrière une autre shape (cf. figure 3).
Cela vient du fait que l'ensemble de la shape possède la même profondeur dans l'espace. L'idée est donc de donner une profondeur différente pour chaque point de la shape.
Notre première idée fût de diviser chaque stroke en une multitude de "sous-strokes" plus petits ayant chacun leurs propres points d'ancrages. Cette méthode a deux inconvénients majeurs : la première étant qu'elle ne fait que limiter le problème en rendant la discontinuité moins visible. La seconde, plus gênante, est que cette méthode crée des petits espaces entre les sous-strokes.
Ce dernier inconvénient rend l'utilisation de cette méthode non viable.
La seconde idée est de donner un volume à la stroke. Étant donné que les traits des personnages de BD sont le plus souvent arrondis, nous avons décidés de représenter chaque stroke par une ellipsoïde (cf. rapport pour calcul des axes de l’ellipsoïde).
Après le calcule de l'ellipsoïde, nous faisons une interpolation comme dans la méthode initiale. Mais cette fois-ci, au lieu de laisser cette interpolation dans un plan, nous la projetons sur l'ellipsoïde. La shape aura donc une forme bombée qui correspondra plus à sa forme réelle.
Les problèmes qui se posent sont que certains ellipsoïdes sont trop grand et viennent à en cacher d'autres. Par exemple, il est fréquent que les yeux des personnages soient à l'intérieur de l'ellipsoïde définissant la tête du personnage. On a alors l'impression que le personnage n'a pas d'yeux. Cela pourrait être améliorer en essayant de faire bouger les points d'ancrage intelligemment.
Limitations
Problème graphique
Commençons par les problèmes d'ordre graphique.Notre implémentation utilise naïvement des GL_POLYGON sans tenir compte de la concavité des polygones passés en paramètre. On a un affichage médiocre des polygônes concaves.
Une solution serait d'utiliser les fonctions de pavage de glu (avec gluTesselator).
Un espace de dessin limité
Notre logiciel interdit les déplacement verticaux et horizontaux (l'axe z de la caméra suit toujours la droite reliant le centre de la scène à la position de la caméra). Cela reduit le champ de vision de l'utilisateur ainsi que la taille de l'espace de dessin.Pour régler ce problème, il suffirait de remplacer, dans le calcul de $\phi$ et de $\theta$, la position de la caméra par un point fixe dans le plan de la caméra. La position de la caméra coïnciderait avec ce point lorsque son axe z vise le centre de la scène.
Pas de sélection multiple
L'utilisateur ne peut pas selectionner plusieurs objets en même temps. Il sera souvent amené à effectuer des actions répétitive (comme appliquer des miroirs successivement sur plusieurs strokes).Contrainte sur les points de contrôle
Une autre limitation de notre implémentation est que le nombre de points de controles d'une stroke est le même pour chaque vue et chaque humeur. Cela peut gêner le dessinateur, car certaines vue (comme la vue de dessous) nécessitent souvent beaucoup moins de points de contrôles qu'une autre vue (comme la vue de face). De ce fait, l'utilisateur devra se demander à l'avance, en considérant chaque vue et chaque humeur, de combien de points de contrôles il aura besoin. Cela n'est pas évident pour de nouveaux utilisateurs.La solution serait de pouvoir adapter le nombre de points de contrôles utilisés pendant l'interpolation en subdivisant le polygone de contrôle. Le problème est que l'on ne peut pas facilement subdiviser un polygone de contrôle d'une cardinale spline. Peut être faudrait il se ramener à l'utilisation de b-spline. Le polygone de contrôle de cette spline serait généré par une méthode des moindres carrées appliquée sur les points entrés par l'utilisateur. Autrement, on pourrait utiliser une autre représentation que des splines pour modéliser les contours (ce fut d’ailleurs le cas dans le logiciel support de l'article de Siggraph 2010 sur la 2.5D).
Limites du mode d'interpolation des shapes
L'interpolation des formes est plutôt naïve. On interpole les points de contrôle, ce qui peut nous ammener à des courbes splines dégénérées où il y aurait des boucles. De nombreux travaux de recherches sur le morphing résolvent le problème de l'interpolation de formes ou de silhouettes. Cependant les algorithmes sous-jacents sont complexes et peuvent amener un temps de calcul trop long pour une application en temps réel.Absence de moyen de regrouper des strokes
Notre logiciel ne permet aucun groupement entre les strokes. Par contre, le logiciel support de l'article Siggraph 2010 cité en introduction permet à l'utilisateur de grouper des strokes (cela consiste à unifier leur point d'ancrage). En outre il permet de créer des conditions booléennes d'affichage. Par exemple, on peut dessiner une langue et une bouche et donner la condition booléenne "intersection avec bouche" à la langue, ainsi elle ne pourra pas dépasser de la bouche. On a alors visuellement l'impression que la langue est à l'interieur de la bouche.Pas d’interaction simple avec le z-ordering
Notre logiciel ne permet pas d'interragir de manière directe ou indirecte (à part bien sûr en déplaçant les points de contrôle) d'interagir avec les point d'ancrages. On ne peut pas demander explicitement au programme de passer une stroke devant une autre sur une vue donnée. Tout est calculé par le programme. L'utilisateur sera souvent amené à raisonner sur la position du barycentre de ses points de contrôle pour obtenir le z-ordering qu'il souhaite sur une vue donnée.Limitation sur la morphologie des formes
Les formes qu'un utilisateur peut dessiner sont limitées d'un point de vue morphologique : on ne peut créer une stroke trouée.2.Comment faire un dessin anime avec appareil à vos ressources. Votre imagination est peut-être illimitée, mais il y a des chances que votre budget et votre talent le soient. Lorsque vous rassemblez des idées pour un dessin animé, gardez à l’esprit la somme que vous pouvez investir et ce que vos talents artistiques peuvent produire.
- Si vous êtes débutant, vous devrez peut-être rester éloigné des thèmes et des histoires qui demandent des scènes d’animation complexes, comme les énormes batailles ou une machinerie compliquée. Vos dons pour l’animation devront peut-être être affinés et plus aiguisés avant que vous soyez prêt à vous attaquer à un projet de cette taille.
- Ne perdez pas de vue non plus que vous aurez besoin de plus d’équipement en fonction de la complexité de votre dessin animé. Un dessin animé qui fait appel à du modelage avec une douzaine de personnages et quatre scènes demandera plus de matériel qu’une animation celluloïd ne comprenant qu’une seule scène. Si le budget est un souci, faites court et simple.Pendez à la durée. La bonne durée de votre dessin animé variera en fonction du marché que vous visez. Connaître la durée dès le départ vous aidera à réfléchir à une histoire qui peut convenir à ce laps de temps.
- Si vous voulez créer un dessin animé qui peut se décliner en une émission à long terme, il devra durer 11 minutes ou 20-25 minutes.
- Les longs-métrages animés peuvent aller de 60 à 120 minutes.
- Si la seule chose que vous voulez faire c’est un dessin animé unique pour internet, vous pouvez en faire un qui dure entre 1 et 5 minutes. Faire quelque chose de plus long pourrait décourager les gen
- Par exemple, un dessin animé qui parle de choses tragiques comme la mort de l’être aimé doit être réservé à un public un peu plus âgé. Si vous visez un jeune public, vous feriez mieux de choisir un sujet qui est un peu plus simple à comprendre et pl
- Si vous voulez créer un dessin animé avec un ton sérieux, pensez aux expériences qui vous ont construit : la perte d’un ami, un amour non partagé, le fait de travailler dur pour atteindre un objectif qui semble impossibles, etc.
- Si vous voulez quelque chose de plus humoristique, choisissez une situation de tous les jours comme attendre un e-mail ou être dans les embouteillages et exagérez la difficulté de la situation de façon humoristique.
- Sinon, vous pouvez utiliser une chose qui est déjà drôle pour créer un dessin animé humoristique.
- Il s’agit d’une étape importante, peu importe la simplicité ou la complexité de votre dessin animé. Tandis que le personnage d’un dessin animé plus long et plus sérieux devra être davantage développé, les dessins animés humoristiques requièrent un personnage qui a un but clair et des traits de caractère précis qui lui permettent de réagir à sa façon.
Utilisez votre imagination. Bien sûr, il existe de nombreux scenarii qui n’impliquent aucune expérience de vie. Vous pouvez utiliser vos centres d’intérêt et votre imagination pour créer une idée toute nouvelle tant que vous y incluez assez de détails qui peuvent être racontés afin d’aider les gens à se connecter aux personnages ou à l’histoire. Les détails qui peuvent être racontés incluent des thèmes qui sont universels. Par exemple, la plupart des gens peuvent s’identifier à une histoire universelle, qu’elle se déroule dans le monde réel contemporain, dans une ère futuriste ou bien dans un décor fantastique de cape et d’épée.Créez un personnage intéressant. Faites la liste des traits de caractère que vous voudriez donner à un personnage. Notez ses qualités comme ses défauts pour éviter d’en faire un personnage trop parfait.
- Il s’agit d’une étape importante, peu importe la simplicité ou la complexité de votre dessin animé. Tandis que le personnage d’un dessin animé plus long et plus sérieux devra être davantage développé, les dessins animés humoristiques requièrent un personnage qui a un but clair et des traits de caractère précis qui lui permettent de réagir à sa façon.


Aucun commentaire:
Enregistrer un commentaire