Télécharger la présentation
La présentation est en train de télécharger. S'il vous plaît, attendez
1
ANIMATION PAR TRAJECTOIRES
° Définition ° Choix de la courbe ° Contrôle du mouvement le long d’une courbe ° Interpolation de rotations représentées par des quaternions ° Suivi du trajet impliquant une modification de l’orientation de l’objet ° Lissage d’un trajet ° Détermination d’un trajet sur une surface 1. Tomas Akenine-Möller, Eric Haines, Real-Time Rendering. A K Peters, 2002, 835p. Rick Parent, Animatique Algorithmes et techniques. Vuibert, Paris, 2003, 530p. 2.
2
Définition Toutes les caractéristiques d’une scène peuvent varier dans le temps : - un point de référence sur un objet de la scène, - la position de la caméra, - la couleur d’un objet, - la position d’une source lumineuse, - etc. Pour réaliser de telles animations, nous utilisons des trajectoires i.e. des chemins qui représentent le parcours à suivre par un objet. Outre les objets, il est également possible de lier une trajectoire à une caméra ou à une source lumineuse. Les trajectoires sont définies à l’aide de courbes paramétriques 3D : C(u) (Cx(u), Cy(u), Cz(u)), u [0, 1].
3
Description du contexte auquel fait face l’animateur
Cette méthode permet de spécifier avec précision le mouvement d’objets. Les attentes de l’animateur sont claires. Très peu d’incertitude à propos des positions et orientations à produire, l’ordinateur sert uniquement à calculer les valeurs réelles. Choix de la trajectoire Interpolation ou approximation ou techniques de points de contrôle Courbe d’interpolation Courbe d’approximation ou d’ajustement Positions effectives par lesquelles la courbe doit passer. Échantillon de points rapprochés de la courbe
4
Critères de choix de la trajectoire
Courbe de Bézier Liste de points permettant de contrôler la forme de la courbe Technique de points de contrôle Complexité de la trajectoire Complexité (degré) Moins rapide est l’évaluation des polynômes. Meilleur choix : les polynômes cubiques par morceau. Fournissent un tracé suffisamment régulier tout en procurant suffisamment de flexibilité pour satisfaire aux contraintes de continuité. Un polynôme d’ordre supérieur n’offre pas d’avantages significatifs.
5
Critères de choix de la trajectoire
Continuité de la courbe composée (courbe par morceaux) aux points de jonction entre segments adjacents La régularité de la courbe obtenue est une considération importante. Le nombre de dérivées continues de l’équation de la courbe. Discontinuité positionnelle Continuité d’ordre 0 mais pas tangentielle Continuité d’ordre 0 et 1 (en animation, cela est suffisant habituellement)
6
Critères de choix de la trajectoire
Contrôle global par opposition à contrôle local Lorsqu’on trace une courbe, on procède souvent par raffinements successifs. Contrôle local : la modification d’un seul point de contrôle a un effet sur une portion limitée de la courbe. Contrôle global : le repositionnement d’un point de contrôle redéfinit, même légèrement, la totalité de la courbe. Plus avantageux Quasiment toutes les courbes composées présentent un contrôle local. Les courbes de Bézier de degré élevé présentent un contrôle global. Note : Polygone de contrôle d’une courbe de degré 10
7
Comparaison de l’effet local et global du déplacement d’un point de contrôle
Contrôle local Contrôle global
8
En résumé … Il existe un grand nombre de formulations possibles. La formulation spécifique choisie dépend des critères précédents. En animation, les choix suivants sont souvent faits : la spline de Catmul-Rom la courbe de Bézier de degré N à partir des points P0, P1, …, PN le mélange parabolique.
9
Contrôle du mouvement le long de la trajectoire C(u), u [0, 1]
1ière étape d’une animation : choisir la forme de la trajectoire. 2ième étape d’une animation : déterminer la vitesse de parcours de la trajectoire C(u) par rapport à u. Premier objectif : Fournir une méthode permettant de progresser le long de la courbe en incréments égaux. Notons d’abord que la variation constante du paramètre u ne signifie pas que les positions euclidiennes varieront d’une quantité constante i.e. d’une vitesse constante. C(u) u
10
Comment assurer une vitesse de parcours constante ?
Moyen utilisé: la trajectoire doit être paramétrée par longueur d’arc i.e. selon la distance parcourue sur la courbe. Les 2 problèmes suivants doivent être résolus : Étant donné les paramètres u1 et u2, trouver la distance à parcourir sur la courbe entre u1 et u2. Étant donné une longueur d’arc s et une valeur paramétrique u1, trouver u2 tel que s = distance à parcourir sur la courbe entre u1 et u2. Il faut établir la relation entre u et la longueur d’arc en spécifiant la fonction s = G(u), qui donne la longueur de la courbe de son point de départ jusqu’au point correspondant à u. Si G-1 existe, la courbe peut être paramétrée efficacement par longueur d’arc, i.e. C(G -1(s)). Ensuite, l’animateur doit fixer la distance que l’objet doit parcourir le long de la courbe à chaque intervalle de temps.
11
Approche analytique au calcul de la longueur d’arc
Pour calculer la longueur d’une courbe C(u) entre 2 valeurs u1 et u2, il s’agit d’évaluer l’intégrale suivante : u2 s = C(u) . C(u) du u1 Impossible à résoudre analytiquement pour une courbe arbitraire. On doit opter pour des techniques d’intégration numériques.
12
Estimation de la longueur d’arc par différentiation vers l’avant
Stratégie la plus simple et la plus facile à concevoir pour faire le lien entre le paramètre u et la longueur d’une portion de la courbe : Échantillonner la courbe avec une multitude de valeurs paramétriques. À chaque valeur paramétrique est associée un point sur la courbe. La longueur d’arc peut être estimée en calculant la distance linéaire entre points adjacents sur la courbe. Un tableau T est construit avec des longueurs d’arc indexées par des valeurs paramétriques (ui = i * différence entre 2 valeurs de suite de u, i = 0, 1, 2, …, 20). T 1 2 3 18 19 20 = 0 = Distance entre les points C(0) et C(0.05) = T[1] + Distance entre les points C(0.05) et C(0.10) = T[2] + Distance entre les points C(0.10) et C(0.15) = T[19] + Distance entre les points C(0.95) et C(1.00)
13
Utilisation du tableau T pour estimer la longueur d’arc entre le début de la courbe et le point C(u) sur la courbe où u est fixé dans [0, 1] Approximation grossière : L’indice i de la composante dans le tableau T dont le paramètre est le plus proche de u est obtenu comme suit : i = 0.5 + u / différence entre 2 entrées successives de u où [ x ] désigne la partie entière de x. Approximation grossière de la longueur d’arc : T[i]. Approximation par interpolation entre les longueurs d’arc correspondant aux entrées de chaque côté de u : i = u / différence entre 2 entrées successives de u Approximation T[i] + (T[i+1] – T[i]) * (u - ui) / (ui+1 - ui) par interpolation
14
Utilisation du tableau T pour estimer la valeur de u, étant donnée la longueur d’arc s
« Étant donné les paramètres u1 et u2, trouver la distance à parcourir sur la courbe entre u1 et u2 » revient à : appliquer la méthode précédente 2 fois et soustraire les distances respectives obtenues. Problème inverse : Approximation grossière du paramètre u associé à s : ui où l’indice i de la composante dans le tableau T dont la longueur d’arc est la plus proche de celle de s est obtenu par recherche binaire. Approximation par interpolation du paramètre u associé à s : ui + (ui+1 – ui) * (s – T(i)) / (T(i+1) – T(i)) où l’indice i est maximal avec T[i] s.
15
Utilisation du tableau T pour estimer la valeur de u, étant donnée la longueur d’arc s
« Étant donné une longueur d’arc s et une valeur paramétrique u1, trouver u2 tel que s = distance à parcourir sur la courbe entre u1 et u2 », cela revient à : - estimer la longueur d’arc associée à u1, - ajouter le résultat à s pour obtenir s’, - utiliser la méthode précédente pour estimer la valeur paramétrique u correspondant à s’. Approche facile à mettre en œuvre, intuitive et rapide à calculer. Avantages : Les résultats sont des approximations. Désavantages : Méthodes pour réduire les erreurs : suréchantillonner la courbe : valeurs paramétriques sur la courbe avec 1000 entrées dans T. chaque intervalle est subdivisé en 10 sous-intervalles. - utiliser des techniques d’interpolation d’ordre supérieur (non linéaire).
16
Approche adaptative Pour mieux contrôler la précision de nos estimés, on peut utiliser une approche qui effectue plus de calculs dans les zones estimées contenir des erreurs importantes. Comme auparavant, il faut construire une structure de données T où la iième entrée est de la forme : (une valeur paramétrique ui, la longueur d’arc de l’origine de la courbe à la position correspondant à ui). une liste chaînée (le # d’entrées n’est pas connu à priori)
17
Description de l’algorithme adaptatif
1. Soit - la liste vide T, - la liste vide S des segments de la courbe à traiter, (chaque entrée renferme les 2 valeurs paramétriques du segment à traiter). Ajouter l’élément <0, 0> dans la liste T. Ajouter l’élément <0, 1> dans la liste S. 2. Choisir la première entrée de S de la forme (u, u). Calculer um : la valeur médiane entre u et u. Calculer le point sur la courbe C(um). Calculer le point sur la courbe C(u).
18
Description de l’algorithme adaptatif (suite)
3. Si | ||C(u) – C(u) || - (||C(um) – C(u) || + ||C(u) – C(um) || ) | seuil alors ranger dans T l’élément < um, T(u) + ||C(um) – C(u) || >, ranger dans T l’élément < u, T(um) + ||C(u) – C(um) || >. sinon ranger au début de S les 2 éléments suivants : <u, um> et < um, u >. 4. Si la liste S n’est pas vide, retourner à l’étape 2. Ces valeurs sont déjà dans T. FIN Inconvénient : À un stade précoce de la procédure, 2 moitiés de segment peuvent indiquer qu’il est possible d’arrêter la subdivision. Forcer la subdivision jusqu’à un certain niveau avant d’appliquer la procédure adaptative. Solution :
19
Description de l’algorithme adaptatif (fin)
au-dessus du seuil au-dessous du seuil Note : La recherche d’une entrée dans T n’est pas aussi simple que précédemment. On peut opter pour une recherche binaire.
20
Contrôle de la vitesse à laquelle la courbe est parcourue
Jusqu’ici, nous avons considéré une progression sur la courbe par intervalles égaux de longueur d’arc (vitesse constante). Pour un parcours contrôlé de la courbe, on doit définir la fonction : s(t) : [0, tmax] longueur d’arc parcouru à l’instant t où tmax désigne la durée du mouvement. Note : Pour se simplifier la tâche, on peut normaliser le paramètre t qui devient t’ = t / tmax. En atteignant la 2ième extrémité de la courbe à tmax, s devient : s’ = s / longueur de la courbe au complet. La courbe d’espace C(u) définit le point où il faut se rendre, alors que la fonction s(t) en définit l’instant.
21
Procédure à suivre pour contrôler la vitesse
À chaque instant t = t0, t1 = t0 + , t2 = t0 + 2, …, tmax, > 0 - calculer s(t), - calculer u tel que la longueur d’arc de l’origine de la courbe à la position correspondant à u est égale à s(t), - déterminer la position C(u) sur la courbe. Hypothèses souvent utilisées : • La totalité de la longueur d’arc de la courbe doit être parcourue pendant la totalité du temps donné. • La fonction s(t) doit être monotone croissante i.e. la courbe doit être parcourue sans déplacement arrière. • La fonction s(t) doit être continue, i.e. il ne doit pas y avoir de sauts instantanés sur la courbe.
22
Un objet accélère à partir d’une position arrêtée, atteint une vitesse
Exemple courant de contrôle de la vitesse (parcours à 2 phases de type démarrage / arrêt) Un objet accélère à partir d’une position arrêtée, atteint une vitesse maximale et ralentit à nouveau progressivement jusqu’à l’arrêt. s(t) = sin( t – / 2) / 2, t [0, 1] s(t) s(t) est normalisée. 1 t 1 s'(t) = cos( t – / 2) / 2, t [0, 1] La vitesse est nulle à t = 0 et t = 1. Elle est maximale à t = 0,5. Cela indique une accélération à partir d’une position d’arrêt en début de mouvement et une décélération jusqu’à l’arrêt en fin de course.
23
En posant t = t1 et t = t2, les début et fin du parcours intermédiaire
Exemple de contrôle de la vitesse (parcours à 3 phases : accélération – vitesse constante - décélération) En posant t = t1 et t = t2, les début et fin du parcours intermédiaire à vitesse constante, on obtient : s(t) 2 t1 sin t - + 1 f t1 2 . t t1 1 • • 2 t1 + t - t1 t s(t) = t1 t t2 f t1 t2 1 2 t1 (1 – t2) 2 sin t - t2 1 - t2 2 f + t2 - t1 + . t2 t où f = 2 t1 + t2 - t1 + 2(1 – t2) s(t) est définie de telle sorte que: s(0) = 0 et s(1) = 1, s(t) est continue, s'(t) est continue.
24
Pour éviter l’évaluation des fonctions trigonométriques, une approche
Exemple de contrôle de la vitesse où des hypothèses sont faites concernant l’accélération Pour éviter l’évaluation des fonctions trigonométriques, une approche consiste à établir des hypothèses de base concernant l’accélération. Cas élémentaire : accélération accélération nulle temps durée vitesse vitesse constante = v = longueur de la courbe durée de l’animation v temps durée
25
Cas élémentaire (suite)
s(t) longueur de la courbe temps durée La fonction s(t) peut être obtenue par intégration. L’intégration introduit une constante; celle-ci est nulle car s(0) = 0.
26
Accélération et décélération constantes en début et fin de mouvement.
Exemple de contrôle de la vitesse où des hypothèses plus générales sont faites concernant l’accélération Accélération et décélération constantes en début et fin de mouvement. Accélération nulle en milieu de mouvement. Accélération / décélération a1 t t1 a(t) = t1 t t2 a1 t2 1 a2 t2 t temps t1 a2 où a1 > 0 a2 < 0.
27
Exemple de contrôle de la vitesse où des hypothèses plus générales sont faites concernant l’accélération Hypothèses : a1 t + v0 t t1 v(t) = a1 t1 + v0 t1 t t2 v(0) = v0 a2 t + a1 t1 – a2t2 + v0 t2 t v(t) est continue Vitesse On peut en déduire v(1). a1 t1 + v0 v0 temps t1 t2 1
28
Exemple de contrôle de la vitesse où des hypothèses plus générales sont faites concernant l’accélération distance à parcourir Hypothèses : s(0) = 0 s(t) est continue s(1) = L > 0 ½ a1 t2 + v0t t t1 s(t) = (a1 t1 + v0) t - ½ a1 t12 t1 t t2 ½ a2 t2 + (a1 t1 – a2t2 + v0 ) t + ½ a2 t22 - ½ a1 t12 t2 t s(t) Note : L a2 < 0 a1 t1 + v0 - ½ a1 t12 > L (a1 t1 + v0) t2 - ½ a1 t12 • (½ a1 t1 + v0) t1 • temps t1 t2 1
29
En fixant a1, v0 , t1, t2 et L, l’animateur détermine facilement a2.
Exemple de contrôle de la vitesse où des hypothèses plus générales sont faites concernant l’accélération En fixant a1, v0 , t1, t2 et L, l’animateur détermine facilement a2. s(1) = L a2 = L - a1 t1 - v0 + ½ a1 t12 0.5 – t t22 Cas particulier : v(1) = v0 = 0 a2 + a1 t1 – a2t2 = 0 a2 = - a1 t1 / (1 - t2) < 0. Cette dernière méthode est beaucoup plus souple; elle permet à l’animateur d’avoir un plus grand contrôle du mouvement final grâce à la possibilité de définir divers paramètres.
30
à des instants précis (ti, v(ti), s(ti)), i = 1, 2, …, N
Exemple de contrôle de la vitesse qui consiste à fixer des positions et des vitesses à des instants précis (ti, v(ti), s(ti)), i = 1, 2, …, N Des techniques d’interpolation sont utilisées pour définir v(t). Cela peut donner lieu à des formes bizarres. Exemple : s(0) = 0, s(1) = L, v(0) = 0, v(1) = 0, s(t1) = s1, v(t1) = v1. v(t) est définie à partir de 2 fonctions du second degré : u(t), t t1 v(t) v(t) = w(t), t t1 v1 v1 temps temps t1 t1 On revient sur nos pas. Plusieurs fonctions sont possibles pour u(t) selon que s1 > t1v1 / 2 ou non. Plusieurs fonctions sont aussi possibles pour w(t) selon la valeur : L - s1.
31
Interpolation de rotations représentées par des quaternions
Les quaternions sont utiles pour la représentation d’orientations. L’une des principales raisons de choisir des quaternions tient au fait qu’ils peuvent être aisément interpolés. Il faut d’abord noter qu’une interpolation linéaire directe de quaternions produit un mouvement non linéaire. Intervalles inégaux Intervalles égaux Des interpolations linéaires également espacées de trajet rectiligne entre 2 points d’un cercle génèrent un espacement inégal des points après projection sur un cercle.
32
Interpolation de rotations représentées par des quaternions
Afin d’éviter les effets d’agrandissement sur l’interpolation, on utilise généralement des quaternions unitaires i.e. des points de la sphère unitaire dans l’espace 4D. Une interpolation linéaire à intervalles égaux entre 2 quaternions unitaires ne produira pas des intervalles espacés de manière égale sur la sphère unité. Nous allons plutôt considérer une interpolation linéaire sphérique: slerp(q1, q2, t) = [q1 sin(1 – t) + q2 sin t ] / sin où cos = q1. q2 > 0 où q1 et q2 sont des quaternions unitaires. produit scalaire
33
Interpolation linéaire sphérique
Propriétés : slerp(q1, q2, 0) = q1 slerp(q1, q2, 1) = q2 (3) Si est très petit, sin et slerp(q1, q2, t) (1 – t) q1+ t q2 (4) slerp(q1, q2, t) sphère 4D unitaire, t [0, 1] Soient q1 et q2 des quaternions unitaires, slerp(q1, q2, t) . slerp(q1, q2, t) = 1 produit scalaire (5) La courbe slerp(q1, q2, t) (sphère 4D unitaire plan formé par q1, q2 et l’origine) (q1 x q2) . P = 0 (6) slerp(q1, q2, 0.5) = sin /2 (q1+ q2) sin On peut calculer q1+ q2 et normaliser le résultat.
34
Interpolation linéaire sphérique et discontinuité du 1er ordre
Difficulté rencontrée avec l’approche précédente : discontinuité du premier ordre. Solution : utiliser une interpolation cubique de Bézier pour lisser l’interpolation. K. Shoemake, Animating Rotation with Quaternion Curves, Computer Graphics (Proceedings of SIGGRAPH 85), 19(3), p Tomas Akenine-Möller, Eric Haines, Real-Time Rendering. A K Peters, 2002, pp
35
Soit C(u), u [0, 1] la trajectoire courante,
Modification de l’orientation de l’objet en se déplaçant le long d’un trajet Soit C(u), u [0, 1] la trajectoire courante, C(s), la position courante, (u, v, w) le système de coordonnées local de l’objet, l’origine de ce système est C(s), v C(u), u [0, 1] w u C(s) Plusieurs moyens de définir le repère de l’objet : Utilisation du repère de Frenet Il est déterminé par la tangente à la courbe et sa courbure : w = C'(s), u = C'(s) x C''(s) et v = w x u.
36
C(u) est dans le plan PQR
Modification de l’orientation de l’objet en se déplaçant le long d’un trajet Courbe de Bézier de degré 2 où P, Q et R sont dans le même plan. Exemple : Q C(u) est dans le plan PQR v = w x u C'(u) est tangent au plan PQR C'(u) u est normale au plan PQR. P R u Problèmes rencontrés : - lorsque C''(s) = 0, - lorsqu’il y a discontinuité dans le vecteur de courbure, - les mouvements résultants sont généralement trop extrêmes et d’une allure peu naturelle : utiliser le vecteur de tangente comme direction de vue n’est pas souhaitable. Une orientation plus naturelle, pour une personne circulant en voiture ou à bicyclette, consisterait à regarder plus loin vers l’avant sur la courbe.
37
Modification de l’orientation de l’objet en se déplaçant le long d’un trajet
Utilisation d’un centre d’intérêt I sur un point fixe de l’environnement Méthode satisfaisante lorsque le trajet que suit la caméra cerne une zone d’action sur laquelle doit se porter l’attention de la caméra. w = I – C(s) On cherche ensuite à fixer le vecteur v généralement dans la direction positive de l’axe y : u = w x axe des y v = u x w ou encore, v = le vecteur est spécifié explicitement par l’utilisateur u = v x w
38
Modification de l’orientation de l’objet en se déplaçant le long d’un trajet
Utilisation d’un centre d’intérêt C(s + ) où est fixe Lorsque s + > 1, on peut procéder par interpolation en utilisant le vecteur tangent à la courbe à u = 1. Cela peut donner lieu à des images saccadées. Pour solutionner ce problème, on considère la moyenne de plusieurs centres d’intérêt pour tenter de lisser la direction de vue. Utilisation d’un centre d’intérêt défini à l’aide du trajet I(u), u [0, 1] lequel est complètement indépendant de la trajectoire de parcours de l’objet à déplacer w = I(s) – C(s) u = w x (U(s) – C(s)) v = u x w où U(s) désigne un trajet de vecteur généralement dans la direction positive de l’axe y.
39
Lissage avec interpolation linéaire
Lissage d’un trajet En utilisant des techniques numériques, la courbe résultante issue d’un ensemble de points peut s’avérer trop saccadée. Rick Parent, Animatique Algorithmes et techniques. Figure 3.34 & 3.35, p On peut tenter de lisser les coordonnées des points de plusieurs manières : Lissage avec interpolation linéaire de valeurs adjacentes Pi + Pi-1 + Pi+1 2 1 Pi Pi + 1 Pi+1 Pi' = = Tendance à réduire la courbure (à aplatir la courbe)
40
Lissage avec interpolation cubique de valeurs adjacentes
Les points adjacents Pi-2, Pi-1, Pi+1, Pi+2 placés de part et d’autre d’un point Pi peuvent servir à définir une courbe cubique P(u). La courbe cubique est évaluée en son point médian. On calcule la moyenne entre le point médian et le point d’origine. P(u) = a u3 + b u2 + c u + d Pi-2 = P(0) = d Pi-1 = P(1 / 4) = a / b / c / 4 + d Pi+1 = P(3 / 4) = 27a / b / c / 4 + d Pi+2 = P(1) = a + b + c + d
41
Lissage avec interpolation cubique de valeurs adjacentes
a = -16 Pi Pi Pi Pi+2 b = 32 Pi Pi Pi+1 – 16 Pi+2 c = -19 Pi Pi Pi+1 + Pi+2 d = Pi-2 P(1 / 2) = -1 Pi Pi Pi Pi+2 (P(1 / 2) + Pi) / 2
42
Lissage avec interpolation cubique de valeurs adjacentes
Aux extrémités de la courbe, on peut prolonger celle-ci à l’aide d’une parabole. Note : Rick Parent, Animatique Algorithmes et techniques. Figure 3.40, p. 115.
43
Détermination d’un trajet sur une surface
Si un objet se déplace à la surface d’un autre objet, il faut déterminer un trajet sur cette surface. Si les points de départ et de destination sont connus, il peut être coûteux de trouver le trajet le plus court entre ces points. Solution alternative pour déterminer des trajets sous-optimaux Soit un plan qui contient les points de départ et de destination et dont la normale devrait être à peu près perpendiculaire à la surface : moyenne des normales aux points de départ et de destination, En considérant un maillage polygonal de la surface, on peut calculer l’intersection entre ce plan et la surface. FIN
Présentations similaires
© 2024 SlidePlayer.fr Inc.
All rights reserved.