Synthèse d'Image 3D
Fondements Mathématiques et Architecture de Rendu
Approche Conceptuelle avec Three.js
L'écosystème Three.js
Abstraction et standardisation du rendu Web.
- Créée en 2010, c'est le standard pour la 3D sur le Web.
- Permet d'utiliser la puissance du GPU sans complexité inutile.
- Compatible avec WebGL et WebGPU.
1. Philosophie d'Abstraction
Simplifier la complexité technique.
- Réduction du code : On écrit "ajouter un cube" plutôt que de configurer manuellement la VRAM.
- Interopérabilité : Le moteur gère les différences entre les types de cartes graphiques.
- Approche Objet : Manipulation de concepts visuels (Caméras, Lumières) plutôt que de registres.
2. Anatomie d'une Application
Les quatre piliers fondamentaux.
- Scene : L'espace (le "plateau de tournage") qui contient tout.
- Camera : Le point de vue qui définit la projection.
- Renderer : Le moteur qui transforme le graphe d'objects en pixels.
- Objects : Combinaison d'une géométrie (forme) et d'un matériau (apparence).
3. Le Cycle de Rendu (Loop)
Synchronisation avec l'écran.
- Animation Frame : Le navigateur demande un dessin 60 fois par seconde.
- Mise à jour d'état : On modifie les propriétés juste avant de dessiner.
- Le Dessin : Un appel unique qui transforme tout le décor en pixels.
2.1 Structure des Objets 3D
La discrétisation des surfaces.
- VBO (Vertex Buffer Object) : Les sommets stockés en mémoire vidéo.
- Le Maillage : La surface formée par les triangles (optimisation GPU).
- La Normale : Vecteur essentiel pour le calcul de l'illumination.
2.2 Algèbre Linéaire & Transformations
Passage de l'espace 3D aux coordonnées homogènes.
- Translation, Rotation, Échelle : Manipulations de base.
- Matrices 4x4 : Encodage linéaire de toutes les transformations.
- Quaternions : Utilisation pour éviter le Gimbal Lock en rotation.
2.3 La Matrice : L'outil Universel
Efficacité et Composition.
- Condensation : 16 chiffres stockent l'état spatial complet.
- Composition : On multiplie les matrices pour combiner les mouvements.
- GPU : Architecture optimisée pour le calcul matriciel massif.
2.4 Le Graphe de Scène
Hiérarchie et Propagation.
- Parentalité : Les mouvements des parents s'appliquent aux enfants.
- Matrices Locales vs Monde : Calcul relatif des positions.
- "Matrice Monde = Parent x Locale"
2.5 Caméras et Projection
- Perspective : Simulation de l'œil humain (Point de fuite).
- Orthographique : Vision technique (Parallèle, sans déformation).
3.0 Le Pipeline Graphique Programmable
Le voyage de la donnée vers le pixel.
3.1 Étape Application (CPU)
- Logique, physique et Culling (tri des objets visibles).
- Soumission des Draw Calls au GPU.
- Le principal goulot d'étranglement (Bottleneck).
3.2 Vertex Shader (GPU)
Traitement par sommet.
- Le GPU traite chaque point simultanément.
- Projection finale sur la surface de l'écran.
3.3 Assemblage & Clipping
Troncature géométrique.
- Élimination des primitives hors du volume de vision.
- Division perspective (NDC).
3.4 Rastérisation
Discrétisation géométrie vers fragments.
- Identification des pixels couverts par chaque triangle.
- Interpolation des données (couleurs, UV) sur la surface.
Vecteur vs Raster
Le défi de la discrétisation.
- Vecteur (Jaune) : Forme mathématique parfaite, résolution infinie.
- Raster (Vert) : Approximation par une grille de pixels.
- Aliasing : L'effet d'escalier dû à la résolution limitée.
3.5 Fragment Shader
Calcul de l'illumination par pixel.
- Échantillonnage des textures.
- Application des modèles de lumière.
3.6 Sortie Écran (ROP)
Tests finaux et composition.
- Z-Buffer Test : Gestion de la visibilité et profondeur.
- Blending : Mélange pour la transparence.
4.1 Pourquoi le GPU ?
Le secret : Le parallélisme massif.
- CPU (Cerveau) : Quelques cœurs très rapides, optimisés pour des tâches séquentielles complexes.
- GPU (Muscles) : Des milliers de petits cœurs optimisés pour faire la même opération simple sur des millions de données (SIMD).
4.2 La Mémoire Vidéo (VRAM)
Le stockage haute performance.
- Bande passante : La VRAM est beaucoup plus rapide que la RAM classique pour le transfert de données.
- Coût du transfert : Envoyer des données du CPU vers le GPU est "lent".
- Draw Calls : Chaque commande de dessin a un coût de communication (overhead).
4.3 Les Shaders (GLSL)
De petits programmes exécutés sur le GPU.
- Vertex Shader : S'exécute pour chaque sommet (géométrie).
- Fragment Shader : S'exécute pour chaque pixel (couleur).
- Langage : GLSL (proche du C), compilé par la carte graphique.
5.1 Modèles d'Illumination (Lambert)
Réflexion diffuse idéale.
- L'intensité dépend de l'angle d'incidence.
- Intensité = Normale · Lumière
5.2 Rendu Physiquement Réaliste (PBR)
Modèle microfacettes.
- Albedo : Couleur de base.
- Roughness : Rugosité de la surface.
- Metalness : Comportement métallique.
5.3 Raytracing & Illumination Globale
Simulation du parcours des rayons.
- Alternative à la rastérisation.
- Permet des reflets et ombres parfaits.
- Plus coûteux mais physiquement exact.
6.1 Interaction : Raycasting
Du clic 2D vers l'objet 3D.
- Lancement d'un rayon depuis la caméra.
- Test d'intersection avec la géométrie de la scène.
6.2 Mathématiques du Unproject
- Mapping des coordonnées souris vers [-1, 1].
- Inversion des matrices de Projection et de Vue.
- Ray = P⁻¹ × V⁻¹ × ScreenPos
6.3 Optimisation : LOD
Level of Detail adaptatif.
- Remplacement du maillage selon la distance.
- Préserve la fluidité sur les scènes complexes.
7.1 La Synchronisation Visuelle
Maintenir une image cohérente entre spectateurs.
- Le Problème : Le réseau est instable (Jitter) et lent (Latence).
- Désynchronisation : Risque de téléportation des objets.
7.2 Snapshot Interpolation
Voyager dans le passé pour voir le futur fluide.
- Le Tampon (Buffer) : On attend d'avoir plusieurs positions d'avance.
- Interpolation (LERP) : Calcul des positions intermédiaires entre snapshots.
7.3 Déterminisme et États Visuels
S'assurer que 1+1 = 2 partout.
- Simulation Déterministe : Même code + mêmes entrées = même image.
- Réconciliation : Le serveur corrige périodiquement les dérives visuelles.
7.4 Conclusion : Vers l'Image Distribuée
- Cloud Rendering : Fusion de flux vidéo et de géométrie locale.
- L'Image n'est plus un fichier : C'est un consensus distribué en temps réel.