TEXTURES
M. NEVEU
à partir notamment du cours Siggraph 97 et
TEXTURES
Gain de réalisme Pas « cher »
Attacher la texture à l’objet travailler dans l’espace de l’objet
Textures 2D et 3D
Analogies : papier peint (2D) , sculpture (3D)
PRINCIPE
PRINCIPE
S-1
A
Application A
Projection selon un axe
Projection cylindrique
Projection sphérique
Projection par Développement
Projection par Développement
Application triviale de texture sur un objet paramétrique. (a) et (c) sans
transformations, (b) et (d) avec la transformation l = 2.h et θ = π/4 (qui implique h
= V2/3).
Plus généralement : Application A
(a) La texture déformée (b) Application sur la sphère.
Déformation de la texture pour l’adapter à la paramétrisation de la surface.
On utilise une texture déformée (respectant le facteur d’échelle 2 :1)
Application A : déformation
u v
u= mod(u',1/n ) : v=mod(v',1/n ) ε
u u
u
v v
mod(u',1/n ) si u.n estpair 1-mod(u',1/n ) sinon
: mod(v',1/n ) si v.n estpair
uv
ε
=
=
Application A : répétition avec ε
Utilisation d’une texture naturelle. (a) Texture de bois. (b) Sphère en bois vue sous son meilleur jour. (c) Pendant ce temps là, de l’autre côté de la sphère : discontinuité sur la frontière de recollement. (d) Paramétrisation multiple.
Textures cycliques
Vecteur réfléchi (environnement mapping)
Vecteur normal à la surface (exagère les déformations)
Vecteur normal à la surface intermédiaire (atténue les
Surfaces complexes :
application intermédiaire
Composition application intermédiaire - projection
Si P = (1 - α - β).P0 + α.P1 + β.P2 alors Q = (1 - α - β).Q0 + α.Q1 + β.Q2
Cas des facettes
on associe à chaque sommet (P0, P1, P2) d’une facette des coordonnées (Q0,Q1,Q2) dans l’espace des textures
Cas des facettes
Si on utilise une interpolation similaire à l’ombrage de Gouraud :
ie si P dans l’espace de l’écran est défini par : P’ = (1 – α’ – β’).P’0 + α’.P’1+ β’.P’2 Et qu’on calcule Q = (1 – α’ – β’).Q0 + α’.Q1 + β’.Q2 alors erreur projective
0 1 2
0 1 2
0 1 2
(1 )
: (1 ) / / /
Q Q Q
w w w
il faut Q
w w w
α β α β
α β α β
− − + +
= − − + +
Problèmes d’échelle
At<Ap At≈Ap At>Ap
Ecran Objet Texture
Facteur de compression d
Pij : pixel
Puv : polygone correspondant dans l’espace texture
(
uv) d = Α P
Ex :
d = 1 : le pixel couvre tt l’espace texture d = ¼ : le pixel couvre ¼ de l’espace texture
Taille image = 2N x 2N => aire d’un pixel = 2-N x 2-N
Pixellisation
(uc,vc) : image du centre de Pij
Dans l’image Tij, (n.uc,n.vc) est dans [i’,i’+1]x[j’,j’+1] avec i’=n.uc et j’=n.vc
Interpolation
bilinéaire Interpolation
bicubique
Pixellisation
Sous échantillonnage (aliasing) Mip-Mapping : texture à plusieurs échelles
1
, 2 ,2 2 1,2 2 ,2 1 2 1,2 1
1 ( )
4
k k k k k
i j i j i j i j i j
T
−= T + T
++ T
++ T
+ +On suppose l’image de la texture carrée et de taille 2N × 2N.
Changement de résolution le plus simple : construire une image deux fois plus petite.
A chaque pixel de l’image deux fois plus petite, on associe un bloc de 2×2 pixels sur l’image originale de valeur = moyenne des 4 pixels du bloc.
, k
T
i jLa taille de l’image est 2k × 2k.
A partir de l’image T N on construit un ensemble de N + 1 images T k , k de 0 à N Facteur de compression au niveau k : dk = 2-k
Ensemble des images calculées pour le mip- mapping.
Stockage optimal du mipmap d’une texture
Mip-Mapping
Mip mapping : couleur d’un pixel
Pixel courant (uc,vc,d) kc = -log2(d)
[ ] ( )
' ' '
( , )c c i j', 'k ' c ,( ', ') c.2k , c.2k C u v =T k = k i j = u v
Voisin le plus proche
Interpolation bilinéaire
[ ] ( )
[ ]
'
' '
', ' ', ' 1
' ' '
' 1, ' ' 1, ' 1
( , ) ( ', ') ' ,( ', ') ,
( , ) 1 1
c c k c c c c c
k k
i j i j
k k k
i j i j
C u v C u v k k u v u u v v
T T v
C u v u u
T T v
+
+ + +
= = = − −
−
= −
Interpolation trilinéaire ( , ) (1 ) '( ', ') ' 1( ', ')
(1 ) ' ( ' 1)
c c k k
c
C u v C u v C u v
k k k
λ λ
λ λ
= − + +
= − + +
Technique du mip- mapping appliqué à l’échiquier
En 3D
3D
3D
• Pour faire les anneaux, on prend les coord en x et y (resp x et z, y et z) pour calculer la distance d’un point au centre de l’objet + troncature.
Bruit
Lattice noise : grille de bruit Valeur aléatoire pour chaque ccord entière
Si coord entière : lookup table Si coord réelle : interpolation
trilineaire Gradient noise : vecteurs de bruit
générés pour chaque coord entière Interpolation trilinéaire
Bump Mapping/ Displacement Mapping
Carte de hauteurs
Modification des normales