Les bases des matrices

Comprendre les matrices et son environnement 3D

Matricealgoritmie

Manipulation d'un objet dans l'espace

Manipulation des objets dans l’espace à partir de mathématiques. Il est question de toute une complexité dont les réponses n'ont été trouvées que récemment.

L’ordre dans lequel nous allons réaliser les opérations mathématiques va impacter sur le résultat.


Lien vers le modelAlgorithme du rubics cube expliqué.

Une rotation = 3 opérations mathématiques = rotation en xyz

  • X - Rotation du cube vers la face droite
  • Y - Rotation du cube vers la face haute
  • Z - Rotation du cube vers la face avant

ANGLE D’EULER

L’Angle d’Euler permet de faire des rotations dans n’importe quelle ordre.



Exemple : Astrolabe

Pour réaliser il faut verrouiller les positions des axes. Dans maya : Clic droit sur l’outil rotation > Gambal

Le Gambal Lock verrouille sur une des rotations ce qui ne nous permet plus de ne plus pouvoir la manipuler.

QUATERNIONS

Beaucoup de gens disent qu’une Quaternion est le fait d’avoir une rotation par rapport à un axe → c'est faux !
On peut trouver une correspondance effectivement mais le quaternion ce n’est pas ça ⚠.

Il est difficile de s'imaginer les rotations dans un espace 3d, car en fonction du point de vue cela peut paraitre simple.
Par exemple notre sytème solaire :



Si nous prennons le soleil comme point de vue cela nous est facile. Mais imaginons maintenant le point de vue d'une lune qui tourne autour de la terre. Nous aurons beaucoup plus de problème a nous l'imaginer.

C'est pour cela que nous allons utiliser les quaternions, qui nous permet de changer de point de vue, et de passer d'un espace 3 dimensions a la 4ème dimensions.

Les quaternions sont des nombres hypercomplexes


N’importe quelle rotation peut être résumée en 1 seul chiffre hypercomplexe ⚠

Utilisation du

Loading...

:
Les quaternions unitaires fournissent une notation mathématique commode pour représenter l'orientation et la rotation d'objets en trois dimensions. Comparés aux angles d'Euler, ils sont plus simples à composer et évitent le problème du blocage de cardan.
Exemple :

i est un nombre imaginaire.= -1
3i² = -3 = 3*(2+3i)² = (2+3i)*(2+3i)=2²+2*2*3i+3i²=4 +12i² -3 = 1 + 12i
X => cosx + sinxi
Y => cosy + sinyi
Z => cosz + sinzi

Les quaternions sont des nombres giga complexes. i j et k sont des nombres imaginaires, les trois ensembles sont les quaternions ijk

=== ijk = -1

N’importe quelle rotation peut être résumée en 1 seul chiffre hypercomplexe.

  • i le nombre imaginaire pour l’axe X
  • j le nombre imaginaire pour l’axe Y
  • k le nombre imaginaire pour l’axe Z

Exemple :

4 + 3i - 2j + 6k # est un quaternion, donc une rotation dans l’espace.
  • (+) Permet de résoudre des problèmes de rotations.
  • (-) Peu voir illisible.

Beaucoup d’avantage avec quaternion mais assez illisible.
Généralement, si un jour il y a plein de rotations qui posent pb, il faut passer aux quaternions

L’un des meilleurs algorithmes de skinning est basé sur du dual quaternion !

Slerp et Lerp

Toute rotation peut être représenté sur une droite



* Le slerp = je traverse sur la sphère * Le lerp = je fais un trou pour traverser

Différentes technique de modélisation pour les objets 3d

Il existes de nombreuses techniques de modélisation. Chacune dépends des cas d'utilisation pour être utile.

La modélisation Volumétrique → Voxels

  • (+) Très utile pour l'architecture( par exemple les simulations de destruction) car l'ordinateur calcule le volume de la structure.
  • (-) Plus gourmand en performance

Les Nurds (bezier 3D)

Les Nurds ou courbes de bezier sont des courbes en formule mathématique. Cela repose sur un algorithme avec les courbes de bézier → idée qu’en fait il y a un point et d’avoir un autre point lié pour faire la direction de la courbe

  • (+) Sont plus légé que les polygone
  • (+) Puisque c'est des formules mathématiques c'est plus modulable et pas de problème de poids car les nurds sont plus légers à stocker que les polygones(comme dans illustrator ou en

    Loading...

    )
  • Comme les nurbs sont des surfaces mathématiques c'est intéressant par exemple pour les choses à grande echelle ou pour placer des objets sur les autres
  • (-) Formule mathématique -> certaines forme sont très complexe a exprimer en mathématique

Il existe sur maya un outil qui permet de lié les nurds en faces :

Méthode Polygones

Un polygone → vertex , faces et arêtes. Un objet est un ensemble de point qui forme des triangles qui forment des face

(lire Digital Scuplt de Bay Raitt)

