Rendu 3D temps réel Patrick Reuter preuter@labri.fr Pour DESS Ingénierie de l'Image DESS Informatique Multimedia Patrick Reuter Version 1.2 2/10/2002
1-1 Préface - Interaction projection Scène Image interaction Utilisateur Interaction: commence à 5 fps « temps réel » >12 fps plus de difference >72 fps fps: frames per second (taux de rafraîchissement)
1-2 Préface - Applications Modélisation Animation Environnements virtuels Jeux vidéo … Graphics hardware: double tous les 6 mois mais: scènes complexes demandent accéleration
1-3 Préface - Littérature Tomas Möller, Eric Haines « Real-Time Rendering » www.realtimerendering.com ISBN 1-568816-101-2 [Haines99]
2 The Graphics Rendering Pipeline Le processus du rendu d’une scène à l’écran caméra virtuel objets 3D textures image 2D à l’écran sources de lumière interacteurs …
2 The Graphics Rendering Pipeline Stages gérées par des unités différents Application Stage Geometry Stage Rasterizer Stage Bottleneck stage (Stage critique) détermine le fps final
2-1 The Graphics Rendering Pipeline Application Stage Geometry Stage Rasterizer Stage (CPU operations) gère les interacteurs (clavier, souri, …) gère la détection des collisions gère les animations gère la physique de la scène (force feedback, déformations, vélocités, …) …
(per-vertex operations), consiste de 5 phases séquentielles: 2-2 The Graphics Rendering Pipeline Application Stage Geometry Stage Rasterizer Stage (per-vertex operations), consiste de 5 phases séquentielles: Model & View Transform Lighting & Shading Screen Mapping Projection Clipping du Model Space pour ajouter 3D -> 2D (les objets en ajuster le champ -> World Space du réalisme (projection or- dehors du champ de vue à la taille -> Eye Space tographique ou de vue sont de la fenêtre (Muliplications perspectivique) supprimés) des matrices 4x4)
2-3 The Graphics Rendering Pipeline Application Stage Geometry Stage Rasterizer Stage (per-pixel operations) mettre les bonnes couleurs aux pixels utilisation des textures Z – buffering double – buffering
3-1 Optimisation - Overview Application Stage Geometry Stage Rasterizer Stage Bottleneck stage (Stage critique) détermine le fps final Optimisation: 1) Identifier le Bottleneck stage 2) réduire le temps d’exécution du Bottleneck 3) mais aussi: charger les autres stages avec plus de travail pour une qualité supérieure du rendu
3-2 Optimisation – Identifier le bottleneck pas par simple benchmark du temps d’affichage : mesure le temps d’exécution de tous les 3 stages les 3 stages doivent être testés séparément
3-2-1 Optimisation – Identifier le bottleneck Application Stage (CPU) tester le le CPU workload est 100% ? Bottleneck en OpenGL: remplacer les commandes glNormal3 et glVertex3 par glColor3 plus de travail pour Geometry Stage et Rasterizer Stage: pas de changement de fps bottleneck
3-2-2 Optimisation – Identifier le bottleneck Geometry Stage (plus difficile, parce que seulement la lumière n’affecte que le Geometry Stage) tester le éteindre la lumière: plus de performance? bottleneck augmenter la lumière: même performance? not bottleneck (ou tester les 2 autres stages)
3-2-3 Optimisation – Identifier le bottleneck Rasterizer Stage tester le diminuer la taille de la fenêtre: plus de performance? bottleneck éteindre les textures, le brouillard, z-buffering, blending, …:
3-3 Optimisation du Bottleneck Optimiser le temps d’exécution du bottleneck stage - Application Stage - Geometry Stage - Rasterizer Stage
3-3-1 Optimisation du Application stage optimisation du code optimisation de la gestion de mémoire (allocation, cache, …) utilisation de plusieurs processeurs détection des collisions intelligente (hierarchy, bounding volumes (volumes englobantes), …) …
3-3-2 Optimisation du Geometry stage Application Stage Geometry Stage transformation: regrouper les transformations (le moins de multiplications des matrices 4x4 possible) vertices (sommets) connectés (Triangle Fans, Triangle Strips, Quad Strips)
3-3-2 Optimisation du Geometry stage OpenGL Triangle Fans Rappel: Geometry Stage dépend des per-vertex operations à la place de: GL_TRIANGLES 0-1-2, 0-2-3, 0-3-4, 0-3-4, 0-5-6 (15 vertices) transférer GL_TRIANGLE_FAN 0-1-2-3-4-5-6 (7 vertices)
3-3-2 Optimisation du Geometry stage OpenGL Triangle Strips à la place de GL_TRIANGLES (8 * 3 = 24 vertices) 0-1-2, 1-3-2, 2-3-4, 3-5-4, 4-5-6, 5-7-6, 6-7-8, 7-9-8 transférer GL_TRIANGLE_STRIP (2 + 8 = 10 vertices) 0-1-2-3-4-5-6-7-8-9
3-3-2 Optimisation du Geometry stage OpenGL Triangle Strips pour triangles connectés: réduire de 3n vertices jusqu’à n+2 vertices ! Mais: Trouver la meilleure configuration est un problème NP complet (bijection sur problème du voyageur de commerce) Automatisation: SGI Performer et Optimizer, Algorithme STRIPE
3-3-2 Optimisation du Geometry Stage The STRIPE algorithm [Evans et al 1.) Phase globale: Identifier les patchs quadrilaterales 2.) Phase locale: prendre le triangle avec degré minimum, continuer avec le triangle du degré minimum, etc.
3-3-2 Optimisation du Geometry stage (avec perte) Application Stage Geometry Stage Simplification (Représentations Level of Detail) (LOD, niveaux de détails) réduire le nombre de polygones (triangles) 1.) pour les terrains: construire un terrain en LOD à partir des cartes d’élévations, p.ex. [Duchaineau et al. 1997, Hoppe98, Lindstrom et Pascucci 2001, Lindstrom et al. 1996] 2.) pour les objets fermés: simplification du maillage
3-3-2 Optimisation du Geometry stage (avec perte) - Simplification du maillage Méthode la plus commune: Edge collapse, p.ex. [Eck et al. 95, Garland et Heckbert 98, Hoppe 96, Melax 98] Application consécutive de cette méthode: Représentation en multirésolution du maillage, choisir le bon niveaux de détail en fonction du point de vue
3-3-2 Optimisation du Geometry stage (avec perte) - Exemple de simplification du maillage Remarque: La sélection du niveau de détails se passe dans le Application Stage, mais elle est peu coûteuse
3-3-3 Optimisation du Rasterizer stage Application Stage Rasterizer Stage OpenGL backface culling éteindre z – Buffering où possible - … diminuer la taille de la fenêtre (avec perte)
3-4 Optimisation générale le moindre précision possible (float à la place de double, …) éteindre les options non utilisées (brouillard, blending, …) minimiser les changements d’état OpenGL (trier par couleur, textures, triangles, quadrilaterales, …) OpenGL: utiliser les display lists …
4 Equilibrer le Graphics Rendering Pipeline Application Stage Application Stage Geometry Stage Rasterizer Stage 30 ms 50 ms 30 ms mieux: Application Stage Geometry Stage Rasterizer Stage 40 ms 40 ms 40 ms
4 Equilibrer - Culling techniques View frustum culling Backface culling Point View Frustum de vue Occlusion culling
4-1 Equilibrer – du Geometry Stage a l’ Application Stage Rasterizer Stage Application Stage Geometry Stage Rasterizer Stage
4-1-1 Equilibrer – Hierarchical View Frustum Culling Par exemple: basé sur des spheres englobantes (bounding spheres)
4-1-1 Equilibrer – Hierarchical View Frustum Culling View frustum test dans chaque noeud Point de vue intersection intersection intersection dedans dedans dedans dedans dehors intersection
4-1-2 Equilibrer – Hierarchical Backface Culling Regroupement (Clustering) des polygones suivant proximité dans l’espace euclidienne proximité dans l’espace des normales - Performance du culling dans chaque noeud par exemple [Kumar et al. 1996]
4-2 Equilibrer – du Geometry Stage et Rasterizer Stage a l’Application Stage
4-2-1 Equilibrer – Occlusion culling Le teapot lila n’est pas visible Algorithmes les plus connus: - Hierarchical visibility algorithm (pyramide Z-buffer) [Greene et al. 1993] -HOM (Hierachical occlusion maps) [Zhang et al. 1997]
4-2-2 Equilibrer – Portal culling D E F B C G H A E B C D F G H
4-2-2 Equilibrer – Portal culling D E F B C G H A E B C D F G H
4-2-2 Equilibrer – Portal culling D E F B C G H A E B C D F G H
4-2-2 Equilibrer – Portal culling D E F B C G H A E B C D F G H
4-2-2 Equilibrer – Portal culling D E F B C G H A E B C D F G H
4-2-2 Equilibrer – Portal culling D E F B C G H par exemple [Luebke et Georges 1995, Teller et Sequin 1991]
4-3 Equilibrer – du Geometry Stage au Rasterizer Stage Application Stage Geometry Stage Rasterizer Stage Application Stage Geometry Stage Rasterizer Stage
4-3-1 Equilibrer – Appearance Preserving Simplification Utilisation du Bump Mapping pour preserver les normales Bump Mapping: Multipass Rendering Bump Map Texture Map
4-3-1 Equilibrer – Appearance Preserving Simplification Bump Mapping : Objet original Image de normales
4-3-1 Equilibrer – Appearance Preserving Simplification 1.) 2.) Appearance Preserving Simplification [Cohen et al. 1998, Cignoni et al. 1998] 1.) Créer un maillage simplifié 2.) Créer un Bump Map pour chaque face
4-3-1 Equilibrer – Appearance Preserving Simplification Amelioration: Silhouette Clipping [Sander et al. 2000] Utiliser le OpenGL Stencil Buffer pour ameliorer la silhouette Autre possibilite: utiliser Displacement Mapping
5 Conclusions Séparation du Graphics Rendering pipeline en 3 Stages conceptuels Optimisation de chacun de ces Stages Équilibree des Stages autres techniques de rendu (Rendu basé Image) Discussion
6 Nouvelles techniques de rendu Apparition du “Rendu Basé Image” (Image Based Rendering) Description de la Scène par la Fonction plenoptique P [McMillan et Bishop 1995] vue p de la Scene de chaque point (Vx, Vy, Vz) dans une direction (, ) au temps t p = P(, , Vx, Vy, Vz, t) Rendu Basé Image: Essai de reconstruire la fonction plenoptique P
6 Nouvelles techniques de rendu Rendu Basé Image Comment reconstruire la fonction plenoptique? - p. ex.: entraîner avec des vues à l’entrée après créer des nouvelles images pour autres (, , Vx, Vy, Vz, t)
6 Nouvelles techniques de rendu GEOMETRY-BASED RENDERING Polygonal Meshes Texture Mapping Impostors Point Rendering (Surfels) Light Field Rendering Lumigraph Plenoptic Function IMAGE-BASED RENDERING
6 Nouvelles techniques de rendu Point Rendering (Surfels) Modèles complexes: >> polygones, écran toujours pareil projection: mais: projection Plus de necessité de prendre des polygones
6 Nouvelles techniques de rendu Point Rendering (Surfels) Littérature: p. ex. [Pfister et al. 2000, Rusinkiewicz et Levoy 2000]
6 Nouvelles techniques de rendu Point Rendering (Surfels) 106.795 Surfels 62143 Surfels 4544 Surfels Level-of-Details
6 Nouvelles techniques de rendu Point Rendering (Surfels) Niveaux de détails gérés par un arbre BSP
6 Nouvelles techniques de rendu Point Rendering (Surfels) Problèmes: remplissage des trous Solutions: boucher les trous en espace image (2D) ou espace objet (3D) reconstruction de la surface (Surfaces paramétriques, surfaces implicites, Radial basis functions …)
7 Definitions Realité virtuelle: … Immersion Environnement Utilisateur Interaction Son Synthèse d’image Applications: - Géomarketing - Prototypage - Virtual design - Simulateurs - … Interacteurs …
7 Définitions Synthèse d’image Modélisation Visualization Rendu Techniques d’ Illumination Rendu par Polygons … Rendu par Points … Rendu basé Image Raytracing Radiosité