Bibliothèques 3D Java3D

publicité
Introduction à la
Synthèse d’Images 3D
Option IMA
1ère année Master Informatique
Thierry Duval IFSIC / IRISA Siames
[email protected]
Plan
1. Introduction
2. Modélisation d’univers
3. Animation
4. Rendu
5. Interaction
6. Conclusion
2
1. Introduction
1. Introduction
¾
¾
¾
¾
¾
contexte
intérêt des mondes virtuels 3D
création des images (rendu)
modélisation géométrique
principes de base
2. Modélisation d’univers
3. Animation
4. Rendu
5. Interaction
6. Conclusion
3
Contexte
‹
Réalité Virtuelle :
¾
créer des univers virtuels 3D
• les peupler d’objets autonomes ?
¾
les visualiser
• c’est le minimum…
¾
naviguer au sein de ces univers
• pour les explorer
¾
agir avec les objets contenus dans ces univers
• pour être soi-même un acteur du monde virtuel
¾
réaliser tout cela à plusieurs ?
• pour coopérer, comme dans la réalité…
4
Intérêt des mondes virtuels 3D
‹
Convivialité :
¾
¾
‹
nombreux parallèles possibles avec le monde réel
nombreuses métaphores familières aux utilisateurs
Facilité de création :
¾
souvent par « mimétisme » :
• d’objets réels
• de phénomènes réels
‹
Possibilité d’enrichir un monde virtuel :
¾
¾
par rapport au monde réel dont on s’inspire
pour en faciliter l’usage ou la découverte
5
Création des images (rendu)
Modèle
Géométrique
Description
de l’aspect
Rendu
Image
Spécification des
comportements
6
Modélisation géométrique
‹
Modélisation de la forme des objets
‹
Création de scènes par composition d’objets :
¾
¾
‹
Expression du comportement des objets :
¾
‹
duplications
transformations
animations…
Reste ensuite à :
¾
¾
visualiser les objets
rendre possible des interactions avec les objets
7
Principes de base
‹
On dispose initialement d’objets de base
‹
Scène = résultat de l’évaluation d’un programme
‹
Langage : format de fichier 3D :
¾
3DS, DXF, PoV, VRML, …
Programme
VRML
Interpréteur
VRML
Machine
graphique
Ecran
8
2. Modélisation d’univers
1. Introduction
2. Modélisation d’univers
¾
¾
¾
modélisation d’objets
transformations géométriques
outils d’aide à la modélisation
3. Animation
4. Rendu
5. Interaction
6. Conclusion
9
2.1 Modélisation d’objets
‹
Plusieurs approches pour décrire
‹
Types de modélisation
‹
Repères de localisation
‹
Primitives :
¾
¾
‹
solides
surfaciques
Opérateurs de composition :
¾
¾
par balayage
arbres CSG
10
Plusieurs approches pour décrire
‹
Artistique :
¾
‹
Mathématique :
¾
‹
…
objet = ensemble de propriétés
Informatique :
¾
objet = algorithme de construction :
• primitives géométriques
• opérateurs de transformation
• opérateurs de compositions
11
Types de modélisation
‹
Fil de fer
‹
Surfacique
‹
Volumique
12
Modélisation fil de fer
‹
Définition d’un objet = sommets + arêtes
‹
Ne permet pas de représenter les propriétés des solides
:
¾
impossible d’éliminer les parties cachées d’un objet
13
Modélisation surfacique
‹
Définition d’un objet à l’aide de surfaces
‹
Pas de notion de matière
‹
Modèle « classique » :
¾
¾
‹
face = liste d’arêtes formant sa frontière
objet = liste de faces délimitant un volume
Autres modèles :
¾
¾
surfaces d’extrusion, de révolution
surfaces gauches
14
Modélisation volumique
‹
Modèles descriptifs :
¾
définition d’un arbre de remplissage de l’espace :
• les nœuds sont des sous-espaces non homogènes
• les feuilles sont des sous-espaces vides ou pleins
¾
¾
la cellule de base est le cube élémentaire (Octree)
la cellule de base peut être de forme variable :
• elle doit paver l’espace
• elle n’a pas forcément 6 faces…
‹
Modèles constructifs (CSG) :
¾
définition d’un arbre de construction :
• les nœuds sont des opérateurs
• les feuilles sont des solides de base
15
Modélisation par octree
‹
Chaque nœud de l’arbre octal subdivise un espace
(limité) en 8 parties, sauf si cet espace est vide ou plein
7
3
4
1
2
8
6
16
Modélisation par octree
17
Primitives solides : sphères
‹
Paramètres :
¾
¾
‹
centre C
rayon r
Ensemble des points P qui vérifient :
¾
d (P, C) <= r
C
r
18
Sphères en VRML…
Shape {
appearance Appearance {
material Material { }
}
geometry Sphere {
radius 1.0
}
}
19
Primitives solides : cubes
‹
Paramètres :
¾
¾
‹
« centre » C
arêtes ax, ay, az
Ensemble des points (x, y, z) qui vérifient :
¾
¾
¾
xC – ax/2 <= x <= xC + ax/2
yC – ay/2 <= y <= yC + ay/2
zC – az/2 <= z <= zC + az/2
az
ay
ax
C
20
Cubes en VRML…
Shape {
appearance Appearance { … }
geometry Box {
size 2.0 2.0 2.0
}
}
21
Primitives solides : cylindres et cônes
‹
Paramètres :
¾
¾
¾
centre de l’axe : C
rayon de la base : r
hauteur de l’axe : h
h C
r
h C
r
22
Cylindres en VRML…
Shape {
appearance Appearance { … }
geometry Cylinder {
height 2.0
radius 1.0
bottom TRUE
top TRUE
side TRUE
}
}
23
Cônes en VRML…
Shape {
appearance Appearance { … }
geometry Cone {
height 2.0
bottomRadius 1.0
bottom TRUE
side TRUE
}
}
24
Modélisation CSG
‹
CSG : Constructive Solid Geometry
‹
Description de formes complexes
‹
Définition inductive :
¾
¾
¾
objet = ensemble de points
objet = sphère, cylindre, cône, boîte, …
objet = Obj1 bop Obj2
• bop = union, intersection, différence
¾
opérateurs de placement (position et orientation)
25
CSG : opérations de base
‹
Union
‹
Intersection
‹
Différence
26
CSG : expressions ensemblistes
‹
Arbre binaire :
+
-
27
Limitations des primitives solides
‹
Difficulté de modéliser des formes complexes par
mélange de formes simples :
¾
reliefs, plantes, véhicules, …
28
Primitives surfaciques
‹
Approximation de surfaces :
¾
placement des points caractéristiques de la forme :
• les sommets
¾
¾
connexion des points par des arêtes
facettes :
• surfaces définies par les arêtes
29
Primitives surfaciques
30
Primitives surfaciques
31
Modélisation B-Rep
‹
Boundary Representation :
¾
¾
‹
représentation par frontières de l’objet
évolution du modèle fil de fer
Problèmes :
¾
réussir à définir une structure représentation complète :
• géométriquement
• topologiquement
¾
pouvoir parcourir la topologie du modèle :
• relations d’adjacences
¾
créer des modèles par insertions d’entités :
• sommets
• arêtes
• faces
32
Représentation par frontières
‹
BReps : représentation polyédrique d’objets
¾
¾
¾
‹
Problème :
¾
‹
sommets
arêtes
faces
séparer les volumes intérieur et extérieur
Solution :
¾
orienter les surfaces
33
Orientation de surface
‹
Un modèle plan est orientable si chaque arête :
¾
¾
¾
‹
est parcourue 2 fois dans 2 sens opposés
appartient à 2 faces
est définie par 2 sommets
Définition de structure BReps de modélisation par
frontières par listes de :
¾
sommets : informations géométriques
• coordonnées 3D
¾
arêtes : informations topologiques
• relations d’adjacences faces, arêtes, sommets
¾
faces : informations géométriques
• normales aux surfaces
34
Orientation de surface
‹
La normale à une face est déterminée par le sens de
parcours de ses arêtes
‹
Conventions pour les normales selon le parcours :
¾
¾
sens trigonométrique (counter-clockwise) : sortante
sens anti-trigonométrique (clockwise) : rentrante
35
Primitives surfaciques : polygones
‹
Approximation de la surface des objets
‹
Primitives : le triangle, le quadrangle, …
‹
Avantages :
¾
¾
¾
‹
facile à manipuler
facile à afficher
peut tout approcher
Inconvénients :
¾
base de données de taille importante
36
Primitives surfaciques :
ensembles de polygones
‹
Énumération de facettes
‹
Simple à mettre en œuvre mais :
¾
¾
duplication de données
problèmes de cohérence
F1 = (P0, P1, P2)
F2 = (P0, P2, P3)
F3 = (P3, P1, P0)
F4 = (P3, P2, P1)
P0
P1
P3
P2
Obj = (F1, F2, F3, F4)
37
Primitives surfaciques :
ensembles de polygones et index
‹
Énumération de facettes avec partage de sommets
‹
Évite la duplication de données
LS = {P0, P1, P2, P3}
P0
P1
F1 = (LS [0], LS [1], LS [2])
F2 = (LS [0], LS [2], LS [3])
F3 = (LS [3], LS [1], LS [0])
F4 = (LS [3], LS [2], LS [1])
P3
P2
Obj = (F1, F2, F3, F4)
38
Facettes indexées en VRML (1/3)
geometry IndexedFaceSet {
coord Coordinate { . . . }
coordIndex [ . . . ]
solid TRUE
ccw TRUE
convex TRUE
}
39
Facettes indexées en VRML (2/3)
geometry IndexedFaceSet {
coord Coordinate {
point [-1.0 -1.0 -1.0,
-1.0 -1.0 1.0,
-1.0 1.0 -1.0,
-1.0 1.0 1.0,
1.0 -1.0 -1.0,
1.0 -1.0 1.0,
1.0 1.0 -1.0,
1.0 1.0 1.0, ] }
40
Facettes indexées en VRML (3/3)
coordIndex [1, 5, 7, 3, -1,
4, 6, 7, 5, -1,
2, 3, 7, 6, -1,
0, 2, 6, 4, -1,
0, 1, 3, 2, -1,
0, 4, 5, 1, -1, ]
solid TRUE
}
41
Opérateurs de composition
Balayage de surface
‹
Spécification de la forme d’un objet 3d :
¾
¾
description d’une forme (courbe fermée)
description d’une courbe 2d
• de préférence non coplanaire avec la forme…
¾
‹
déplacement de la forme le long de la courbe
Surface balayée par la courbe :
¾
surface de l’objet 3D
42
Opérateurs de composition :
Balayage de surface
‹
Extrusion
‹
Révolution
43
Balayage de surfaces en VRML…
geometry Extrusion {
crossSection [ . . . ]
spine [ . . . ]
scale [ . . . ]
orientation [ . . . ]
endCap TRUE
beginCap TRUE
solid TRUE
ccw TRUE
convex TRUE
}
44
Balayage de surfaces… (1/4)
45
Balayage de surfaces… (2/4)
46
Balayage de surfaces… (3/4)
47
Balayage de surfaces… (4/4)
48
2.2 Transformations géométriques
‹
Objectifs
‹
Repères
‹
Transformations élémentaires :
¾
¾
¾
‹
translation
rotation
mise à l’échelle
Compositions de transformations
49
Objectifs
‹
Placement et/ou orientation d’objets dans l’univers :
¾
souvent, par défaut, les objets sont :
• placés au centre de la scène
• orientés selon le repère global
¾
‹
il faut donc pouvoir les situer et les orienter correctement
Réutilisation d’objets par duplication, en en réalisant
plusieurs instances :
¾
¾
positionner et/ou orienter ces instances d’un même modèle
géométrique
pour qu’elles ne soient pas toutes superposées…
50
Repères
z
y
y
(x0,y0,z0)
y0
O
x
y
z0 O
x0
z
x
Repère direct
Repère direct
O
z
x
Repère indirect
51
Repères
Repère caméra
Z’’
X ’’
Y’’
Z
Y’
Y
X
O
Z’ O’X’
Repère local
Repère de la scène
52
Transformations élémentaires
‹
Translation
‹
Rotation de type vecteur rotation (quaternion ?)
‹
Rotation avec angles YPR (ou HPR ?)
‹
Mise à l’échelle
53
Translation
‹
Définie par un vecteur (x, y, z)
54
Rotation de type vecteur rotation
‹
Définie par :
¾
¾
axe de rotation (x, y, z)
angle de rotation (w)
55
Rotation de type YPR
‹
3 rotations successives autour des 3 axes de base :
¾
¾
‹
Définie par les 3 angles Y, P, et R :
¾
¾
¾
‹
pour les amener dans la direction souhaitée
le repère lié à l’objet en rotation évolue suite à chaque
transformation
Y : yaw (lacet) autour de l’axe vertical
P : pitch (tangage) autour du nouvel axe latéral
R : roll (roulis) autour du nouvel axe normal
Aussi appelés HPR :
¾
¾
Y parfois appelé H : heading (azimuth)
P alors traduit en élévation
56
Rotation
57
Rotation de type HPR
58
Mise à l’échelle
‹
Définie par des facteurs de mise à l’échelle :
¾
‹
hx, hy, hz
Ce sont des homothéties :
¾
avec des valeurs négatives, on obtient des symétries…
59
Transformations en VRML …
Transform {
translation . . .
rotation . . .
scale . . .
children [ . . . ]
}
60
Repère local à un objet de l’univers
‹
Chaque objet de l’univers peut avoir un repère associé
(repère local à l’objet) caractérisé par :
¾
¾
‹
la position de l’origine de ce repère
l’orientation de ce repère par rapport à un autre repère
Ce repère est caractérisable par une matrice de
transformation 4x4 homogène, qu’on remplit avec :
¾
¾
¾
la position de la géométrie
son orientation
une mise à l’échelle éventuelle
61
Calculs sur les matrices 4x4
‹
Fonctionnalités couramment offertes :
¾
création de matrices de rotation :
• à partir d’un quaternion
• à partir des angles (h, p r)
¾
création de matrices de translation,
• à partir des 3 translations élémentaires (x, y, z)
¾
création de matrices de mise à l’échelle
• à partir des 3 facteurs d’échelle (hx, hy, hz)
¾
composition des 3 créations précédentes :
• avec un ordre défini pour l’application des 3 transformations
¾
¾
récupération des coordonnées (x, y, z), (h, p r), (hx, hy, hz)
manipulations (produits, inversion, transposée, …)
62
Composition de transformations
1:S
2:R
3:T
M=TRS
63
Composition de transformations
‹
Soit M la matrice de transformation permettant de passer
de l’origine du repère global (O, ω) à la
position/orientation d’un objet possédant un repère local
(O’, ω’)
‹
Soit T la matrice de translation OO’
‹
Soit R la matrice de rotation ωω’
‹
M=TR
64
Translations
‹
Globale :
¾
¾
‹
Translater l’objet (O’, ω’) d’une translation absolue T1 dans le
repère global
M1 = T 1 M
Locale :
¾
¾
Translater l’objet (O’, ω’) d’une translation relative T2 dans son
repère local
M2 = M T 2
65
Rotations
‹
Globale :
¾
¾
‹
Faire tourner l’objet (O’, ω’) d’une rotation absolue R1 autour de
O dans le repère global
M1 = R1 M
Locale :
¾
¾
Faire tourner l’objet (O’, ω’) d’une rotation relative R2 autour de
O’ dans son repère local
M2 = M R2
66
Mise à l’échelle uniforme
‹
h = hx = hy = hz
y
O
h = -1
z
h=2
h = 0.5
x
67
Types particuliers de mises à l’échelle
‹
Symétrie plane : une valeur à –1, deux à 1
‹
Symétrie axiale : deux valeurs à –1, une à 1
‹
Symétrie ponctuelle : trois valeurs à –1
68
2.3 Outils d’aide à la modélisation
‹
Modélisation manuelle
‹
Modélisation par interaction
¾
¾
‹
outils dédiés
modeleurs 3D et traducteurs
Modélisation par générateurs de formes
69
Modélisation manuelle
‹
A l’aide d’un éditeur de texte…
‹
Avantages :
¾
¾
¾
‹
cela ne coûte rien
accès à toutes les caractéristiques du modèle utilisé
contrôle précis de l’efficacité des mondes décrits
Inconvénients :
¾
¾
difficile de construire des formes 3D complexes
nécessite une bonne connaissance du modèle utilisé
70
Modélisation par interaction
‹
Avec un modeleur 3D ou un outil dédié à un modèle
particulier :
¾
‹
Choix de primitives :
¾
‹
3D studio, Maya, …
géométries 2D ou 3D
Choix d’actions :
¾
¾
¾
¾
¾
extrusion de formes 2D
révolution
transformations 3D
insertions d’autres objets, dans d’autres formats, …
exports dans différents formats, …
71
Outils dédiés
‹
Destinés à un seul modèle de représentation
‹
Avantages :
¾
¾
‹
faciles à utiliser
ne nécessitent pas la connaissance parfaite du modèle
Inconvénients :
¾
¾
ne supportent pas forcément toutes les caractéristiques du
modèle
n’optimisent pas forcément le modèle
72
Modeleurs 3D et traducteurs
‹
Destinés à plusieurs modèles de représentation
‹
Avantages :
¾
¾
‹
faciles à utiliser
puissants
Inconvénients :
¾
¾
¾
¾
¾
ne supportent pas forcément toutes les caractéristiques du
modèle
n’optimisent pas forcément le modèle
ne sont pas conçus pour un modèle particulier
rarement de retour inverse modèle -> modeleur
tendance à produire des formes complexes… et lourdes !
73
Modélisation par générateurs de
formes
‹
Génération de modèles par programmes spécialisés
¾
¾
‹
Avantages :
¾
¾
‹
formes fractales
équations de surfaces ou volumes
faciles à utiliser pour obtenir des formes complexes
utilisation de connaissances scientifiques particulières pour
générer des modèles 3D
Inconvénients :
¾
¾
destinés à des ensembles restreints de formes
à utiliser en complément d’autres outils
74
3. Animation
1. Introduction
2. Modélisation d’univers
3. Animation
¾
¾
paramètres d’animation
interpolation entre images clés
4. Rendu
5. Interaction
6. Conclusion
75
Paramètres d’animation
‹
Animation = suite discrète d’images différentes
‹
Paramètres pouvant évoluer :
¾
¾
¾
¾
¾
‹
transformations de repères (position, orientation, échelle)
forme
matériaux (couleurs, texture, transparence)
caméra
lumière
Évolution en fonction :
¾
¾
du temps
des interactions de l’utilisateur
76
Interpolation entre images clés
‹
Spécification d’un ensemble de valeurs clés :
¾
¾
¾
¾
¾
¾
positions
orientations
facteurs d’échelle
couleurs
transparence
forme (coordonnées de points)
‹
Expression du temps qui doit être mis pour passer d’une
valeur à une autre
‹
Expression de la façon de passer d’une valeur à l’autre
(type d’interpolation)
77
Interpolateurs en VRML
‹
Associations clés/valeurs
‹
« Routages » entre « sorties » et clés
‹
« Routages » entre valeurs et « entrées »
PositionInterpolator {
key [ 0.0, . . . ]
keyValue [ 0.0 0.0 0.0, . . . ]
}
78
Interpolation de positions en VRML
DEF Particle Transform { . . . }
DEF Timer TimeSensor {
cycleInterval 12.0
loop TRUE
}
DEF Position PositionInterpolator {
key [ 0.0, . . . ]
keyValue [ 0.0 0.0 0.0, . . .]
}
ROUTE Timer.fraction_changed TO Position.set_fraction
ROUTE Position.value_changed TO Particle.set_translation
79
Autres interpolations en VRML (1)
OrientationInterpolator {
key [ 0.0, . . . ]
keyValue [ 0.0 1.0 0.0 0.0, . . . ]
}
ColorInterpolator {
key [ 0.0, . . . ]
keyValue [ 1.0 1.0 0.0, . . . ]
}
ScalarInterpolator {
key [ 0.0, . . . ]
keyValue [ 4.5, . . . ]
}
80
Autres interpolations en VRML (2)
CoordinateInterpolator {
key [ 0.0, …]
keyValue [
# 1st coordinate set
-1.0 1.0 1.0, 1.0 1.0 1.0, 1.0 1.0 -1.0,
# 2nd coordinate set
…
]
}
81
Autres interpolations en VRML (3)
Shape {
geometry IndexedFaceSet {
coord DEF Coordinates Coordinate { point [ … ] }
coordIndex [ … ]
}
}
DEF Clock TimeSensor {
cycleInterval 2.0
loop TRUE
startTime 1.0
stopTime 0.0
}
82
Autres interpolations en VRML (4)
DEF Interpolator CoordinateInterpolator {
key [ 0.0, …, 1.0 ]
keyValue [ # 1st coordinate set
…
# 2nd coordinate set
…
]
}
ROUTE Clock.fraction_changed TO Interpolator.set_fraction
ROUTE Interpolator.value_changed TO Coordinates.set_point
83
4. Rendu
1. Introduction
2. Modélisation d’univers
3. Animation
4. Rendu
¾
¾
¾
¾
visualisation d’objets facettisés
pyramide de vue, clipping
algorithmes de visualisation
modèle d’éclairement
5. Interaction
6. Conclusion
84
4.1 Visualisation d’objets facettisés
‹
Image = { pixels }
‹
Synthèse : associer à chaque pixel :
¾
¾
‹
une intensité lumineuse
une couleur
L’intensité lumineuse dépend :
¾
¾
¾
des sources lumineuses
de la position de l’observateur
de la position des objets de la scène
85
Les principales étapes du rendu
‹
Placement des objets dans le repère de la caméra :
¾
¾
‹
Détermination des objets se trouvant dans la zone de
clipping :
¾
‹
pour simplifier les calculs
repère indirect, axe Z = axe des profondeurs
détermination des seules facettes visibles (celles qui se trouvent
dans la pyramide de vue)
Utiliser un algorithme de rendu pour visualiser les faces
visibles
86
Transformations pour la visualisation
‹
Projection plane :
¾
¾
association pixel ↔ point de la scène
définie par :
• le centre de projection
• le plan de projection
¾
principalement 2 types :
• perspective
• parallèle
87
Projection perspective
P
Yc
écran
P’
Zc
Oc
Xc
88
Projection parallèle
Yc
écran
P
P’
Zc
Oc
à l’infini
Xc
89
4.2 Pyramide de vue et clipping
‹
Les objets visibles sont ceux qui se trouvent dans la
pyramide de vue
‹
Constituée de 6 plans
‹
Les objets en partie dans la pyramide de vue sont
coupés par un ou plusieurs de ces 6 plans
90
Pyramide de vue
plan écran
plan arrière
(back plane)
(far plane)
Zc
Yc
Oc
plan avant
(front plane)
(near plane)
Xc
91
Clipping
‹
Trouver les facettes situées dans la pyramide de vue
‹
Consiste à déterminer si une facette intercepte ou non
ces 6 plans :
¾
¾
‹
revient à déterminer les arêtes qui interceptent ou non ces 6
plans
si une arête intercepte un plan (les sommets de cette arête se
trouvent de part et d’autre des 2 demi espaces séparés par le
plan) elle est subdivisée en 2 segments : visible et non visible
Exemple :
¾
algorithme de Sutherland-Hogman
92
Algorithme de Sutherland-Hogman (1)
‹
Stratégie « diviser pour régner » :
¾
‹
Problème élémentaire :
¾
‹
résolution d’un ensemble de problèmes élémentaires, qui, tous
ensemble, permettent de résoudre le problème global
déterminer la visibilité d’un polygone selon un plan infini
correspondant à l’un des 6 plans qui délimitent la pyramide de
vue
Appliquer 6 fois la solution détermine les parties des
polygones qui sont strictement dans la pyramide de vue
93
Algorithme de Sutherland-Hogman (2)
‹
Traitement des sommets définissant un polygone :
¾
¾
¾
‹
v1, v2, …, vn puis retour à v1
examen de la relation entre les sommets successifs et un côté
du plan
à chaque étape, 0, 1 ou 2 sommets sont ajoutés à la liste de
sommets qui définit l’intersection du polygone avec le demi-plan
contenant la pyramide de vue
S est le point déjà traité, P est le point courant :
¾
4 cas possibles…
94
Algorithme de Sutherland-Hogman (3)
intérieur
extérieur
S
P
cas 1 : P sommet à ajouter dans la liste
95
Algorithme de Sutherland-Hogman (4)
intérieur
extérieur
P
S
I
cas 2 : I sommet à ajouter dans la liste
96
Algorithme de Sutherland-Hogman (5)
intérieur
extérieur
P
S
cas 3 : aucun sommet à ajouter dans la liste
97
Algorithme de Sutherland-Hogman (6)
intérieur
P
extérieur
I
S
cas 4 : I et P, sommets à ajouter dans la liste, dans cet ordre
98
4.3 Algorithmes de rendu
‹
Algorithmes d’élimination des parties cachées :
¾
¾
‹
basés image
basés objets
Quelques algorithmes particuliers :
¾
¾
¾
¾
Z-Buffer
de balayage en lignes
à priorités sur les objets
à subdivision du plan de projection de l’image
99
Elimination des parties cachées (1)
‹
Algorithmes basés image :
pour (chaque pixel de l’image) faire
déterminer, parmi les objets traversés par le rayon visuel relatif
à ce pixel, l’objet le plus proche de l’observateur
afficher ce pixel dans la couleur appropriée
fin pour
‹
Algorithmes basés objets :
pour (chaque objet dans la scène) faire
déterminer les éléments d’objets non occultés par d’autres
éléments du même objet ou par d’autres objets
afficher ces éléments dans les couleurs appropriées
fin pour
100
Elimination des parties cachées (2)
‹
Algorithmes basés image :
¾
N objets et P pixels :
• proportionnels à N x P
¾
travaillent à la résolution du système d’affichage :
• victimes de problèmes de lissage (agrandissement d’une image)
‹
Algorithmes basés objet :
¾
N objets :
• proportionnels à N x N
• mais étapes plus complexes et plus longues
¾
indépendants de l’affichage :
• doivent être complétés par une étape de traitement de l’affichage à une
résolution donnée
101
Elimination des parties cachées (3)
‹
Différents types d’algorithmes :
¾
Z-Buffer :
• mémoire de profondeur pour le calcul des pixels de l’image
¾
à balayage de lignes :
• l’élimination des parties cachées se fait ligne par ligne de balayage
¾
à priorités : consistent à trier les objets suivant leur profondeur :
• peuvent nécessiter des découpages d’objets (cas de recouvrements
cycliques ou d’interpénétration) :
• les facettes sont divisées jusqu’à ce qu’on puisse dire quelles parties des
facettes sont visibles
¾
à subdivision du plan de projection de l’image :
• on divise récursivement l’écran pour trouver des zones simples à afficher
102
Algorithme du Z-Buffer (1)
‹
Z-Buffer : « mémoire de profondeur »
‹
Algorithme basé image
‹
Développé par Catmull en 1974
‹
On utilise 2 tableaux :
¾
¾
¾
de la taille de la fenêtre de projection : i et j sont les
coordonnées des pixels
un pour stocker les intensités (Int [i][j])
un pour stocker les profondeurs (Zbuff [i][j])
‹
Les facettes sont traitées dans n’importe quel ordre,
sans tri préalable
‹
Aucune comparaison d’objet à objet n’est nécessaire
103
Algorithme du Z-Buffer (2)
‹
Lors du remplissage d’une facette :
¾
¾
‹
si la profondeur calculée Z d’un pixel est supérieure à celle
mémorisée (calculée pour une facette précédente), c’est-à-dire
plus éloignée de la caméra, alors on n’en tient pas compte
dans le cas contraire, on la mémorise et on sauvegarde
l’intensité associée
Facile à implanter matériellement :
¾
¾
¾
pas de structures de données complexes
seulement des comparaisons de valeurs de matrices
seulement besoin de mémoire
104
Algorithme du Z-Buffer (3)
début algorithme Z-Buffer (avec z (plan avant) = 0)
pour (tous les pixels i,j faire)
Int [i][j] ← couleur du fond ; Zbuff [i][j] ← z (plan arrière)
fin pour
pour (tous les polygones de la scène) faire
pour (tous les pixels de la projection du polygone) faire
si (0 ≤ z du polygone au point i,j ≤ Zbuf [i][j]) alors
Zbuff [i][j] ← z du polygone au point i,j
Int [i][j] ← couleur du polygone en i,j
fin si
fin pour
fin pour
fin
105
Algorithme du Z-Buffer (4)
‹
Chaque polygone peut être traité ligne-à-ligne
‹
Peut traiter autre chose que des polygones
‹
Cet algorithme peut être optimisé si des pré-traitements
sont réalisés sur les objets à visualiser :
¾
simplifié si on suppose qu’un clipping est réalisé :
• un seul test à réaliser…
¾
accéléré en effectuant un tri approximatif des facettes selon les
profondeurs croissantes :
• on évite les calculs de couleur inutiles
¾
prise en compte de la transparence si les facettes opaques sont
traitées avant les facettes transparentes :
• gestion de différentes listes d’objets
106
Algorithmes de balayage en lignes (1)
‹
Basés image
‹
Génèrent l’image ligne par ligne
‹
Capables de traiter des scènes contenant des facettes :
¾
¾
¾
convexes
non convexes
avec des trous
y
z
x
107
Algorithmes de balayage en lignes (2)
‹
Couper la scène par des plans contenant l’observateur et
passant par des lignes de balayage Yi :
¾
‹
Remplissage de ces segments :
¾
‹
résultat : un ensemble de segments joignant les arêtes des
facettes
calcul de l’intensité et de la profondeur de chaque pixel de ces
segments
Application de la technique du Z-Buffer à chaque ligne
de balayage
108
Algorithmes de balayage en lignes (3)
‹
Créer une table des arêtes (ET) pour toutes les arêtes
non horizontales de tous les polygones projetés sur le
plan de visualisation :
¾
¾
¾
les arêtes horizontales sont ignorées
ces éléments sont alors regroupés en paquets d’arêtes et triés
par ordre croissant sur y
pour chaque paquet, les arêtes sont triées par x croissant de
leur sommet inférieur
109
Algorithmes de balayage en lignes (4)
‹
Nature des éléments de la table des arêtes, pour une
arête commençant à une altitude donnée :
¾
¾
¾
¾
la coordonnée x du sommet possédant le plus petit y
la coordonnée y de l’autre sommet
l’accroissement en x (dx) utilisé pour passer d’une ligne de
balayage à l’autre (inverse de la pente de l’arête)
l’identificateur du polygone indiquant le polygone auquel l’arête
appartient
110
Algorithmes de balayage en lignes (5)
‹
Créer une table des polygones (PT)
‹
Nature des éléments de cette table :
¾
¾
¾
¾
l’identificateur du polygone
les coefficients de l’équation du plan
la couleur et l’ombrage
un booléen d’inclusion initialisé à faux
111
Algorithmes de balayage en lignes (6)
‹
Créer une table des arêtes actives (AET) :
¾
‹
pour chaque ligne de balayage on garde une trace des arêtes
qu’elle traverse et des points d’intersection
Nature des éléments de cette table :
¾
les arêtes qui étaient traversées par la ligne précédente
• modifiées selon x via le dx
¾
¾
¾
moins les arêtes qui se terminent sur cette ligne
plus les arêtes qui débutent sur cette ligne
les arêtes sont ordonnées en permanence par x croissant :
• à cause des ajouts d’arêtes
• à cause des variations sur les x
• peu d’arêtes et peu de désordre : pas besoin d’un tri performant
tri par insertion ou tri bulles
112
Algorithmes de balayage en lignes (7)
‹
Pour chaque ligne, les arêtes sont traitées en x croissant
‹
Quand on passe d’une arête à une autre, on met à jour
le booléen d’appartenance au polygone associé à la
nouvelle arête :
¾
il faut gérer ces booléens indépendamment les uns des autres
pour les inclusions multiples
113
Algorithmes de balayage en lignes (8)
y
E
B
γ+2
γ + 1γ
D
β
α
C
F
A
x
114
Algorithmes de balayage en lignes (9)
‹
Contenu de la table des arêtes actives :
¾
ligne α :
• AB, AC
¾
ligne β :
• AB, AC, FD, FE
¾
ligne γ :
• AB, DE, CB, FE
¾
ligne γ + 1 :
• AB, DE, CB, FE
¾
ligne γ + 2 :
• AB, CB, DE, FE
115
Algorithmes de balayage en lignes (10)
‹
Traitement de la ligne α : AB, AC
¾
traitement de AB :
• inversion du booléen d’inclusion du polygone ABC qui devient vrai
• le balayage est donc dans le polygone ABC
• application des paramètres de couleur du polygone ABC jusqu’à
rencontrer la prochaine arête active
¾
traitement de AC:
• inversion du booléen d’inclusion du polygone ABC qui devient faux
• le balayage n’est donc plus dans le polygone ABC
• arrêt du traitement de la ligne de balayage (AC est la dernière arête de la
liste)
¾
¾
mise à jour de la table des arêtes actives grâce à la table des
arêtes, puis tri de AET
passage à la ligne de balayage suivante
116
Algorithmes de balayage en lignes (11)
‹
Traitement de la ligne β : AB, AC, FD, FE
¾
¾
commence de façon similaire au traitement de la ligne α
il y a 2 polygones sur la ligne, mais le balayage se fait dans un
seul polygone à la fois
117
Algorithmes de balayage en lignes (12)
‹
Traitement de la ligne γ : AB, DE, CB, FE
¾
l’entrée dans ABC rend le booléen d’inclusion vrai :
• l’ombrage de ABC est utilisé jusqu’à la prochaine arête DE
¾
La rencontre de DE fait passer le booléen de DEF à vrai
• le balayage est dans 2 polygones à la fois
• (il est utile de conserver à part la liste des polygones dont le booléen
d’inclusion est à vrai)
• détermination du polygone qui se trouve devant grâce aux équations des
polynômes en z pour y = γ et x = intersection de la ligne y = γ avec l’arête
DE (c’est la valeur courante de x pour l’arête active DE)
• en supposant que les polygones sont non sécants, l’ombrage calculé (ici
celui de DEF) est appliqué jusqu’à l’arête suivante CB
¾
la rencontre de CB fait passer le booléen de ABC à faux…
118
Algorithmes de balayage en lignes (13)
‹
Traitement de la ligne γ + 1 : AB, DE, CB, FE
¾
¾
en supposant que les polygones ne s’intersectent pas…
si les arêtes actives sont les mêmes que pour la ligne
précédente (cohérence de profondeur) :
• on n’a pas besoin de relancer les calculs de profondeur…
‹
Traitement de la ligne γ + 2 : AB, CB, DE, FE
¾
les arêtes actives sont les mêmes que pour la ligne précédente,
mais pas dans le même ordre…
• on ne peut pas réutiliser les calculs précédents…
119
Algorithmes de balayage en lignes (14)
‹
Traitement de la couleur du fond : plusieurs possibilités :
¾
¾
remplir la mémoire d’image avec la couleur du fond
inclure dans la scène un polygone supplémentaire :
•
•
•
•
¾
très grand
très éloigné
parallèle au plan de projection
de la couleur du fond
modifier l’algorithme pour qu’il remplisse les pixels de la couleur
voulue, lorsque le balayage n’est pas dans un polygone
120
Algorithmes à priorités d’objets
‹
Trient les objets suivant leur profondeur
‹
Hybrides :
¾
basés objets :
• comparaisons des distances à la caméra
• subdivisions d’objets
¾
basés images :
• conversion en ligne de balayage
‹
Exemple : algorithme du tri en profondeur
121
Algorithme du tri en profondeur
‹
Newell, Newell et Sancha, 1972
‹
3 grandes étapes :
¾
¾
¾
‹
trier les polygones par leur plus petit z
résoudre les ambiguïtés dues aux recouvrements, en
subdivisant les polygones si nécessaire
procéder à l’affichage par balayage de ligne de chaque
polygone en ordre de z décroissant (de l’arrière vers l’avant de
la scène)
Cas particulier de l’algorithme du peintre :
¾
utilisation des priorités explicites associées aux objets :
• fonctionne bien quand les objets sont dans des plans à z constant
• approximation possible par le z des centres de gravité (peu fiable)
122
Algorithmes à subdivisions de l’image
‹
Subdivision du plan de projection de l’image :
¾
si on ne sait pas afficher « simplement » une zone (c’est-à-dire
si on ne peut pas déterminer facilement que les polygones sont
visibles) :
• on subdivise de façon récursive cette zone de l’image
¾
la diminution de la taille des zones entraîne une diminution des
recouvrements entre polygones (basée sur la cohérence de
zone) :
• toute portion suffisamment petite d’une image contient au maximum un
seul polygone visible
‹
Exemple : algorithme de Warnock
123
Algorithme de Warnock (1969)
‹
Arrêt de la subdivision si dans l’un des 4 cas :
¾
tous les polygones sont disjoints à la zone :
• on affiche la couleur du fond
¾
il n’y a qu’un seul polygone sécant ou inscrit :
• on affiche la couleur du fond, puis on affiche le polygone, en totalité ou en
partie
¾
il y a un seul polygone circonscrit et aucun inscrit ou sécant :
• on affiche la couleur du polygone
¾
Il y a un polygone circonscrit placé devant tous les autres (les z
de ces coordonnées aux 4 coins de la zone sont inférieurs aux z
de tous les points des autres polygones) :
• on affiche la couleur du polygone
124
Warnock : les 4 cas élémentaires …
‹
Circonscrit
‹ Inscrit
‹
Sécant
‹ Disjoint
125
Stéréovision
‹
Consiste à calculer 2 images :
¾
¾
¾
¾
‹
utilisation de 2 caméras, situées à gauche et à droite du point
de vue (sur l’axe x du repère observateur)
2 calculs de clipping
2 calculs de rendu
association de chaque image à chaque œil de l’utilisateur
2 fois plus coûteux ?
¾
¾
si on ne peut partager les calculs entre les 2 images…
dépend de l’algorithme de rendu…
126
4.4 Modèle d’éclairement
‹
Exprime l’intensité lumineuse d’un point due à :
¾
¾
la lumière ambiante que produit dans toutes les directions un
éclairage uniforme
les sources lumineuses qui sont à l’origine :
• des réflexions diffuses et spéculaires
• des ombres portées
¾
‹ Ir
la réflectance et la transmittance d’un objet
= Ia + Id + Is
¾ Ia
¾
¾
est l’intensité ambiante
Id est l’intensité diffuse
Is est l’intensité spéculaire
127
Réflexion diffuse (1)
‹
Réflexion de Lambert :
¾
¾
une partie de la lumière incidente pénètre dans l’objet et ressort
avec la même intensité dans toutes les directions
Id = Kd . Iobj . Isource . cos (N, L) / d2
•
•
•
•
•
•
•
¾
Kd : coefficient de réflexion diffuse de l’objet
Iobj : couleur de la surface de l’objet
Isource : intensité de la source lumineuse
N : normale à la surface au point P
L : direction dans laquelle se trouve la source lumineuse
d : distance entre la source et l’objet éclairé
ρd = Kd . Iobj : couleur diffuse de l’objet
liée à la rugosité microscopique :
• plus ρd est grand, plus la diffusion est grande
128
Réflexion diffuse (2)
‹ Id
= Kd . Iobj . Isource . cos (N, L) / d2
source
lumineuse
observateur
N
L
R
V
P
129
Réflexion spéculaire (1)
‹
Modèle de Phong :
¾
¾
réflexion par la surface de l’objet de la lumière incidente qui n’a
pas pénétré dans l’objet, dépend de la direction d’observation
Is = Ks . Fobj . Isource . cosn (R, V) / d2
•
•
•
•
•
•
•
Ks : coefficient de réflexion spéculaire de l’objet
Isource : intensité de la source lumineuse
Fobj : caractérise l’aspect spéculaire de l’objet
R : direction de réflexion spéculaire maximale
V : direction dans laquelle se trouve l’observateur
ρs = Ks . Fobj : couleur spéculaire de l’objet
n est l’exposant de réflexion spéculaire de l’objet :
n grand = objet lisse et brillant = cône spéculaire étroit
n petit = objet terne = cône spéculaire large
pour le verre, n = 200
130
Réflexion spéculaire (2)
‹ Is
= Ks . Fobj . Isource . cosn (R, V) / d2
source
lumineuse
observateur
N
L
R
V
P
131
Quelques remarques…
‹
Ks + K d = 1
‹
Si plusieurs sources, il faut sommer…
‹
On a besoin de connaître plusieurs directions :
¾
les normales aux facettes et les directions des sources de
lumière et de l’observateur :
• les directions L, N et R sont coplanaires
• l’angle <L, N> est égal à l’angle <N, R>
‹
Les coefficients Ks et Kd ainsi que les couleurs sont des
vecteurs à 3 composantes :
¾
‹ Id
¾
rouge, vert, bleu
+ Is = (ρd . cos (N, L) + ρs . cosn (R, V)) . Isource / d2
on parle de réflectance bidirectionnelle
132
Éclairage ambiant
‹
Chaque objet est montré avec une intensité intrinsèque :
¾
¾
¾
pas de source extérieure
univers irréel d’objets lumineux non réfléchissants
Ia = Kd . Iobj
• Kd : coefficient de réflexion diffuse de l’objet
• Iobj : couleur de la surface de l’objet
133
Transparence
‹
I = Kt . Ir + (1 – Kt) . Iarrière
¾ Ir
¾
¾
: intensité réfléchie en un point A de l’objet transparent
Iarrière : intensité au point B de l’objet situé derrière l’objet
transparent
Kt : coefficient de transparence, entre 0 et 1
• Kt = 1 pour un objet opaque
observateur
objet opaque
B
A
objet transparent
134
Couleurs en VRML
Shape {
appearance Appearance {
material Material {
diffuseColor 0.3 0.3 0.3
emissiveColor 0.0 0.0 0.0
transparency 0.0
specularColor 0.71 0.70 0.56
shininess 0.16
ambientIntensity 0.4
}
}
geometry …
}
135
Lumières en VRML (1)
‹
PointLight :
¾
‹
DirectionalLight :
¾
‹
éclaire dans une direction en venant de l’infini
SpotLight :
¾
‹
éclaire dans toutes les directions à partir d’un point
éclaire dans une direction, selon un cône
Champs communs :
¾
¾
¾
¾
on : allumée ou éteinte
intensity : contrôle la luminosité
ambiantIntensity : contrôle les effets ambiants
color : choix de la couleur de la lumière
136
Lumières en VRML (2)
‹
Champs communs à PointLight et SpotLight :
¾
¾
¾
‹
location : la position de la source lumineuse
radius : la portée maximale de la lumière
attenuation : atténuation de la lumière
Champs communs à DirectionalLight et SpotLight :
¾
direction : direction de l’éclairage
137
Lissage de facettes
‹
Il n’est pas réaliste, pour une facette :
¾
de calculer l’intensité lumineuse en chaque point :
• c’est trop coûteux
¾
d’attribuer la même intensité à tous les points :
• effet de « facettisation »
‹
Il est plus judicieux :
¾
¾
de calculer les intensités aux sommets de la facette
de déduire l’intensité de chaque point par une interpolation
bilinéaire
‹
Cette opération de remplissage est appelée lissage (ou
ombrage)
‹
2 types de lissage :
¾
lissage de Gouraud et lissage de Phong
138
Lissage de Gouraud (1)
‹
But : calculer l’intensité des points sur une ligne de
balayage à partir des intensités calculées des sommets
A
D
L
P
ligne de balayage
R
B
C
139
Lissage de Gouraud (2)
‹
Calcul des intensités aux points L, R et P :
¾ IL
¾
¾
‹
= IA + (IB – IA) . AL / AB
IR = ID + (IC – ID) . DR / DC
IP = IL + (IR – IL) . LP / LR
Possibilité de calcul incrémental :
¾ ILi+1
¾
¾
= ILi + (IB – IA) / AB
IRi+1 = IRi + (IC – ID) / CD
IPj+1 = IPj + (IR – IL) / LR
140
Lissage de Gouraud (3)
‹
Dans le cas de surfaces approchées par des facettes
planes, la normale en un point partagé par plusieurs
facettes doit être égale à la moyenne des normales de
ces facettes pour obtenir un effet de lissage
N
N1
N2
N4
N = moyenne (N1, N2, N3, N4)
N3
141
Lissage de Phong
‹
Ombrage par interpolation des vecteurs normaux :
¾
¾
‹
Interpoler dans l’intervalle d’un polygone sur une ligne de
balayage, entre les normales de début et fin d’intervalle :
¾
‹
ne pas interpoler les intensités
interpoler la normale pour chaque pixel couvert
ces normales sont elles-mêmes interpolées à partir des
normales aux sommets, calculées si nécessaire en appliquant le
modèle de Gouraud
Lissage beaucoup plus réaliste que celui de Gouraud…
mais beaucoup plus exigeant en terme de calculs
142
Comparaison Gouraud / Phong (1)
‹
Cas d’une facette triangulaire avec :
¾
¾
¾
n grand
angle faible sur l’un des sommet
angle important sur les 2 autres
Gouraud
Phong
143
Comparaison Gouraud / Phong (2)
‹
Cas d’une facette triangulaire avec :
¾
¾
¾
n grand
reflet sur l’intérieur de la facette
angle important sur les 3 sommets
Gouraud
Phong
144
Lissage en VRML
‹
Par défaut, pas de lissage :
¾
‹
rendu facettisé
Possibilité de donner un angle seuil de lissage :
¾
¾
en dessous de cet angle, on interpole les normales
au dessus de cet angle, on facettise
‹
Champ de lissage : creaseAngle
‹
Formes VRML « lissables » :
¾
¾
¾
indexedFaceSet
elevationGrid
extrusion
145
Placage de textures
‹
Plaquer une image sur une surface :
¾
¾
‹
image numérisée ou fabriquée
chaque élément de l’image est appelé texel
Une texture peut être rectangulaire :
¾
elle a son propre système de coordonnées
‹
Une texture peut aussi être définie par un algorithme
‹
Pour le rendu d’un pixel, les texels sont utilisés pour
modifier une ou plusieurs propriété d’un matériau :
¾
la couleur diffuse par exemple
146
Technique de projection (1)
‹
Texture : tableau 2D de triplets RVB
‹
Associer à chaque sommet du polygone 3D ses
coordonnées dans l’espace texture :
¾
espace de texture normalisé : (u, v), u et v variant de 0 à 1
y
v
D
(0,1)
(1,1)
(0,0)
(1,0)
A
C
B
espace
x
espace texture
u 147
Technique de projection (2)
‹
Pour un pixel donné P :
¾
calculer ses coordonnées texture par interpolation bilinéaire des
coordonnées texture des sommets du polygone ABCD
y
v
D
(0,1)
(1,1)
(0,0)
(1,0)
A
P
C
B
espace
x
espace texture
u 148
Problèmes avec les textures
‹
Textures trop précises :
¾
‹
Textures pas assez précises :
¾
‹
il faut sous-échantillonner
il faut sur-échantillonner
Besoin de différentes résolutions :
¾
¾
stockage de différentes versions de textures
changement dynamique de la résolution en fonction des besoins
149
Placage de textures en VRML
‹
Textures d’images fixes ou animées
‹
Les textures colorées :
¾
‹
surchargent les couleurs d’un Material
Les textures en niveau de gris :
¾
se combinent avec les couleurs d’un Material
150
Textures d’images fixes en VRML
Shape {
appearance Appearance {
material Material { }
texture ImageTexture {
url "wood.jpg"
}
}
geometry . . .
}
151
Textures d’images animées en VRML
Shape {
appearance Appearance {
material Material { }
texture MovieTexture {
url "movie.mpg"
loop TRUE
speed 1.0
startTime 0.0
stopTime 0.0
}
}
geometry . . .
}
152
Transformations de textures en VRML
‹
Possibilité de choisir les points de correspondance des
textures :
¾
‹
choisir les points de coordonnées de texture à associer aux
sommets d’un polygone
Possibilité de transformer les repères des textures :
textureTransform TextureTransform {
translation 0.0 0.0
rotation 0.0
scale 1.0 1.0
}
153
5. Interaction
1. Introduction
2. Modélisation d’univers
3. Animation
4. Rendu
5. Interaction
¾
¾
¾
capter des entrées de l’utilisateur
les traduire en actions
fournir un retour à l’utilisateur
6. Conclusion
154
Capture des entrées de l’utilisateur
‹
Utilisation de périphériques physiques dédiés :
¾
¾
¾
clavier/souris classiques
joypads, joysticks
capteurs à 6 DDL :
• magnétiques, optiques, ultrasoniques
‹
Besoin de pilotes (drivers) logiciels :
¾
¾
doivent être compatibles avec le logiciel de rendu
peuvent y être intégrés
155
Interprétation des entrées
‹
Traduction en actions :
¾
¾
parfois/souvent 3D …
sélection d’objets (picking 2D ou 3D) :
• parcours du graphe de scène
¾
modification d’objets :
• actions sur des paramètres de certains objets de l’univers
‹
À exprimer en parallèle de l’étape de rendu :
¾
travail sur une structure de données commune
156
Retour à l’utilisateur
‹
Visualiser les effets des actions de l’utilisateur :
¾
‹
Prévus dans les environnements graphiques :
¾
‹
souvent le cas pour les curseurs souris
À fournir explicitement :
¾
¾
¾
¾
‹
pour l’aider à interagir
curseurs 3D associés à des périphériques particuliers
interacteurs logiciels évolués
intentions des utilisateurs
réactions des objets aux tentatives d’interaction
Ajouts d’objets 3D dans la scène…
157
Interactions en VRML
‹
Notion de « Sensors » :
¾
¾
‹
Seul périphérique géré directement :
¾
‹
pour capturer la présence ou les actions de l’utilisateur
orientations, positions, …
la souris … avec les échos appropriés
Possibilités supplémentaires :
¾
par programmation (Java …)
158
CylinderSensor en VRML
Transform {
children [
DEF VolantSensor CylinderSensor {}
DEF Volant Transform { … }
]
}
ROUTE VolantSensor.rotation_changed TO Volant.set_rotation
159
Exemples de retours visuels (1)
160
Exemples de retours visuels (2)
161
Exemples de retours visuels (3)
162
Exemples de retours visuels (4)
163
6. Conclusion
1. Introduction
2. Modélisation d’univers
3. Animation
4. Rendu
5. Interaction
6. Conclusion
¾
¾
¾
en résumé…
points non abordés
perspectives
164
En résumé…
‹
Quelques éléments de modélisation :
¾
¾
¾
‹
Quelques notions d’animation :
¾
‹
interpolation par images clés (keyframing)
Quelques notions de rendu :
¾
¾
¾
‹
primitives élémentaires
extrusion
facettes indexées
algorithmes d’élimination des parties cachées (Z-Buffer)
modèles d’éclairement
placage de textures
Quelques notions d’interaction…
165
Points non abordés
‹
Courbes et surfaces paramétrées :
¾
Bézier, Splines, NURBS, …
‹
Modélisation fractale
‹
Algorithmes de rendus réalistes :
¾
¾
‹
Mécanismes particuliers de rendu :
¾
‹
anticrénelage (antialiasing), calcul d’ombres portées, …
Modèles physiques d’éclairement :
¾
‹
éclairage indirect
lancé de rayons, radiosité, …
…
composantes spectrales et non pas RVB
166
Perspectives
‹
Apprendre un langage de modélisation et de
programmation 3D :
¾
‹
Se familiariser avec :
¾
¾
¾
‹
VRML (Virtual Reality Modelling Language)
ses modèles géométriques
ses transformations
ses animations
Découvrir en plus ses possibilités :
¾
d’interaction
167
Bibliographie
‹
J. Foley, A. van Dam, S. Feiner, J. Hugues, R. Phillips :
« Introduction à l ’infographie », Addison-Wesley France, 1995.
‹
D. Nadeau, J. Moreland, M. Heck : « Introduction to VRML 97 »,
cours SIGGRAPH 1998.
‹
K. Bouatouch, C. Bouville : « Synthèse d’image », polycopié IFSIC.
‹
S. Donikian : « Modélisation 3D », notes de cours, DESS MITIC,
IFSIC Rennes.
‹
E. Maisel : « Modélisation géométrique », notes de cours, IFSIC
Rennes.
‹
A. Nédélec : « Modélisation », notes de cours, module Réalité
Virtuelle, ENIB, Brest.
168
Téléchargement