# ISIM - La modelisation # 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...) - 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 ## Triangulation de Delauny :::info 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)\}$ ![](https://i.imgur.com/HU9lPVg.png) ## *Mesh Refinement* :::warning 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 :::info **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 ![](https://i.imgur.com/vv7KpQO.png) - 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$ :::danger Ajout de points de controles $D_n$ pour determiner la derivee localement. ![](https://i.imgur.com/7lfKfXU.png) ![](https://i.imgur.com/fawfaDf.png) ::: Les vecteurs tangents sont deduits par $3(D_1-P_1)$ :::success Cela donne: $$ xP_1(1-t)^3+xD_1(3t(1-t)^2)+xD_23t^2(1-t)+xP_2t^3 $$ ![](https://i.imgur.com/7WVrpFx.png) ::: On peut chainer et rajouter des morceaux pour agrandir la courbe. Resultats: ![](https://i.imgur.com/tYSV3bA.png) ![](https://i.imgur.com/skBMlqc.png) > 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 ![](https://i.imgur.com/WDkVcmN.png) > A faire en 3D ## Algorithme de Catmull-Clark Exemple: ![](https://i.imgur.com/LXFxHfh.png) ![](https://i.imgur.com/J70tDVJ.png) ![](https://i.imgur.com/NUA9zHr.png) ![](https://i.imgur.com/fgl4o99.png) ![](https://i.imgur.com/yh6nEhB.png) > Est-ce qu'on peut dire que c'est fait... a la main ? # Modelisation par assemblage ## *C.S.G.* :::info *C.S.G.: Constructive Solid Geometry* ::: Combiner des briques de base (solides) par des operations: - Union - Intersection - Difference Union: ![](https://i.imgur.com/AcP96zw.png) Intersection: ![](https://i.imgur.com/ccDW72C.png) ![](https://i.imgur.com/mLZPAYS.png) Difference: ![](https://i.imgur.com/qz4duXo.png) ![](https://i.imgur.com/G13F5Bk.png) Representation sous forme d'arbre: ![](https://i.imgur.com/AKXwxav.png) - 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 :::info 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: ![](https://i.imgur.com/YdMcR7f.png) ![](https://i.imgur.com/QLsu02a.png) L'axe de revolution se situe au centre (axe vert et axe rouge) ![](https://i.imgur.com/qy3aNlE.png) ![](https://i.imgur.com/6Pmgdy5.png) > On se rend compte que le Graal n'est rien d'autre qu'une fulte a champagne ![](https://i.imgur.com/cpwSguI.png) Autres exemples: ![](https://i.imgur.com/5KmFG1Q.png) > La boule de bowling presente des C.S.G. ![](https://i.imgur.com/4vojKjk.png) # Modelisation par extrusion - L'objet est construit par une surface suivant une trajectoire - Le chemin peut etre plus ou moins complique ![](https://i.imgur.com/M0MPpxo.png) > C'est peut-etre une etoile de mer mais je la fait sortir de terre Retour a la main de tout a l'heure: ![](https://i.imgur.com/uZE2Qx1.png) ![](https://i.imgur.com/Z9f6KKW.png) # Cartes d'altitudes Permet generalement de representer les terrains: - Construction: - Iterative - ... ![](https://i.imgur.com/fypc4KA.png) Exemple: ![](https://i.imgur.com/iFZD6kA.png) > Is this minecraft # Blobs/Metaballs :::info Representation d'un objet par iosurface ::: Imaginons qu'on met une source d'energie qui chauffe: ![](https://i.imgur.com/jY1Dw4U.png) ![](https://i.imgur.com/qEVqPBz.png) *Qu'est-ce qui se passe si on a 2 points d'energie qui se rapprochent ?* ![](https://i.imgur.com/aNxdZ8v.png) ![](https://i.imgur.com/QNbLBKY.png) On obtient une courbe car les valeurs se *somment*. :::success On peut utiliser cette courbe pour modeliser des formes arrondies. ::: ## En 2D: ![](https://i.imgur.com/8MIDgeW.png) ![](https://i.imgur.com/19Bqj8A.png) ![](https://i.imgur.com/ueIIQn4.png) ## En 3D: ![](https://i.imgur.com/be5dDls.png) ![](https://i.imgur.com/vimt9wM.png) ![](https://i.imgur.com/cCnZNgr.png) > 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. :::warning Le point d'energie n'est pas forcement ponctuel, ca peut un un plan, un cylindre, etc. ::: ![](https://i.imgur.com/prDc8dl.png) > 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) ![](https://i.imgur.com/4VS7S2W.png) > 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 ![](https://i.imgur.com/qjtTeDs.png) :::warning 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: ![](https://i.imgur.com/BjyS8Ya.png) On a un *vrai* artiste qui fait un *vrai* modele ![](https://i.imgur.com/DX61ptX.png) Suite au scan 3D du modele ![](https://i.imgur.com/DPxQ6es.png) ![](https://i.imgur.com/52qZJrv.png) Pour Avatar: ![](https://i.imgur.com/gpvmTyX.png) :::info Cette pratique est assez courante. ::: D'autres artistes scultent directement le modele numerique. Sculpture 3D: ![](https://i.imgur.com/mOaAHyT.png) # 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 ![](https://i.imgur.com/IMplrN1.png) ![](https://i.imgur.com/CKmNBcY.png) 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. :::warning 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 ![](https://i.imgur.com/KD5ff6H.png) ## *Boundary Representation B-Rep* :::info 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 - Redondance des donnees $\to$ risque d'incoherence # Modelisation d'une scene Deformation/Mouvements/Objets articules - Representation hierarchique - Systeme de pile de matrices ![](https://i.imgur.com/Lj0GzwI.png) ## 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 ![](https://i.imgur.com/lumbFW1.png) # Animation :::info 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 ![](https://i.imgur.com/5RHCBB7.png) - L'ordinateur calcul les positions intermediaires - L'animateur fait les images "cles" de l'animation ## Positions cles ![](https://i.imgur.com/DeYYg2Q.png) > Celle de droite c'est quand Fabrizio va voir mon raytracer ## Vitesse du mouvement ![](https://i.imgur.com/6haQMJz.png) 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 ![](https://i.imgur.com/P8tJ4n8.png) ![](https://i.imgur.com/lWb0DFN.png) ## 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: ![](https://i.imgur.com/IGDsy3z.png) 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 ![](https://i.imgur.com/7yp7ggR.png) - La peau - Cylindres - Maillages ou surfaces (Splines...) - Attachement de chaque point a un os - Ponderation de l'attachement d'un point aux os voisins ![](https://i.imgur.com/KGnwFLY.png) - 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 ![](https://i.imgur.com/tNSz2GE.png) - 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 ![](https://i.imgur.com/wwDg1tP.png) - 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* ![](https://i.imgur.com/E7rl5Zb.png) - 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: ![](https://i.imgur.com/72CIxGx.png) ![](https://i.imgur.com/ynvMunz.png) ![](https://i.imgur.com/6tbGdv1.jpg) > C'est pendant l'entrainement, pas le hangar Mouvement du visage: ![](https://i.imgur.com/oPqosCh.jpg) Une grosse bete va manger des chevaux: ![](https://i.imgur.com/TfGQtsu.png) ![](https://i.imgur.com/CP67jYJ.jpg) On va caller des modeles 3D de chevaux qui se feront manger ![](https://i.imgur.com/WSYeUT5.png) Fonctionne de la meme facon que le motion capture avec les humains: ![](https://i.imgur.com/nEPdygP.png) ![](https://i.imgur.com/FtTV9sj.png) > 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 ![](https://i.imgur.com/YJk6fnE.png) 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