(≠ graphe) qui possède des vertex, des faces et des arêtes. Cette méthode est le "faux polysmooth" de maya (lorsque l'on appuis sur 3).
⛔ Ne pas utiliser cette méthode dans le rendu final car cela peut créer des nsoucis de modélisation lors du rendu. Elle peut être par contre pratique pour visualisé facilement.

Méthode de détection de collisions

Bounding box/ Bounding sphere/ Maille simplifié convexe (convex box (?))/ Convex Mesh/ SPRITE en 2D


Bounding box

C'est un cube invisible que l’on met autour d’un objet complexe pour simplifier sa forme et pour permettre de gérer plus facilement les collisions et l'espace qu'il prend.

Bounding sphere

Rayon à partir du centre d’un objet complexe pour déterminer un périmètre pour simplifier sa forme et pour permettre de gérer plus facilement les collisions et l'espace qu'il prend. (même chose que bounding box mais c'est une sphère)

Convex Mesh

convex cube c’est presque une boule(rouge = cube, vert = cube convex) Convex : extérieur / Concave : intérieur (?)

What is the difference between Concave and Convex?

Normal Map

On peut mettre une infité de cartes

Loading...

sur un objet Chaque couture a au moins 2 coordonnées

Loading...

Qu’est ce qu’une normale ? Un axe perpendiculaire à la surface Que peut-on faire avec les normales pour savoir ou sont les contours ? C’est obtenir le moment de la bascule (dans maya c’est Sampler Info) Une carte (info stockée dans un endroit précis sur la maillage) ne sert pas que pour le rendu

  • Normal = Axe perpendiculaire à la surface. Si la normale pointe vers la cam alors elle est visible sinon inversement

  • Normal map = Déformation de l’information de la normal pour avoir la normale voulue. C’est une illusion optique car ce n’est qu’une seule face.

  • Parallaxmap = Le parallax mapping est une technique de rendu d'image de synthèse tridimensionnelles, utilisant des normal map en plus des textures diffuses afin d'émuler le relief de ces dernières.

Les maps nous offres beaucoup de possibilité.

  • En

    Loading...

    une technique consiste de simuler de la lumière garce a 2 normalMap que l'on va mixer en 2 pour simuler de la fausse ombre -> Gain énorme de performance.
  • En

    Loading...

    on peut récupérer les maps des gens scanner pour les mixers pour créer des visages différents...

Ce n'est que 2 exemples de toutes les possibilités que les maps nous offres 😵

En gros : La normal maps c'est noté le decallage de la map que j'aurais aimer avoir et celle que j'ai.

Les polygones ont une structure qui repose sur des graph On a à notre dispo des coordonnées

Loading...

→ avantage pour stocker des infos (info de tout genre) → si je fais un tissu et que je veux savoir s’il est solide (par exemple) On a plusieurs niv pour calculer des collisions et on peut faire nos propres mesh → mix entre nurbs et polygones

Si vous voulez un bon article : Différences entre normal map, bump map et displacement map

Revoir les bases des matrices

Dans un environnement 3D, les matrices permette de placer les différents élement d'une scène.

  • Une matrice = tableau Toute les images utilise des matrices ! Les vecteurs utilise les matrice -> un tableau a 3 cases

  • |

    Loading...

Comment utiliser les matrices ?

MatriceA * MatriceB ≠ MatriceB * MatriceB

Pour les matrice a 2 vecteur et 3 vecteurs

Loading...

Matrice identitaire = C’est une matrice carré avec des 1 en diagonale et 0 le reste.

# matice identitaire : 
[1 , 0 ]
[0 , 1 ]

Matrices symétriques

# matrice de symétrie en X
[-1 , 0 ]   
[0 , 1 ]

# matrice de symétrie en Y
[1 , 0 ]    
[0 , -1 ]

Loading...

[3 , 5 , 4]         [9 , 0 , 2]
[7 , 0 , 2]         [5 , 3 , 1]
[1 , 8 , 6]         [1 , 6 , 7]

# matrice résultat :
[(3*9+5*5+4*1) , (3*0+5*3+4*6) , (3*2+5*1+4*7)]
[() , 5 , 4]
[3 , 5 , 4]


# matrice de scale de 2 en X 
[2 , 0]     [-4]
[0 , 1]     [3]

# résultat
[-8]
[3]

Loading...

#Matrice de rotation
[0 , 1]     [-4]
[1 , 0]     [3]

# résultat
[3]
[-4]

Loading...

Sur maya il exite la command Xfrom pour utiliser les matrices

Lien de la doc
Lien d'un bon tuto

Quand il faut faire des calcules de matrices 3D -> Matrices4x4

Toute les cartes graphique utilisent des matrices 4x4 pour leurs calcules !!!

Matrice d'image

  • Une image est composé d'une matrice 4x4 -> RGBA

Il est possible de prendre n'importe quel tableau a plusieurs dimensions pour le mettre en 1.

Un ordianteur "déplie" les tabelau sur l'écran ce qui créer les pixels de l'écran ! Ce qui permet de plus facilement accéder au data qui si il était en plusieurs dimensions

Comment les données de ce même tableau sont stockées en une seule dimension :

matrcie en 2 dimension déplier


Formule 2 dimensions

Ligne*largeurimage + colonne

Matrice/Couleurs

Une couleur correspond à un vecteur à 3 valeurs : RGB

  • => Toute matrice à n dimension peut être ramenée à une matrice à 1 dimension.

Formule 3 dimensions

profondeur * largeurimage * hauteurimage + ligne * largeurimage + colonne
# pour tableau
# soit n nombre dans le tableau
Pr * Li * H + l(n) * Li + c(n)

=> équivalent à 12 Octets. Z-buffer → stock la profondeur d’un pixel

Lien d'un bon tuto 4ème dimension

Les matrices sont très importante en particules !!

Problème stocker les particules en fonction du temps :


profondeur * largeurImage* hauteurImage + ligne * largeurImage + colone
Voir un autre post
av logo

© 2023 Gilles Avraam. Tous droits réservés.