Lien de la note Hackmd
Modelisation
- Rendu temps reel
- Mailages/polygones
- Rendu photorealiste (algorithme type raytracing)
- Maillages/polygones
- Mathematiques
- Animation
- Modeles physiques
Chaque objet est decrit par une formule mathematiques
- Tres compact et bien adapte pour les algorithmes type raytracing
- Formule compliquee ou impossible a determiner pour la plupart des objets
Formes de bases - primitives 2D/3D
- Sphere
- Cylindre
- Cube
- Plan
- Tore
- …
Maillage
Construction d’objets par assemblage de polygones
- Bonne modelisation des objets avec peu de courbes (architecture…)
- Peu compacte mais facile manipuler
Representation
- Polygone utilise:
- Majoritairement le triangle
- Facilite le traitement (remplissage…)
- Majoritairement le triangle
- Representation en interne
- Liste de coordonnees de sommets par polygone
- Duplication des sommets communs a plusieurs polygones
- Pas de connaissance de la topologie
- Liste de sommets puis liste d’indice par polygone
- Gain de place
- Reduction de la quantite d’information
- Pas de connaissance de la topologie
- Liste de coordonnees de sommets par polygone
Triangulation de Delauny
Cas pour quand le maillage n’est pas en triangle.
Diagramme de Voronoi
- $vor(p) = {x\in E;\forall qd(x,p)\le d(x,q)}$
Mesh Refinement
On veut appauvrir le maillage quand il est loin et l’enrichir quand il est pres.
Adaptive mesh refinement
- Depth tagging
Modelisation surfacique
Surfaces de Bezier
Bezier (1960 - Renault)
- Courbes de Bezier
- Surfaces de Bezier
Ces courbes ont ete mises en place pour representer les carosseries de voitures
Courbes de Bezier
Courbes de Bezier: definir une courbe passant par 2 points:
- Lissage lineaire
- $P_1t+P_2(1-t)$ avec $0\le t\le1$
- Si plus de points: continu par morceau
- Lissage polynomial
- $x(t) = Q(t) = a_3t^3+a_2t^2+a_1t+a_0$
- $y(t) = R(t) = b_3t^3+b_2t^2+b_1t+b_0$
- Pour garder la derivabilite en $P_1$ et $P_2$:
- $Q’(t) = 3a_3t^3+2a_2t+a_1$
- Idem pour $y(t)$
- Il faut trouver les $a_i$ et les $b_i$
- On va utiliser:
- $x(0)=xP_1$
- $x(1)=xP_2$
- $x’(0) = x’P_1$
- $x’(1)=x’P_2$
- Ce qui donne:
- $x(t)=(2t^3-3t^2+1)xP_1+(-2t^3+3^2)xP_2+(t^3-2t^2+1)x’P_1+(t^3-t^2)x’P_2$
- Idem pour $y(t)$
- Comment avoir les
- $x’(0)=x’P_1$
- $x’(1)=x’P_2$
Ajout de points de controles $D_n$ pour determiner la derivee localement.
Les vecteurs tangents sont deduits par $3(D_1-P_1)$
Cela donne:
\[xP_1(1-t)^3+xD_1(3t(1-t)^2)+xD_23t^2(1-t)+xP_2t^3\]On peut chainer et rajouter des morceaux pour agrandir la courbe.
Resultats:
La texture est d’ailleurs procedurale
Pour definir une courbe plus complexe:
- Augementer le degre
- La modification d’un point de controle perturbe toute la courbe
- Joindre plusieurs courbes de Bezier
Pour appliquer des transformations affines:
- Applique les transformations affines aux points de controle
Surfaces de Bezier
Par extension: surfaces de Bezier
- 4 points de controle en 2D, 16 points de controle en 3D
- Joindre plusieurs surfaces de Bezier
Lissage de polygones
Surface de subdivision
Differents algorithmes: Algorithme de catmull-Clark, Doo-sabin. Un exemple en 2D:
- Diviser chaque segment en 3 parties egales
- joindre les divisions successives
- Recommencer jusqu’au niveau lissage desire
A faire en 3D
Algorithme de Catmull-Clark
Exemple:
Est-ce qu’on peut dire que c’est fait… a la main ?
Modelisation par assemblage
C.S.G.
C.S.G.: Constructive Solid Geometry
Combiner des briques de base (solides) par des operations:
- Union
- Intersection
- Difference
Union:
Intersection:
Difference:
Representation sous forme d’arbre:
- Fonction implicite d’un solide: $F(x,y,z)$
- $F(x,y,z)\lt0$ interieur
- $F(x,y,z)=0$ surface
- $F(x,y,z)\gt0$ exterieur
- Pour le calcul des C.S.G.: $-1;0;1$
- $F_{A\cap B}(p) = \max(F_A(p),F_B(p))$
- $F_{A\cup B}(p) = \min(F_A(p),F_B(p))$
- $F_{A-B}(p) = \max(F_A(p),-F_B(p))$
Modelisation par revolution
L’objet est construit par la rotation d’une forme autour d’un axe de revolution
- Fonction d’un angle
- Fonction d’un pas d’echantillonnage
Trace du contour:
L’axe de revolution se situe au centre (axe vert et axe rouge)
On se rend compte que le Graal n’est rien d’autre qu’une fulte a champagne
Autres exemples:
La boule de bowling presente des C.S.G.
Modelisation par extrusion
- L’objet est construit par une surface suivant une trajectoire
- Le chemin peut etre plus ou moins complique
C’est peut-etre une etoile de mer mais je la fait sortir de terre
Retour a la main de tout a l’heure:
Cartes d’altitudes
Permet generalement de representer les terrains:
- Construction:
- Iterative
- …
Exemple:
Is this minecraft
Blobs/Metaballs
Representation d’un objet par iosurface
Imaginons qu’on met une source d’energie qui chauffe:
Qu’est-ce qui se passe si on a 2 points d’energie qui se rapprochent ?
On obtient une courbe car les valeurs se somment.
On peut utiliser cette courbe pour modeliser des formes arrondies.
En 2D:
En 3D:
J’ai fait un petit objet, je sais pas ce que c’est. Hand-spinner?
On peut faire des gouttes de mercure qui s’attachent ensemble.
Le point d’energie n’est pas forcement ponctuel, ca peut un un plan, un cylindre, etc.
On un un p’tit.. p’tit cheval
- Rendu
- En raytracing, evaluation le lonf du rayon
- Algorithme des “marching cubes”
- Particules
- Attention au calcul des normales
- Modelisation
- Eau
- …
Modelisation de la vegetation
Graftales
Modelisation desplantes
- L-Systems (Lindenmayer, 1968)
- Similaire a une grammaire
- souvent utilise pour modeliser la vegetation (mais pas seulement)
Y’a un super cours de theorie des langages donne par Jonathan Fabrizio
On par de l’axiome et on applique la regle de production
- On divise le 1$^{er}$ segment en 3 sous-segments
- On rajoute 2 segments inclines
- On repete a chaque etape
On a besoin de differentes regles d’evolutions (branches, couleurs, etc.). Le plus dur c’est de definir la grammaire de base.
Acquisition
Comment font-ils pour faire des modeles aussi beau ?
Scan 3D
Pour le monde de Nemo: On a un vrai artiste qui fait un vrai modele
Suite au scan 3D du modele
Pour Avatar:
Cette pratique est assez courante.
D’autres artistes scultent directement le modele numerique.
Sculpture 3D:
Codage des Formes/Maillages
- Aretes aillees
- B-rep
- Array of vertex
- Enregistrer tous les sommets et leurs proprietes
- Pas tres compact
- Array of indexes
- Lister les sommets et leur caracteristiques
- Tablea d’addressage indexe
Dans cette exemple: le sommet 1 est enregistre plusieurs fois, on a pas a enregistrer ses caracteristiques a chaque fois, on fait un addressage indexe.
Ne mache pas toujours, les proprietes peuvent varier d’un meme sommet en fonction du polygone auquel il est rattache.
Aretes ailles
Une arete:
- une orientation
- Sommet de depart et d’arrivee
- On les memorise selon un ordre
- deux faces
- deux sommets
- quatre aretes
- Le sommet actuel y est toujours lie si elles existent
Boundary Representation B-Rep
Un solide est modelise par les elements exterieurs.
- Cela donne une surface fermee
- Ensemble de :
- Faces, aretes et sommets + relations topologiques
- Les faces ne doivent pas s’intersecter ailleurs que sur des aretes explicites (de la B-REP)
- Les afces doivent separer l’interieur de l’exterieur du solide
- Ensemble de :
- Redondance des donnees $\to$ risque d’incoherence
Modelisation d’une scene
Deformation/Mouvements/Objets articules
- Representation hierarchique
- Systeme de pile de matrices
Deformations libres
On veut contorsionner un objet mais ses morceaux doivent restes coherents.
- Une solution: faire un volume de Bezier et modifier les points de controle
- Solution simple
- Pas la plus efficace
Animation
Generation de toutes les images qui composent l’animations
- Il faut donc modeliser les transformations
- Deplacements
- Deformations
- Changement de couleur
- …
- Equation de mouvement
- Definitions des positions et orientations - trajectoire a suivre
- Position cle et interpolation
- Specification que de quelques positions puis interpolation automatique pour generer les positions intermediaires (pas facile de respecter toutes les contraintes)
- Modele physique
- Donne du realisme au mouvement
- L’ordinateur calcul les positions intermediaires
- L’animateur fait les images “cles” de l’animation
Positions cles
Celle de droite c’est quand Fabrizio va voir mon raytracer
Vitesse du mouvement
Il faut gere l’acceleration du mouvement entre 2 positions cles
- Un mouvement lineaire n’est pas realiste
- Il y a du travail sur l’expression du visage
Le monde de Nemo
Filmer des poissons reels pendant tres longtemps et reproduire le mouvement
Animations difficiles
Animation de personnages
- Definition de l’animation complete du personnage
- Difficile et consommation memoire trop elevee
- Definition d’un “squelette” et d’une “peau”
- Le mouvement est specifie uniquement pour le squelette
- Gain de place
Retournons sur la main: On a rajoute un squelette, si on veut bouger la main, on bouge le squelette.
Le squelette de la main est anatomiquement faux
- Definition d’un “squelette”
- Le corps humain comporte environ 200 os
- Environ une centaine d’articulations
- assemblage de segments rigides
- Structure arborescente hierarchique
- Rotation avec ajout de contraintes
- Cinematique inverse
- Trouver la bonne position
- Le deplacement des os entraine le deplacement de la peau
- La peau
- Cylindres
- Maillages ou surfaces (Splines…)
- Attachement de chaque point a un os
- Ponderation de l’attachement d’un point aux os voisins
- Modeles de muscles
- Modelisation par blobs et surfaces implicites
- Dans l’ensemble ce type de modeles n’est plus trop utilise
- Modelisation des muscles par des ressorts
- Modelisation par blobs et surfaces implicites
- Modelisation par particules hierarchiques
- Noyau: lie au reste du modele
- Derme: deformation del’objet
- Epiderme: cohesion et surface + interaction et collisions avec le rest du monde
$\to$ Diminution de la complexite
- Interaction uniquement avec la couche voisine
- Interaction avec l’exterieur geree au niveau de l’epiderme
- diminution du nombre de particules
- diminution de la quantite de calculs
- Problemes de jointures
- Augmentation du maillage aux jointures
- Ajout d’os dans l’articulation
- Ajout de contraintes: section minimal autour de chaque os..
- Lissage des ponderations des contributions des os sur l’enrobage
Animation de visages
Quelques positions modelisees
- Normal, souriatn..
- Calcul automartique des transitions (morphing)
Temps reel: Blend shape
- Position neutre
- Codage des deltas pour arriver a une position particuliere
Motion capture
- Realisme important
- Des acteurs vont jouer la scene
- Jouent dans un hangar dans lequel ils sont geolocalises
- Ils auraient pu se peindre le visage en bleu mais ils ont pas oses
- Au moins ils ont des p’tites oreilles
- Camera: geolocalisee
Mapping:
C’est pendant l’entrainement, pas le hangar
Mouvement du visage:
Une grosse bete va manger des chevaux:
On va caller des modeles 3D de chevaux qui se feront manger
Fonctionne de la meme facon que le motion capture avec les humains:
Pas tous les filmes utilisent le motion capture, comme Ratatouille
Tissus et vetements
Modeles masses-ressorts
- Maillage de Provot
- On met des “masses”
- Ajout de ressorts pour le cisaillement et la courbure
- Indique les contraintes physiques entre chacune des masses
Collisions et autocollisions
- Beaucoup de calculs
- division de l’espace et volumes englobants
- Autocollisions
- Eviter que le tissus passe au travers de lui-meme en se repliant
Conclusions
- Modelisatione et animation