# 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)\}$

## *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

- 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.


:::
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
$$

:::
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.*
:::info
*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
:::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:


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
:::info
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*.
:::success
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.
:::warning
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

:::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:

On a un *vrai* artiste qui fait un *vrai* modele

Suite au scan 3D du modele


Pour Avatar:

:::info
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.
:::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

## *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

## 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
:::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

- 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 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