Modélisation de ligne
Transcript of Modélisation de ligne
Synthèse d’images I
Modélisation de ligne
Outline
2
Lignes et courbes
1. Modèles mathématiques
a. Droites
b. Courbes paramétriques
c. Splines
2. Modèles informatique
a. Modélisation par segment
b. Bressenham
c. Antialiasing
Droites en 2D
3
Droites affines 2D
Coordonnées polaires d’une droite
En polaire 2 paramètres suffisent également
Mais équation plus générale, représente toutes les droites
ρ
θ
0 cbyax bxay ou
0)sin()cos(
0
yx
cbyax
Droites en 2D
4
Transformée de Hough
But : à partir d’un ensemble de pixels d’une image, retrouver la
droite qui les relie
En chaque point (x,y) passent une infinité de droite.
Mais elles vérifient toute l’équation :
Espace de Hough :
Matrice NxN de valeurs des paramètres ρ et θ
Discrétisation de l’espace de Hough
)sin()cos( yx
Droites en 2D
5
Transformée de Hough
Méthode :
Chaque pixel (x,y) créé une courbe dans l’espace de Hough.
Chaque case de la courbe s’incrémente de 1
La case ayant la plus grande valeur représente la droite qui représente le
mieux les pixels
)sin()cos( yx
Droites en 3D
6
Représentation cartésienne :
Une ligne en dimension 3 : intersection de 2 plans
Représentation paramétrique :
O u
P
P
0
0
2222
1111
dzcybxa
dzcybxaavec
z
y
x
P
Attention : il est souvent intéressant de choisir u unitaire
zz
yy
xx
utOz
utOy
utOx
z
y
x
O
O
O
O
z
y
x
u
u
u
u
et avec
Droites: exercices
7
Distance d d’un point à une droite D ?
O
u
P
On cherche la longueur bleue :
1. Calculer la projection de P sur D
2. Calculer PP’
3. Prendre sa norme
P’
uuOPOP ).(' Calcul de P’ :
D
Calcul de PP’ :
Calcul de d :
uuOPPOPuuOPOPPPP ).().(''
'PPd
Droites: exercices
8
Autres problèmes :
Distance entre deux droites D1 et D2 :
Intersection droite et plan
Point moyen de 2 droites, de 3 droites...
O1
u1 P2
P1
D1
u2 O
2
D2
Résolution du système linéaire :
0.
0.
221
121
uPP
uPP
avec
2222
1111
utOP
utOP
Courbes
9
Courbes
10
Comment représenter les courbes ?
A l’aide de fonction pour les trois coordonnées
Représentation paramétrique :
)(
)(
)(
),,(
tfz
tfy
tfx
zyxP
z
y
x
y = sin(x) x = r cos(θ)
y = y0 + r sin(θ)
z = r cos(θ/16)
Courbes
11
Comment représenter les courbes ?
A l’aide de conditions (3d) sur les coordonnées
Représentation cartésienne :
0),,(
0),,(),,(
2
1
zyxf
zyxfzyxP
y - sin(x) = 0
z = 0 ???
Courbes paramétriques
12
Exemple : trajectoire
Particule soumise à accélération a, munie d’une vitesse initiale
V0 et situé à l’origine.
V0
dtvdzga
accélération de la particule :
dtdPvztgv 0
vitesse de la particule :
position de la particule : 0
2
2vtztgOP
z
y
x
vtt
gz
vtyvtx
0
20
0
2
Courbes paramétriques
13
Tangente
Définie en tout point de paramètre t de la courbe par le vecteur
Repère de Fresnet :
Base orthonormale
directe
)(
)(
)(
)(
tdtdf
tdtdf
tdtdf
dttdM
v
z
y
x
vvT
N
Courbes paramétriques
14
Rayon de courbure :
courbure algébrique :
Calcul de :
Rayon de courbure :
)()( tNtdtdT car T est un vecteur unitaire
)(.)()( tNtdtdTt avec >0 positif
)(1)(t
t
Courbes libres
15
Courbes libres
16
Courbes définies par des points
Approximation Guidée par les points
Interpolations Passe par les points
Interpolation
Linéaire, parabole, Spline Catmull-rom…
Approximation
Bézier, B-spline, β-Spline…
Courbes : familles
17
Bézier
Spline
B-Spline
Natural cubique Spline
Catmul-rom Spline
nonperiodic B-spline
uniform B-spline
NURBS
Kochanek–Bartels spline
Approximation
Interpolation
Courbes de Bézier
18
Courbes de Bézier :
Courbes paramétriques épousant la forme d’une ligne brisée
joignant des points prédéfinis
Définie par des polynômes
Cas particulier avec 3 points :
b0
b
1
b2
b01
b11
b02
10
1
0 )1()( btbttb
21
1
1 )1()( btbttb
Les points de la courbe sont alors définis par :
)()()1()( 1
1
1
0
2
0 tbttbttb avec 1..0t
Courbes de Bézier
19
Algorithme de calcul de De Casteljau :
Soit m+1 points b0,b1, ... , bm et t Є [0..1]
)()()1()(],..0[],..1[1
1
1tbttbttbrmimr
r
i
r
i
r
i
iibtbmi )(],..0[
0
b0m(t) est le point de paramètre t sur la courbe de Bézier (de degré m)
b0m(t)
b0m-1(t) b1
m-1(t)
bm0(t) bm-1
0(t) bi+10(t) bi
0(t) b10(t) b0
0(t)
2m évaluations !
Courbes de Bézier
20
Définitions :
Point bi : point de contrôle ou de Bézier
Polygone formé des bi : polygone de contrôle ou de Bézier
Propriétés :
Invariant par transformation affine On a besoin que de transformer les points de contrôle
Invariant par transformation affine du paramètre de parcours t
Passe par les points b0 et bm et courbe tangente au polygone de contrôle en ces points
Enveloppe convexe
On peut rajouter des poids associés à chaque point de contrôle
Courbes de Bézier
21
Forme de Bernstein
Polynômes de Bernstein
Equation de récurrence :
Points de la courbe de
Bézier
imim
itt
i
mtB
)1()(
)()()1()(1
1
1tBttBttB
m
i
m
i
m
i
m
i
i
imim btti
mtb
0
)1()(
Courbes de Bézier
22
Exemple de courbe de degré 1
Exemple de courbe de degré 2
]1...0[)()()1()()(0
1
0
0
1
0 ttbttbttbtB
]1...0[)1()(10
tbtbttBsoit
]1...0[,)1(2)1()( 2
2
10
2 tbttbtbttB
Splines
23
Défaut des courbes de Bézier
M points polynômes de degré M-1
Si on modifie un point, toute la courbe est modifiée
Impossible de modifier des comportements locaux sans changer
l’ensemble de la courbe
Idée : relier des courbes entre groupes de points
Plusieurs possibilités
Approximation : B-splines …
Interpolation : Catmull-rom …
Splines
24
Définition :
Soit n+1 valeurs dans [a,b] avec :
on définit la fonction spline de degré m
par S : R R si :
C’est le cas général ...
bttttann
110...
),( baS1-mC
]1...0[,],[1
nittSii mP
Pm : ensemble des polynômes de degré m
Attention : spline d’ordre m = spline de degré m-1
Courbes splines
25
Définition
On a donc :
N+1 points et N+1 nœuds
N intervalles
Des polynômes de degré m sur chaque intervalle
Une courbe spline est définie par n+1 points de contrôle et n+1 fonctions de
pondération :
- Les fonctions de pondérations sont définies sur des intervalles [tk, tk+1].
T=(t0, t1,..., tn+1) est appelé vecteur de points nodaux.
- Les fonctions de pondération sont des splines d'ordre m (des polynômes par
morceaux continus d'ordre m-1 aux noeuds)
)()(00 tRPtRPP nn
B-Splines
26
B-Splines
27
Cas des B-Splines :
Les ti s’appellent des nœuds
On se donne donc
des polynômes à définition récursive de degré m
n+1 points de contrôles Pk
n intervalles [t0,t1] , [t1,t2] ... [tn-1,tn] et donc n+1 nœuds
Polynôme : fonction de pondération
B-Splines
28
Exemple des fonctions de pondération des B-Splines
Ordre 1
Degré 0
Ordre 2
Degré 1
Ordre 3
Degré 2
B-Splines
29
Quelques types de B-Spline
ti uniformément répartis : B-Spline uniforme
Dans certains cas, des ti consécutifs sont égaux
Les points associés sont identiques également
Appelés nœuds multiples
B-Spline non périodique
Nœuds placés au début et à la fin
B-Splines
30
Degré d’une B-Spline : degré commun de chaque courbe de
Bézier
Degré 1 : B-Spline linéaire C0 (m = 1) Chaque courbe de Bézier est une droite. La B-Spline est le polygone
formé des points de contrôle
C0 partout (continue)
Chaque début et fin de courbe de Bézier est relié à l’autre. Points de
jonction = points de contrôle
P0
P1
P2
P3
B-Splines
31
Degré 2 : B-Spline
quadratique C1 (m = 2)
Chaque courbe de Bézier
sera définie par :
L’intervalle [ ti ; ti+1 ]
2 points de Bézier interne b2i
et b2i+2
1 point de contrôle
b2i+1 = Pi+1
1211
112
11
12
iii
iii
ii
iii
btt
ttb
tt
ttb
avec b-1 = P0 et b2n+1 = Pn+2
B-Splines
32
Degré 3 : B-Spline cubique C2 (m = 3)
On se donne n+3 points de contrôle
On a 3n+1 points de jonction
Chaque courbe cubique sera définie par :
L’intervalle [ ti ; ti+1 ]
2 points interne b3i+1 et b3i+2
2 points de contrôle b3i = Pi et b3i+3 = Pi+1
3312
113
12
1223
3312
13
12
213
iii
iii
ii
iii
iii
iii
ii
iii
btt
ttb
tt
ttb
btt
ttb
tt
ttb
NURBS
33
NonUniform Rational B-Spline
On rajoute des poids aux nœuds (Rational)
L’équation devient :
]...[
)(
)(
)( 1
0
0
nmn
i
i
i
m
n
i
ii
i
m
ttt
wtb
Pwtb
tS
Interpolation Spline Famille des splines d’interpolation
La courbe passe explicitement par les points Exemple : B-Spline linéaire ok (ordre 2 / degré 1)
Soit n+1 nœuds ti on a S défini par
n intervalles avec des polynômes de degré m :
(m+1)*n inconnues
],[
],[
],[
)(
)(
)(
)(
1
21
10
1
1
0
nnn ttt
ttt
ttt
tS
tS
tS
tS
Natural cubic spline
35
On peut rajouter des conditions Interpolation : S(xi)= Pi n+1 conditions
Continuité : Si-1(xi) = Si(xi), i =1,...,n-1 n-1 conditions
Dérivable 2 fois : S'i-1(xi) = S'i(xi) & S''i-1(xi) = S''i(xi) 2*(n-1) conditions
Impose, au minimum, des polynômes de degrée 3
Cubic interpolation spline
Total : 4n – 2 conditions
pour 4n inconnues
Reste 2 choix
Natural cubic spline
36
Défini par
Calcul par résolution de système linéaire
0)(''
0)('' 0
nxS
xS
Spline cubique hermitienne
37
Autre stratégie :
Chaque polynôme est défini à partir de deux points p0, p1 et
deux tangentes m0 et m1
11,111,000,100,0 )()()()()( mthpthmthpthtp
23
1,1
23
1,0
23
0,1
23
0,0
)(
32)(
2)(
132)(
ttth
ttth
tttth
ttth
Catmull Rom Spline
38
Très utilisées en synthèse d’images
Catmull Rom Spline
39
Tangente m0 et m1 choisies telles que
Parallèle au segment [Pk-1 Pk+1]
Chaque tronçon dépend alors de 4 points
Mais aucune nécessité de stocker des tangentes
2
11 kk
k
ppm
Autre spline d’interpolation
40
D’autres choix possibles
Différence finie
Cardinal spline
Kochanek–Bartels spline
Avec 3 paramètres : tension, biais et continuité
Plan du cours
41
Lignes et courbes
1. Modèles mathématiques
a. Droites
b. Courbes paramétriques
c. Splines
2. Modèles informatique
a. Modélisation par segment
b. Bressenham
c. Antialiasing
Modélisation de courbe
42
On travaille sur une image
Espace discret de valeur
Comment représenter les courbes ?
Déformations
Un espace discret ne peut rendre compte d’un espace continu
Calcul de chaque pixel, pour chaque petit déplacement de la courbe ?
Modélisation par segment
43
Travailler pixel / pixel : trop cher
Discrétisation de la courbe
Travailler avec des segments
Segments :
Facile à dessiner sur une image
Souple, permet d’affiner uniformément, choix du nombre de segment ...
Exemple avec le cercle
Modélisation par segment
44
Algorithme :
fonction dessine(C courbe paramétrique,
réel tinit,
réel tfin,
entier nb_segment);
début
réel t;
réel pas = (tfin – tinit)/nb_segment;
for(t = tinit; t < tfin; t += pas) {
segment(C(t),C(t+pas));
}
fin
Bresenham
45
Un algorithme optimisé de tracé de droite
Créé en 1961 par Jack Bresenham
Algorithme rapide pour allumer les pixels d’un segment (x1,y1) –
(x2,y2)
Bresenham
46
Approche naïve :
Cas 0 < dy < dx
Pour chaque colonne
Calculer son ordonnée avec :
Prendre la valeur entière la plus proche de y
Défauts :
Calcul de la valeur entière
Calcul en nombres rationnels
1 pixel par colonne ?
)(1
12
121
xxxx
yyyy
Bresenham
47
Algorithme approche naïve :
fonction tracerSegment( entier x1, entier y
1, entier x
2, entier y
2)
entier x, y, dx, dy ;
réel err, decal, incr;
// Erreurs et increments
dy := y2 - y
1 ;
dx := x2 - x
1 ;
y := y1 ;
err := 0 ;
incr := dy / dx ;
decal := -1.0 ;
pour x variant de x1 jusqu’à x
2 par incrément de 1 faire
tracerPixel(x, y);
si (err := err + incr) ≥ 0,5 alors
y := y + 1 ;
err := err + decal ;
fin
fin
fin
Bresenham
48
Méthode Équation :
F(x,y) : distance, erreur entre droite et point (x,y)
Si on calcule F(x+1,y+0.5), on sait quel pixel allumer
De plus on a la nouvelle erreur pour la prochaine fois
0),( 11 xdyxdyydxydxyxF
dyxFyxF )1()5.0,2(
dxdyxFyxF )1()5.1,2(
Si on allume le pixel du bas
Si on allume le pixel du haut
Bresenham
49
Première erreur :
Optimisation :
Prendre que des valeurs entières
Pas de problème pour les incréments
Reste la valeur initial
On multiplie tout par 2
dydxyxF 2
)5.0,1(
Bresenham
50
Algorithme
fonction bresenham(entier x1, entier y
1, entier x
2, entier y
2)
entier x, y, dx, dy ;
entier err;
// Erreurs et increments
x = x1;
y = y1;
dy := y2 - y
1 ;
dx := x2 - x
1 ;
tracerPixel(x, y);
err := -dx ;
pour x variant de x1+1 jusqu’à x
2 par incrément de 1 faire
err += 2*dy;
si (err ≥ 0) alors
y := y + 1 ;
err -= 2*dx ;
fin si
tracerPixel(x, y);
fin pour
fin
Bresenham
51
Bien vu mais ...
Tout les calculs en valeur entière
Efficace mais maintenant tous les calculs se font en flottants sur les cartes
graphiques
Coût de la conversion
Problème pour gérer l’antialiasing...
Antialiasing
52
Anti-crénelage
Les droites discrètes sont peu esthétiques ...
Antialiasing
53
Antialiasing
54
Allumer les pixels
suivant leur distance au segment à tracer
On joue sur l’illumination
Algorithme
function drawLine(x1,y1,x2,y2) {
dx = x2 - x1; // On suppose x2 > x1
dy = y2 - y1; // On suppose y2 > y1
gradient = dy / dx;
// Gérer le premier point
xend = round(x1);
yend = y1 + gradient * (xend - x1);
xgap = (1 – partie_rationnelle(x1 + 0.5));
xpxl1 = xend; // premier point entier proche de xend
ypxl1 = partie_entiere(yend);
plot(xpxl1, ypxl1, (1 – partie_rationnelle(yend)) * xgap);
plot(xpxl1, ypxl1 + 1, partie_rationnelle(yend) * xgap);
next_y = yend + gradient; // Premier point d’intersection pour y
...
Antialiasing
55
function drawLine(x1,y1,x2,y2) {
...
// gerer le second point
xend = round(x2)
yend = y2 + gradient * (xend - x2)
xgap = fpart(x2 + 0.5)
xpxl2 = xend // this will be used in the main loop
ypxl2 = ipart(yend)
plot(xpxl2, ypxl2, rfpart(yend) * xgap)
plot(xpxl2, ypxl2 + 1, fpart(yend) * xgap)
// main loop
for x from xpxl1 + 1 to xpxl2 - 1 do
plot(x, ipart(intery), rfpart(intery))
plot(x, ipart(intery) + 1, fpart(intery))
intery = intery + gradient
done
}
Antialiasing
56
Synthèse d'images I
Modélisation de surfaces d’objets
Plan du cours
58
Surfaces
1. Modèles mathématiques
a. Objets géométrique simple
b. Surfaces implicites
2. Modèles informatiques
a. Soupe de triangles
b. Ensemble de points, surfels
c. Marching cubes
Cartésien / paramétrique ?
59
Différents type de coordonnées
Deux formes distinctes
Une représentation fondée sur une paramètrisation des
coordonnées
Une représentation fondée sur une contrainte liée aux
coordonnées
Deux façons de voir les courbes, les surfaces ...
Exemple : la sphère
)cos()sin()(sin)sin()(cos
rzryrx
0)()()(2222 Rzzyyxx
CCC
Différentes coordonnées
60
Coordonnées cartésiennes
Celles que l’on vient de voir
Utile très souvent mais ...
... pour se déplacer sur une sphère ?
On a défini aussi 2 autres types de coordonnées
Coordonnées cylindriques
Coordonnées sphériques
zyx
M coordonnées
cartésiennes
Coordonnées cylindriques
61
θ
r
M
P z
z
rM coordonnées
cylindriques
zz
ry
rx
)(sin
)(cos
Coordonnées sphériques
62
M
P
φ
θ
r
zyx
M coordonnées
cartésiennes
r
M coordonnées
sphériques
)cos()sin()(sin)sin()(cos
rzryrx
Objets géométriques
63
Plan :
Équation cartésienne :
Normale du plan :
Équations paramétriques : Soit O un point du plan, u et v deux vecteurs du plan non colinéaires
Normale :
0 dzcybxa
zzz
yyy
xxx
vtusOz
vtusOy
vtusOx
vun
Tcban ),,(
Objets géométriques
64
Sphère : Centre C et rayon R
Équation cartésienne
Normale en P : CP
Équations
paramétriques ?
0)()()(2222 Rzzyyxx
CCC
Objets géométriques
65
Cylindre : Axe (Oy), rayon R, hauteur h à partir de l’origine
hy
Rzx
0
0222
Équation cartésienne
Équations paramétriques ?
Objets géométriques
66
Cône : Axe (Oy), pointe en 0, angle α
)()(cot2222
zxy
)sin(
)cot(
)cos(
z
y
x
Équation cartésienne
Équations paramétriques
Objets géométriques
67
Ellipsoïdes : Sorte de triple ellipse, un axe pour chaque
direction Grand axe a, axe moyen b, petit axe c
Équation cartésienne :
Équations
paramétriques :
12
2
2
2
2
2
cz
b
y
ax
)sin(
)sin()cos(
)cos()cos(
cz
by
ax
Surfaces implicites
68
Définir une surface comme un potentiel
Se munir d’une fonction de potentiel
La surface S représente tous les points ayant un potentiel précis :
f peut être une fonction analytique
Le plus souvent est défini à partir de squelette
On fixe un squelette (point, ligne ou forme)
Le potentiel « irradie » à partir de ce squelette
0),,( zyxf
isozyxfzyxPSiso
),,(),,(
Surfaces implicites
69
Fonction de potentiel par squelette
Soit n formes de base
fi est la fonction de potentiel relative à la ième forme
La fonction de potentiel est :
Choix des fi
n
ii
zyxfzyxf1
),,(),,(
Surfaces implicites
70
Quelques exemples :
Plan du cours
71
Surfaces
1. Modèles mathématiques
a. Objets géométrique simple
b. Surfaces implicites
2. Modèles informatiques
a. Soupe de triangles, de polygones
b. Ensemble de points, surfels
c. Marching cubes
Modèles de surfaces
72
6 grandes familles
B-Rep
Modélisation par point
Marching cubes
CSG
Modèles paramétriques
L systèmes / Fractales
Prochaine partie
B-Rep
73
Philosophie : B-rep
Pour Boundary Representation
Modélisation des objets par leur limite, leur bord
B-rep
Géométrie + Topologie (souvent absente)
Origine :
Logiciel de CAO / CAD
Maillages très fournis, très complexe
Exemple : Airbus, Voiture…
Logiciel de création : 3DSMax, Maya …
B-Rep : Soupe de polygones
74
Objets complexe représentés par un ensemble de polygones
(triangles) reliés
Exemple : Cube = 12 triangles
Autres exemples :
B-Rep : Maillages
75
Maillage = soupe de polygones + adjacence
Ensemble connecté de polygone (triangles)
Incorpore la topologie : modèle riche !
Affichage facile en OpenGL Mais mauvais choix pour les surfaces courbes...
D’autres calculs possibles Courbure, normales, paramétrisation
Simplification, raffinement
Édition difficile
Modèles disponibles ?
Souvent entre la soupe de polygone et le maillage
B-Rep : Maillages
76
Sommet (Vertex / Vertices) : position (et autres données)
Arête (Edge) : connexion entre 2 sommets
Face (Face) : Ensemble fini et fermé d’arête (cycle)
- Triangle : Face à 3 arêtes
- Quads : Face à 4 arêtes
Polygone (Polygon) : Ensemble de faces
Surface : regroupe des faces (polygones) représentant surface
courbe
Note : Dans les représentations supportant des faces à nombre arbitraire
d’arêtes, faces et polygones sont identiques
B-Rep : Maillages
77
Plusieurs représentation
Vertex-Vertex Meshes
Face-Vertex Meshes
Winged-Edge Meshes
Render Dynamic Meshes
Différentes façons de définir /coder la topologie
B-Rep : Maillages
78
✔ Compact
✘Extraction
d’information
difficile
✘ Pas de
représentation
directe de la
surface
B-Rep : Maillages
79
✔ Sommets
et face en accès
direct
✔ Utilisation
par les pipeline
graphique
✘ Accès difficile
aux arêtes
✘ Accès difficile
aux faces
voisines
d’une face
B-Rep : Maillages
80
✔ Topologie explicite
✔ Utilisation par les
logiciels de modélisation
✔ Split et merge rapides
✘ Taille mémoire
importante
✘ Complexité à maintenir
B-Rep : Maillages
81
✔ Utilisation par
pipeline
graphique
✔ Topologie
explicite
✔ Accès directs
✘ Taille mémoire
importante
✘ Complexité à
maintenir
B-Rep : Maillages
82
Maillages
83
Subdivision de surface :
Créer des maillages plus lisse
Loop, Catmull-Clark, Modified butterfly, Kobbelt
Attention au respect des arêtes vives
Maillages
84
Simplification de maillage
Minimiser le nombre de triangles
Plusieurs critères importants
Conservation de la topologie
Continuité entre maillages
Orientation budget ou erreur
Propriétés sur sommets
Algorithme de subdivision
85
Algorithme de Catmull-clark
Sur maillage quelconque
Produit un maillage de quadrilatère
Schéma d'approximation
Peut gérer les bords
Algorithme de Loop
Sur maillage triangulaire
Schéma d'approximation
Simple d'utilisation
Gère les bords, les arêtes vives
Catmull-clark (78)
86
n
ivn
f1
1
FACE
4
2121 ffvve
ARETE
SOMMET
j
jj
jii fn
vn
vn
nv 221112
Loop (87)
87
8
3
8
1
8
3
8
1
n
n
n1
n
n
n
n
n
n
n
n
n
n
2
2cos2340
64
1
nn
Loop: Gestion des bords
88
8
1
2
1
2
1
8
18
6
Loi d’arête Loi de sommet
Masque spécifique
Algorithme de simplification
89
Algorithme statique (précalculs)
Décimation de sommet : decimation
Conserve topologie et propriété de sommet
Long
Regroupement de sommet : vertex clustering
Simple et rapide
Moche, ne conserve pas la topologie
Surface enveloppante : simplification envelopes
Maîtrise de l'erreur, de la distorsion
Très long et peu robuste
Problème de popping !
Algorithme de simplification
90
Algorithme dynamique (maillages continus) Simplification avec préservation de l'apparence
Maillage + normal maps + texture / peu de réduction
Maillages progressifs (progressive meshes) de Hoppe
Le plus rapide (TR) / peu de réduction
Modélisation par points
91
Des points ?
Objets de plus en plus complexe
Triangles de plus en plus petits
Si le modèle est vu de loin, ils se projettent sur 0,1 voire 2 pixels
Beaucoup de travail inutile : interpolation (couleurs, normales,
textures) et rasterisation.
Maillage inefficace
Idée : représentation par points de la surface
Rendu plus efficace, possibilité de rendu de beaucoup de points
Rajout de propriétés (couleur, texture) aux points
Modélisation par points
92
Origine
Acquisition scanner
Génération automatique de géométrie (L-system)
Exemples
Modélisation par points
93
Qsplat :
Les points sont projetés sur l’écran
Contribuent à plusieurs pixels
Suivant leur éloignement
Filtre gaussien, masque pour chaque point
Rendu
Point OpenGL (un carré)
Cercle (un Quad avec une texture)
Un point flou (un bilboard avec une texture gaussiène)
QSplat
94
Résultats :
A.
Points
(qsplat)
B.
Polygones
même nombre
de polygones qu’en A.
même temps
C.
Polygones
même nombre
de sommets qu’en A.
temps x2
Modélisation par points
95
Surfel : surface element
Construits directement à partir d’une surface
+ d’informations par rapport aux Qsplat
Textures
Profondeur, position
Normales
Ces informations permettent de projeter le point
Coordonnées de texture et les normales
Plus long que les QSplat
Modélisation par points
96
Intérêts
Pas de conservation de la topologie. Données libres
Possibilité de rendu efficace de modèles complexes
Défauts
Problème lors d’un zoom trop important
Difficulté de remplir les trous Coûte cher
Encore peu temps réel Sauf si on rend un modèle précis
Applicable néanmoins en hiérarchie de points...
QSplat et GPU...
97
Gaël Guennebaud, Loïc
Barthe and Mathias Paulin,
Deferred Splatting
Eurographics 2004,
Grenoble, France
Marching cubes
98
Origine :
Modélisation de surfaces implicites
Données volumiques
Surface définie par
Point (x,y,z) a l’intérieur ou à l’extérieur
Données d’entrées
Ensemble d’échantillons ponctuels organisés en cubes
Voxels avec 8 sommets
Marching cubes
99
Principe de base :
Détermination des éléments internes
Calcul des bords
Construction du contour
Marching cubes
100
Sélection des cubes qui intersectent l'iso-surface
Au moins un sommet dedans, au moins un sommet dehors
Classification des cubes :
8 sommets, 2 états (dedans, dehors)
= 256 possibilités
Symétrie des 2 états : 128 possibilités
Symétries par rotation : 15 possibilités
Pour chaque possibilité, une seule triangulation possible
De 1 à 4 triangles par cube
Marching cubes
101
Les 15 combinaisons :
Marching cubes:
Calcul des normales
102
Les normales sont calculées indépendamment
Lisser la surface obtenue
Une normale par triangle
Calcul :
Gradient de la fonction : normal à l'iso-surface
Calcul du gradient aux sommets du cube
Normalisation : normale aux sommets du cube
Interpolation linéaire : normales aux sommets des triangles
Interpolation linéaire : normales sur les triangles
Marching cubes
103
Gradient au sommets
Estimation par différences centrales :
ykjiDkjiD
kjiG
xkjiDkjiD
kjiG
zkjiDkjiD
kjiG
y
x
z
),1,(),1,(),,(
),,1(),,1(),,(
)1,,()1,,(),,(
Marching cubes: example
104
Marching cubes
105
Beaucoup de polygones :
Même ordre de grandeur que le nombre de voxels
Stockage, affichage… Parfois plus cher de stocker les polygones que de stocker le volume !
Gros problèmes liés à la précision
Sous-échantillonnage
Artefacts
Synthèse d'images I
Modélisation d’objets complexes
Outline
107
Objets complexes, humains
1. Modèles procéduraux
2. CSG
3. Skinning
4. Volumes
Objets complexes
108
On a déjà vu des surfaces complexes :
Modélisation par points
Certaines soupes de polygones
Leur construction est :
Soit fait par acquisition directe : Laser…
Soit utilise des techniques spécifiques : Solide de révolution
Extrusion
Modèles procéduraux
109
Primitives géométriques créées par une procédure
Croissance progressive de la forme
Utile pour des objets structurés
Ex : plante, paysage, villes ...
Plusieurs approches :
Fractales
L-systems
Système de particules
Fractales
110
Très mathématique !
autosimilarité
3 catégories
Fonctions itérées
Relation de récurrence
des points
Fractales stochastiques
Mandelbrot
L-systems
111
Grammaire décrivant la croissance
Systèmes de particules
112
Peuvent être utilisés pour décrire des surfaces
Enveloppe d’un feu
Surface d’un tas de sable ...
Problème de connexion entre les particules
Pour avoir des surfaces correctes
Modèles procéduraux
113
Création d’objets complexes
Difficile à créer à la main
Souvent pour des « objets » naturels
Problème de l’inversion
Non connaissance des effets des paramètres
Rendu
Contraigne à des algorithmes spécifiques
Animation
Grammaire temporelle
Système de particules
Plan du cours
114
Objets complexes, humains
1. Modèles procéduraux
2. CSG
3. Skinning
4. Volumes
CSG
115
CSG : Constructive Solid Geometry
Processus de construction d’objets complexes
A partir de forme de base 3D « simple » (analytiques)
Cubes, Sphère, Cylindre ...
Utilisant des opérations ensemblistes
Unions, Intersections, Différences
1982
CSG
116
Exemple de construction
CSG
117
Représentation par
Une grammaire
Un arbre
Rendu par
Ray tracing
OpenGL ?
Très intuitif pour modéliser
Utilisé dans le builder de Unreal
Limité
Dépend du choix des primitives de base
Applicable à des modélisation par points
exp := prim | transf prim | op exp exp
prim := cube | sphere | cone | …
transf := translation | homothétie |
rotation
op := union | intersection | difference
Plan du cours
118
Objets complexes, humains
1. Modèles procéduraux
2. CSG
3. Skinning
4. Volumes
Skinning
119
Et pour les humains ?
Représentation à base de squelette articulé
Michel Roger
http://mr2k.3dvf.net/
Skinning
120
Skinning: les maths
121
Modèle 3D plus squelette
Chaque sommet attaché à un ou plusieurs os
Somme des poids = 1
Pose « au repos »
Modèle non déformé
Pose « animée »
Position squelette donnée
trouver position des sommets
Comment ça marche (1)
122
Sommet v, attaché à l’os J1. Au repos :
J1
J0
y
x
v
© J. Gregory, 2003
Comment ça marche (2)
123
Nouvelle position du squelette
Trouver nouvelle position du sommet v : v’
y
x
v'
v
© J. Gregory, 2003
Comment ça marche (3)
124
On a v en coordonnées « absolue »
Espace du modèle
On transforme le sommet v :
De l’espace du modèle (espace global)
Dans l’espace lié à l’os
Le sommet est fixe par rapport à l’os
Donc on peut bouger le squelette
Re-transformation dans l’espace du modèle
Donne nouvelles coordonnées du sommet : v’
Comment ça marche (4)
125
Sommet, dans l’espace lié à l’os :
J1
J0
y
x
v
© J. Gregory, 2003
Comment ça marche (5)
126
Sommet toujours dans la même position, quelle que soit la
position du squelette
y
x
v'
v
© J. Gregory, 2003
Comment ça marche (6)
127
Retour à l’espace du modèle, position du sommet
y
x
v'
v
© J. Gregory, 2003
Avec des maths
128
Xi position de la base de l’os i (translation)
X0
y
x
X1
v
© J. Gregory, 2003
Avec des maths (2)
129
Qi rotation de l’os i
Q0
y
x
Q1
v
© J. Gregory, 2003
Avec des maths (3)
130
Position à l’équilibre de l’os Ji
Produit matriciel des translations et rotations depuis la racine :
j
i
iij
0
QXB
Avec des maths (4)
131
On déplace le squelette (animation) :
J1
J0
y
x
v'
© J. Gregory, 2003
Avec des maths (5)
132
Ti la translation pour l’os i, Ri sa rotation :
T0
y
x
T1
R0
R1
v'
© J. Gregory, 2003
Avec des maths (6)
133
Pose actuelle décrite par matrice :
similaire à la matrice de la pose au repos :
j
i
iij
0
RTP
j
i
iij
0
QXB
Avec des maths (7)
134
Multiplication de v par Bj-1 pour se ramener dans l’espace lié
à l’os (au repos)
Peut être fait une fois pour toutes
Puis multiplication du résultat par Pj pour se ramener dans
l’espace du modèle, dans la pose actuelle
Avec des maths (8)
135
Ce qui nous donne :
vBBPPv
vBPv
vBPv
1
0
1
110
1
1
ij
jj
Avec des maths (9)
136
Calculs effectués pour chaque sommet du modèle
Tracé des sommets obtenus
Interpolation des positions pour les sommets qui dépendent
de plusieurs os
Chaque sommet partagé par plusieurs os possède un poids pour
chaque os
Skinning: multiple bones
137
Skinning
138
Un objet autour de chaque « os » :
© 1998, Darwin 3D
Attention
au trou
Skinning
139
Sommets intermédiaires
© 1998, Darwin 3D
• 50/50 pour chaque os
• Pincement visible
Skinning
140
Sommets intermédiaires
© 1998, Darwin 3D
Poids :
33/66, 50/50 et
66/33
Avec des maths (10)
141
Interpolation pour les sommets qui dépendent de plusieurs
os :
kkjj
jii
j
iik
j
ii
j
iij
ww '''
'
'
01
0
0
1
0
vvv
vBPv
vBPv
Plan du cours
142
Objets complexes, humains
1. Modèles procéduraux
2. CSG
3. Skinning
4. Volumes
Modélisation des volumes
143
Problème difficile
Passer de la 2D à la 3D demande :
Plus de mémoire :
Exemple : un plan discrétisé en 10*10 fait 200 triangles, un espace
discrétisé en 10*10*10 fait 1000 cubes soit 12 000 triangles
Plus de temps de calcul
Origine :
Calcul scientifique
Gaz et fluides
Modélisation des volumes
144
Trois schémas de modélisation :
Par système de particules
Adapté pour le feu, la fumée, la pluie, la neige ...
Par fonction implicite
Pour modéliser des zones homogènes
Couche de brume ...
Par projection dans une base de fonction
Adapté pour des milieux recouvrant l’ensemble de la scène
Modélisation des volumes
145
Modélisation par nature d’élément
Brouillard :
Homogène ou hétérogène
Calcul direct par la carte graphique
Calcul indirect par la carte graphique
Modélisation des volumes
146
Feux et fumées
A coder : densité du milieu dans l’air
Très souvent modélisé par des systèmes de particules
Bon rendu et avantage de la rapidité
On peut faire l’équivalent de fonctions implicites (3D)
Synthèse d'images I
Modélisation de scènes
Plan du cours
148
Scènes
1. Les objets et leur positionnement
2. Graphes de scènes
3. Structure de données de représentation de scènes
Objets canoniques
149
Construction d’une scène complexe :
Tout est lié à un référentiel unique
Pour conserver les positions relatives des éléments entre eux
Pour conserver les tailles des éléments entre eux
Mais tout construire depuis ce référentiel unique est pénible
Stratégie :
construire un objet dans un repère local propre à lui
le déplacer et l’orienter dans le référentiel général
Objets canoniques
150
Construction d’un objet
Constitué d’objets canoniques Brique de base. Pas forcément des primitives géométrique type triangle,
cube, sphère. Peut être plus complexe
Ne doivent pas être constitués d’éléments en déplacement les uns par rapport aux autres
Muni de repères propres
Positionnement
Déplacer et orienter les repères propres par rapport : A d’autres repères propres
Au référentiel global
Objets canoniques
151
Exemple de construction : le bras articulé
Positionnement
152
Positionner les repères propres :
: rotation du bras par rapport à la tige
: rotation de l’arbre par rapport au bras
Pour bien comprendre
153
X0 : translation = Matrice de
passage du repère R1 au repère R0
X0
y
x
X1
v
y
x
Q1
v
R0
R1
R1
R3
R2 R3
R4
R2
Q0
X1 : translation = Matrice de
passage du repère R3 au repère R2
Q0 : rotation = Matrice de passage
du repère R2 au repère R1
Q1 : rotation = Matrice de passage
du repère R4 au repère R3
j
i
iij
0
QXB
11001QXQXB
4043322110 RRRRRRRRRR MMMMM
Pour bien comprendre
154
v a 2 ensembles de coordonnées :
• celles du repère propres liées à J1
• celles du référentiel initial
y
x
v
J1 J
0
4Rproprevv
0Rrefvv
4400 RRRR vMv
40 1100 RRvQXQXv
Q1
Q0
X1
X0
Plan du cours
155
Scènes
1. Les objets et leur positionnement
2. Représentation de scène
3. Structure de données de représentation de scènes
Graphes de scènes
156
Idée : organiser les objets en hiérarchie
Qui est « contenu » dans quoi ?
A quel repère un objet est-il lié?
Arborescence ... graphe
Modèle hiérarchique
157
Modèle divisé en morceaux
Relations entre les morceaux
Paramètres pour :
Forme des morceaux (écrasement)
Position des morceaux (inclinaison)
Hiérarchie du modèle : exemple
Base se déplace : tout suit
Torse se déplace : boutons et tête suivent
Tête se déplace : yeux et nez suivent
Hiérarchie de nœuds
158
Chaque nœud :
Transformation en coordonnées locales
Modèle simple en coordonnées locales
Dessin des enfants (qui héritent des coordonnées locales)
Après le nœud :
Retour aux coordonnées locales précédentes
Couleur, matériau, style, etc. ?
Pas fixé
Bonhomme de neige
159
Base
Torse
Bouton3 Bouton1 Bouton2 Tête
Œil2 Œil1 Nez
Graphes de scènes
160
Différents types de noeuds :
Maillages, objets ...
Matériaux, Apparences
Nœuds de transformation
Noeuds caméras
Nœuds de groupes
Notamment des nœuds switch permettant de choisir un objet ou un autre par
rapport à une variable
Nœuds LOD
Géométrie choisie par rapport à la distance à l’observateur
Nœuds action, événement
Déclenchent des comportements, font l’animation...
Graphes de scènes
161
Intérêts :
Culling (automatique)
Hiérarchie Imposé par le culling
Pour la dynamique des objets
Collision Bounding box sur chaque nœud
Optimisation de rendu En fixant des états (matériaux,
texture) sur chaque nœud
Factorisation Des nœuds « maillages » peuvent
être commun
Graphes de scènes
162
Existe (notamment)
OpenSceneGraph
Le plus complet ... très bon rapport qualité/prix !
X3D
Successeur du VRML
Java 3D
3DVIA
…
Plan du cours
163
Scènes
1. Les objets et leur positionnement
2. Représentation de scène
3. Structure de données de représentation de scènes
Structures de données
164
Utilisation de structure de données (scène) accélératrice :
Grille uniforme
BSP Tree
KDTree
Octree
Hiérarchie de volume englobant
Autres variantes (Hierarchie de grille uniforme…)
Grille uniforme
165
Ensemble de la scène subdivisée uniformément sur chaque
axe
Similaire à de la voxelisation d’objet
Algorithme de traversée rapide (Amanatides & Woo )
BSP Tree
166
Partition binaire de l’espace
Par des plans quelconques
Chaque sous espace est
ensuite subdivisé
Structure d’arbre binaire
Kd-tree
167
Partition binaire de l’espace
Mais axis oriented, dans un ordre prédéfini
Octree / Quadtree
168
Souvent quadtree
Partition de l'espace en quatre /
huit suivant
Quadtree : les coordonnées x,y
relative au sol
Octree : les coordonnées x,y,z
Réparti les données
Plus il y a de données dans un
endroit, plus la décomposition est
forte
BVH
169
BVH : Bounding Volume Hierarchy
Bounding volume ?
Différents types
Spherical
Axis aligned
Axis oriented
Visul Hull…
BVH
170
On regroupe les bounding box en hiérarchie d’arbre binaire
(ou n-aire)
Autres représentations
171
Portals
Les scènes complexes sont organisées en différentes sections
Chaque section est séparée de la suivante par une zone de
transfert
D'une section, on ne voit pas l'autre section
Par un jeu de visibilité
Autre section trop loin
Autre section cachée par des éléments de décors
Permet le chargement de quelques sections
Chacune peut avoir une représentation de scène à l'aide des structures
vues précédemment
Synthèse d'images I
Modélisation lumière et Matière
Plan du cours
173
Lumière et matière
1. Les énergies de la lumière
2. Les yeux : la photométrie
3. Les matériaux
La lumière
174
Lumière :
Une onde électromagnétique Phénomène ondulatoire, diffraction
Porté par des photons Phénomène particulaire
A une longueur d’onde
En synthèse d’images
Peu de travail sur l’aspect ondulatoire
Focus sur comportement du photon Les photons ont une longueur d’onde
La lumière
175
Grandeurs physiques
Flux énergétique e
Valeur instantanée d’un débit de rayonnement
Puissance (en Watt)
Intensité énergétique Ie
Puissance émise par unité d’angle solide (W/sr)
Angle solide ? d
dI e
e
rS
unité : stéradian (sr)
La lumière
176
Éclairement énergétique Ee
Quantité de flux reçu par unité de surface (W/m²)
Une valeur analogue, appelé radiosité ou exitance, indique la quantité de
flux émis par unité de surface
Luminance Le
flux d’énergie quittant une surface dans une direction donnée
dS
dE e
e
)cos(
2
dSd
dL e
e
angle solide
projeté
Plan du cours
177
Lumière et matière
1. Les énergies de la lumière
2. Les yeux : la photométrie
3. Les matériaux
Le système visuel humain
178
Iris + corné + cristallin
Appareil optique
Rétine :
C'est la pellicule !
Cônes
Sensibilité différente suivant les longueur
d’onde : pour les couleurs
Peu sensible à l’intensité lumineuse
Bâtonnets :
Sensible à l'intensité lumineuse
Étude de la sensibilité de l’œil :
Domaine de la photométrie !
Photométrie
179
Vision de nuit : domaine
scotopique
Bâtonnets principalement sollicités
Vision de jour : domaine
photopique
Cônes principalement sollicités
Étude de la réponse de l’œil
Fonction d’efficacité spectrale
Grandeurs photométriques
180
Radiométrie Photométrie
Flux e Watt(W) v
Lumen (lm)
Intensité Ie W/sr Iv
Candela
(cd = lm/sr)
Éclairement Ee W/m² Ev
Lux
(lx = lm/m²)
Luminance Le W/m² sr Lv cd/m²
Conversion :
vD,ev
dVXKX
domaine de sensibilité de l'oeil constante = 683 lm/W
grandeur radiométrique spectrale
Colorimétrie
181
Espace des couleurs CIE XYZ
Toute couleur : combinaison linéaire de 3 couleurs
monochromatiques
Ce sont les couleurs primaires
Décomposition de toute couleur C()
dzCZ
dyCY
dxCX
)(
)(
)(
Colorimétrie
182
Espace Lxy
Dissocier la teinte de la luminosité :
D'autres espaces
Luv
Lab
ZYXYy
ZYXXx
YL
Colorimétrie
183
Espace dépendant du matériel
Passage des couleurs RGB à XYZ par une matrice
Matrice donnée par le fabriquant
Autre jeux de couleur
CMYK
Plan du cours
184
Lumière et matière
1. Les énergies de la lumière
2. Les yeux : la photométrie
3. Les matériaux
Matériaux
185
3 comportements des matériaux
Absorption
Très peu utilisée en synthèse d’images
Émission
Peu de dépendance à la température
Réflexion
Capacité de la matière de réfléchir, d’une direction donnée vers une autre
direction donnée, une partie de la lumière reçue
),,( uTa
),,( uT
''cos)',,(
),,()',,,(
dudSL
udSLuudS
e
ebd
Matériaux
186
La réflexion Lambertienne
La réflexion ne dépend pas de l’angle d’incidence, ni de l’angle
de réflexion
Matériaux isotrope
Réflexion Lambertienne ou réflexion diffuse
dbd uu )',(
Matériaux
187
Réflexion spéculaire pure
Propre aux surfaces très réfléchissantes
Induit une réflexion de lumière symétrique par rapport à la
normale de la surface
Seule une proportion est réfléchie indiquée par le coefficient de
réflexion spéculaire
N I R Calculez R !
),( dSs
Matériaux : FDRB
188
FDRB (BRDF) :
Fonction de répartition spatiale de
l’énergie reçue en fonction de son
angle d’incidence
Indique une proportion
(entre 0 et 1)
Obéi aux lois de réciprocité
d’Helmholtz
L’intégrale doit être égale à 1-
absorption
),,,()',( rriibdbd uu
Matériaux : FDRB
189
Matériaux : FDTB
190
FDTB (BTDF) :
Même chose mais pour la
transmission
C’est l’hémisphère « sous » la
surface concerné
A l’opposé de la normale
Transmission pure :
Obéi aux lois de Descartes
)sin()sin( 2211 nn
Matériaux : textures
191
Certains détails complexes à représenter géométriquement
et radiométriquement
Fissures
Salissure
Détails de revêtement
Utilisation d’une image « plaquée » sur la surface
Représente la couleur
Peut représenter aussi des déformations géométriques
Matériaux : textures
192
Principe
Chaque sommet est associé à une position dans l’image
Ce sont les coordonnées de texture (2D)
La partie de l’image correspondant aux sommets est appliquée
sur la surface
Matériaux : textures
193
Application des textures
Peuvent se combiner avec la couleur déterminée par
l’éclairement
Peuvent se combiner entre elles
La plupart du temps : réutilisation ...
Quake
Id Software
Matériaux : textures
194
Autres types de texture :
Bump mapping : rajouter de la granularité
Réalisé avec une texture
On souhaite conserver une surface simple
+ =>
Matériaux : textures
195
Bump Mapping : algorithme initial
A l'aide de la carte de bump
En chaque point, perturber la normale suivant la "hauteur" du point et de
ses voisins sur la carte de bump
Équation de perturbation de la normale :
Avant : Fonctionnalité dépendante de la carte
Maintenant : Utilisable directement via un "pixel shader"
F : bump map
P : surface
N : normale
Matériaux : textures
196
Exemple de bump mapping
Documentation technique Matrox
http://www.matrox.com/mga/francais/products/tech_info/ Marek Mizanin : http://www.zanir.szm.sk
Matériaux : textures
197
Cartes de normales (normal maps)
Similaire au bump mapping ... en plus simple
La texture code directement la variation de la normale en
chaque point : offset vector D
DNN '
Matériaux : textures
198
Displacement mapping
A priori peu utilisées encore
Permet de « décaler » la géométrie par texture
Création de nouveaux points
Devient envisageable grâce aux geometry shader, tesselation shaders