Title: Rendu 3D temps rel Patrick Reuter preuterlabri'fr
1Rendu 3D temps réelPatrick Reuterpreuter_at_labri.
fr
- Pour DESS Ingénierie de l'Image
- DESS Informatique Multimedia
Patrick Reuter
Version 1.3 2/11/2002
21-1 Préface - Interaction
projection
Scène 3D
Image (2D ou stéreo)
interaction
perception
Utilisateur
Interaction commence à 5 fps temps
réel gt 12 fps plus de difference gt 72
fps fps frames per second (taux de
rafraîchissement)
31-2 Préface - Applications
- Modélisation
- Animation
- Environnements virtuels (architecture, virtual
prototyping, digital mock-ups, medecine, ) - Jeux vidéos
-
- Graphics hardware double sa performance tous les
6 mois - mais scènes de plus en plus complexes
demandent accéleration
41-3 Préface - Littérature
- Tomas Möller, Eric Haines
- Real-Time Rendering
-
- www.realtimerendering.com
- ISBN 1-568816-101-2
- Haines99
52 The Graphics Rendering Pipeline
- Le processus du rendu dune scène à lécran
- caméra virtuel
- objets 3D
- textures image 2D à lécran
- sources de lumière
- interacteurs
-
62 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
72-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, ) -
82-2 The Graphics Rendering Pipeline
Application Stage
Geometry Stage
Rasterizer Stage
(per-vertex operations), en 5 phases
Model View Transform
Lighting Shading
Viewport Transform
Projection
Clipping
du Model Space pour ajouter 3D -gt 2D (les
objets en ajuster le champ -gt World Space du
réalisme (projection or- dehors du champ de vue à
la taille -gt Eye Space tographique ou de vue
sont de la fenêtre (Muliplications perspectiviqu
e) supprimés) des matrices 4x4)
92-3 The Graphics Rendering Pipeline
Application Stage
Geometry Stage
Rasterizer Stage
(per-pixel operations)
- mettre les bonnes couleurs aux pixels
- utilisation des textures, filtrage, blending
- Z buffering (depth-test)
- brouillard, fog
- double buffering
103-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 dexécution
du Bottleneck 3) mais aussi charger les
autres stages avec plus de travail pour une
qualité supérieure du rendu
113-2 Optimisation Identifier le bottleneck
- pas par simple benchmark du temps daffichage
- mesure le temps dexécution de tous les 3
stages - ? les 3 stages doivent être testés séparément
123-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
CPU-limited
133-2-2 Optimisation Identifier le bottleneck
Geometry Stage
(le plus difficile, parce que seulement la
lumière naffecte que le Geometry Stage)
tester le
geometry-limited
- éteindre la lumière plus de performance? ?
bottleneck - augmenter la lumière même performance? ? not
bottleneck - (ou tester les 2 autres stages)
143-2-3 Optimisation Identifier le bottleneck
Rasterizer Stage
tester le
fill-limited
- diminuer la taille de la fenêtre
- plus de performance? ? bottleneck
- éteindre les textures, le brouillard,
z-buffering, blending, - plus de performance? ? bottleneck
153-3 Optimisation du Bottleneck
Optimiser le temps dexécution du bottleneck
stage - Application Stage - Geometry
Stage - Rasterizer Stage
163-3-1 Optimisation du Application stage
Application Stage
Application Stage
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), ) -
173-3-2 Optimisation du Geometry stage
Application Stage
Geometry Stage
Geometry Stage
- transformations regrouper les transformations
- (le moins de multiplications des matrices 4x4
possible) - vertices (sommets) connectés
- (Triangle Fans, Triangle Strips, Quad Strips)
183-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)
193-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
203-3-2 Optimisation du Geometry stage OpenGL
Triangle Strips
- pour triangles connectés
- réduire de 3n vertices jusquà n2 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
213-3-2 Optimisation du Geometry Stage The STRIPE
algorithm Evans et al., 1996
1.) Phase globale Identifier les patchs
quadrilaterales 2.) Phase locale prendre le
triangle avec degré minimum, continuer avec
le triangle du degré minimum, etc.
223-3-2 Optimisation du Geometry stage (avec perte)
Application Stage
Geometry 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
233-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
243-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
253-3-3 Optimisation du Rasterizer stage
Application Stage
Rasterizer Stage
Rasterizer Stage
- OpenGL backface culling
- éteindre z Buffering où possible
- -
- diminuer la taille de la fenêtre (avec perte)
263-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 et les vertex
arrays -
state sorting
274 Equilibrer le Graphics Rendering Pipeline
Application Stage
Geometry Stage
Rasterizer Stage
Application Stage
30 ms 50 ms 30 ms mieux
Rasterizer Stage
Application Stage
Geometry Stage
40 ms 40 ms 40 ms
284 Equilibrer - Culling techniques
View frustum culling
Backface culling
Point
View Frustum
de vue
Occlusion culling
294 Equilibrer - Culling techniques
Conservative surestimation de la visibilité
objets invisible sont consideré visible
Agressive sousestimation de la visibilité
objets visible sont exclus Approximate
Exate calcule pas plus ni moins dobjet
visible
304-1 Equilibrer du Geometry Stage a l
Application Stage
Geometry Stage
Application Stage
Rasterizer Stage
Application Stage
Geometry Stage
Rasterizer Stage
314-1-1 Equilibrer Hierarchical View Frustum
Culling
Par exemple basé sur des spheres
englobantes (bounding spheres)
324-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
334-1-2 Equilibrer Hierarchical Backface Culling
- Regroupement (Clustering) des polygones suivant
- - proximité dans lespace des normales
- Création des Clusters (exemple)
- début un triangle associé
- par quadrant
- subdiviser chaque quadrant
- en 4 triangles
- normaliser les sommets
8
32
normalisation
32
128
344-1-2 Equilibrer Hierarchical Backface Culling
- Création dune hierarchie
- (par exemple Kumar et al. 1996)
- ici Grisoni et al. 2000
8
32
Tous les normales
quadrant
Autres quadrants
normalisation
32
128
Dans les feuilles, il y a les polygones associé
pour chaque cluster
354-2 Equilibrer du Geometry Stage et Rasterizer
Stage a lApplication Stage
Geometry Stage
Application Stage
Rasterizer Stage
Application Stage
Geometry Stage
Rasterizer Stage
364-2-1 Equilibrer Occlusion culling
Le teapot lila nest pas visible Algorithmes les
plus connus - Hierarchical visibility algorithm
(pyramide Z-buffer) Greene et al. 1993 -HOM
(Hierachical occlusion
maps) Zhang
et al. 1997
374-2-2 Equilibrer Portal culling
A
D
E
F
C
B
G
H
E
A
B
C
D
F
G
H
384-2-2 Equilibrer Portal culling
A
D
E
F
C
B
G
H
E
A
B
C
D
F
G
H
394-2-2 Equilibrer Portal culling
A
D
E
F
C
B
G
H
E
A
B
C
D
F
G
H
404-2-2 Equilibrer Portal culling
A
D
E
F
C
B
G
H
E
A
B
C
D
F
G
H
414-2-2 Equilibrer Portal culling
A
D
E
F
C
B
G
H
E
A
B
C
D
F
G
H
424-2-2 Equilibrer Portal culling
A
D
E
F
C
B
G
H
par exemple Luebke et Georges 1995, Teller et
Sequin 1991
434-3 Equilibrer du Geometry Stage au Rasterizer
Stage
Geometry Stage
Rasterizer Stage
Application Stage
Rasterizer Stage
Geometry Stage
Application Stage
444-3-1 Equilibrer Appearance- Preserving
Simplification
- Utilisation du Bump Mapping pour preserver les
normales - Bump Mapping
- Multipass
- Rendering
Bump Map
Texture Map
454-3-1 Equilibrer Appearance- Preserving
Simplification
Bump Mapping
Objet original
Simulation par une image de normales
464-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
474-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
485 Conclusions
- Séparation du Graphics Rendering pipeline en 3
Stages conceptuels - Optimisation de chacun de ces Stages
- Équilibrer des Stages
- Cartes Graphiques programmables
- autres techniques de rendu (Rendu basé Image,
Surfels) - Discussion
496 Cartes Graphiques Programmables (Shaders)
- Cartes graphiques nouvelle génération (p.ex.
GeForce 3) - Comparable à PIXAR Renderman en temps réel
- Remplacement de
- Fixed Function Pipeline TL (Transformation
et éclairage) - Fixed Function Pipeline Texturing, Filtering,
Blending - par
- Vertex Programs (OpenGL) / Vertex Shaders
(DirectX) - Fragment Programs (OpenGL) / Pixel Shaders
(DirectX)
506 Cartes Graphiques Programmables (Shaders)
Application Stage
Geometry Stage
Rasterizer Stage
(per-vertex operations), en 5 phases
Model View Transform
Lighting Shading
Viewport Transform
Projection
Clipping
du Model Space pour ajouter 3D -gt 2D (les
objets en ajuster le champ -gt World Space du
réalisme (projection or- dehors du champ de vue à
la taille -gt Eye Space tographique ou de vue
sont de la fenêtre (Muliplications perspectiviqu
e) supprimés) des matrices 4x4)
516 Cartes Graphiques Programmables (Shaders)
Application Stage
Geometry Stage
Rasterizer Stage
(per-vertex operations), en 5 phases
Viewport Transform
Projection
Clipping
3D -gt 2D (les objets en ajuster le
champ (projection or- dehors du champ de vue
à la taille tographique ou de vue sont de la
fenêtre perspectivique) supprimés)
Vertex Program (Vertex Shader)
526 Cartes Graphiques Programmables (Shaders)
- Vertex Programs / Vertex Shaders
- programme assembleur pour transformation/eclairag
e - taille limité (128 bytes), pas de boucles, SIMD,
instr. perf. - Entrée 1 vertex pas transformé et pas éclairé
- Sortie 1 vertex transformé et éclairé
- Ne crée ni efface un vertex
- Nutilise aucune information topologique (voisin,
polygons )
536 Cartes Graphiques Programmables (Shaders)
Application Stage
Geometry Stage
Rasterizer Stage
(per-pixel operations)
- mettre les bonnes couleurs aux pixels
- utilisation des textures, filtrage, blending
- Z buffering (depth-test)
- brouillard, fog
- double buffering
546 Cartes Graphiques Programmables (Shaders)
Application Stage
Geometry Stage
Rasterizer Stage
(per-pixel operations)
- utilisation des textures, filtrage, blending
556 Cartes Graphiques Programmables (Shaders)
Application Stage
Geometry Stage
Rasterizer Stage
(per-pixel operations)
- Fragment Programs (Pixel Shaders)
- adaptation custom des textures, filtrage,
blending
566 Cartes Graphiques Programmables (Shaders)
Exemple 1 Deplacement dynamiques des Vertex
576 Cartes Graphiques Programmables (Shaders)
Exemple 2 Eclairage Cartoon
586 Cartes Graphiques Programmables (Shaders)
- Exemples (suite)
- Morphing
- Dynamic lighting
- Deformations
-
597 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
607 Nouvelles techniques de rendu
- Rendu Basé Image
- Comment reconstruire la fonction plenoptique?
- - p. ex. entraîner avec des vues à lentrée
- ?
- après créer des nouvelles images pour autres (?,
? , Vx, Vy, Vz, t)
617 Nouvelles techniques de rendu
GEOMETRY-BASED RENDERING
- Polygonal Meshes
- Texture Mapping
- Impostors
- Point Rendering (Surfels)
- Light Field Rendering
- Lumigraph
- Plenoptic Function
IMAGE-BASED RENDERING
627 Nouvelles techniques de renduPoint Rendering
(Surfels)
- Modèles complexes gtgt polygones, écran toujours
pareil - projection
- mais
- projection
- Plus de necessité de prendre des polygones
637 Nouvelles techniques de renduPoint Rendering
(Surfels)
Littérature p. ex. Pfister et al.
2000, Rusinkiewicz et Levoy 2000
647 Nouvelles techniques de renduPoint Rendering
(Surfels)
657 Nouvelles techniques de renduPoint Rendering
(Surfels)
- Niveaux de détails gérés par un arbre BSP
667 Nouvelles techniques de renduPoint 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 )
678 Definitions
Realité virtuelle
Immersion
Environnement virtuel
Utilisateur
Interaction
Son
Synthèse dimage
Applications - Géomarketing - Prototypage -
Virtual design - Simulateurs -
Interacteurs
688 Définitions
Synthèse dimage
Modélisation
Visualization
Rendu
Techniques d Illumination
Rendu par Points
Rendu par Polygons
Raytracing
Radiosité
Rendu basé Image