Infographie

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 40

Infographie

Jean Fruitet
[email protected]

Centre d'InfoGraphie
Université de Marne-La-Vallée

1. INTRODUCTION A L'INFOGRAPHIE 1

2. NOTIONS GEOMETRIQUES 9

3. PROJECTIONS 16

4. ELIMINATION DES FACES CACHEES 23

5. FENETRAGE 30

6. ESTOMPAGE 33

BIBLIOGRAPHIE 36

TABLE DES MATIÈRES 37


1. INTRODUCTION
L'infographie (informatique graphique) a pour objet :

- l'analyse et le traitement d'images (amélioration d'images ; reconnaissance de formes ;


cartographie thématique, ...)

- la synthèse d'image (affichage de données sous forme graphique, calcul et restitution d'images
réaliste ou symbolique, visualisation de données scientifiques) sur écran cathodique (CRT) ou sur
imprimante par procédé informatique.

Pour l'analyse, voir le cours de traitement d'image.

Nous consacrons cette seconde partie du cours de géométrie algorithmique à un survol rapide de outils
(méthodologie / structures de données / algorithmes / interfaces) pour la création de programmes
graphiques (2D et 3D).

1.1. Les étapes de la synthèse d'image.


Pour produire l'image informatique d'un phénomène —mathématique, physique, organisationnel,
etc.— il est nécessaire de passer par différentes étapes :

MODELISER LE PHENOMENE
sous forme de nombres / relations / symboles
lois de comportement au cours du temps

AFFICHER CE MODELE SUR ECRAN EN DEUX DIMENSIONS


par composition de primitives graphiques
point, segment, courbe, surface, volume
épaisseur, trame, couleur

INTERFACER L'AFFICHAGE AVEC L'UTILISATEUR


l'interaction avec le programme d'affichage permet à l'utilisateur
de modifier les caractéristiques d'affichage (changer de point de vue)
et/ou de modifier le modèle

ANIMER LE MODELE
la sensation d'animation est obtenue
en modifiant le modèle et son affichage 25 fois par seconde...

1.2. L'univers et son modèle.


L'UNIVERS qui est sous-jacent à tout phénomène a des caractéristiques difficiles à représenter sur
ordinateur :
infini
continu
complexe / ambigü / flou
nombreuses dimensions, dont la dimension temporelle

Un MODELE d'univers consiste en une simplification mathématique

On distingue différents modèles


symbolique : langages, pictogrammes, ...
numérique : champs de scalaires, fonctions numériques
relationnel : schémas entités/associations et tables relationnelles
géométrique : topologie, métrique, dimension (1D, 2D, 3D, ...)
Infographie Jean FRUITET
1 UMLV - 1995
physique : statique / cinématique (mouvement) / dynamique (force)
objet : classe, héritage, ...
etc.

Sans modélisation préalable, pas de représentation informatique...

1.3. Le modèle et sa représentation.


Avant tout affichage sur écran, il faut traduire/décomposer le modèle en objets graphiques (primitives
d'affichage) et le recombiner à l'aide d'opérateurs (transformations spatiales, projections, fenêtrage...) dans
la mémoire d'affichage de l'ordinateur.

Les primitives d'affichage

Dimension Primitive Représentation Structure de données Simplexe


1D Point Semi de points Liste de points Segment
Intervalle Intervalle Listes d'intervalles
2D continu Point 2D - Nuage de points Ensembles Triangle
(espace Segment - Filaire Listes
euclidien) Polyligne - Polygones Arbres (Quad-Tree)
Arc remplis Fonctions
Courbe - explicites
Triangle - implicites
Boîte paramétriques
Polygone Coniques
Splines 2D
Fractales
2D raster Pixel
(espace Tache
discrétisé) (connexité 4, 8)
3D continu Point 3D - Filaire B-REP: Tétraèdre
Courbe gauche - Par facettes Liste de
Surface plane polygonales - Sommets
Surface gauche remplies. - Arêtes
Facettes - Volumique - Faces
Polyédres Struct. hiérarchique
Volumes : - Octree
Sphère, cube, cylindre, - Arbre CSG
cône MNT
Quadriques
Splines 3D
Fractales
3D raster Voxel
Champ scalaire

1.4. Le pipe-line de visualisation.


On désigne sous ce terme la succession des étapes de l'affichage

Infographie Jean FRUITET


2 UMLV - 1995
ESPACE OBJET
UNIVERS
Modélisation
2 2
X + Y =1

IR x IR

[0..1] x [0..1]
Primitives graphiques
Transformations géométriques
3D --> 2D
Système visuel physiologique Transformations de visualisation
Lois de l'optique Continu --> Discret
Observateur
ESPACE ECRAN
menu

message

CERVEAU

ESPACE OBJET
UNIVERS
Rétroaction
2 2
X + Y =1

IR x IR

[0..1] x [0..1]
Primitives graphiques
Transformations géométriques
3D --> 2D
Transformations de visualisation
Continu --> Discret

Interface
menu
Clavier R++
Souris
R--
Tablette à digitaliser dX
Menus / Langage de commande dY

Infographie Jean FRUITET


3 UMLV - 1995
1.5. Conversion numérique / analogique.

Ce schéma fonctionnel s'appuie sur un schéma technologique

Unité centrale
Mémoire VIDEO

UAL
Mémoire +
Compt. ordinal Mémoire d'affichage
+
Registres

Conversion Digital (numérique) --> Analogique

Rafraichissement
Ecran
24 fois par secondes au moins

CRT

Couche phospore luminescent


Cathode Ray Tube

Pour simuler l'animation, il faut afficher 24 images par secondes en respectant un référentiel culturel
(métaphore de la caméra), un modèle physique simplifié (lois de l'optique et de l'électromagnétisme) et
physiologique (vision des couleurs).

Infographie Jean FRUITET


4 UMLV - 1995
1.6. Thèmes de l'infographie.

Modélisation
UNIVERS ESPACE OBJET

Modélisation géométrique par les bords (B-Rep) Primitives graphiques


Points / Vecteurs / Polygones / Polyédres Polyligne / Polygone / Rectangle / Boîte
Listes de Sommets / Arêtes / Faces Arc / Cercle / Ellipse
Modélisation hiérarchique Transformations géométriques
Quad-Tree / Octree Affichage Translation / Rotation / Chgt d'échelle
Arbre CSG
en 2D / en 3D / en coordonnées homogènes
Description de scène (langage symbolique) Transformations de visualisation
Courbes et surfaces 3D --> 2D
Fonctions explicites / implicites Projection perspective
Coniques / quadriques / Splines 2D / Splines 3D
MNT Continu --> Discret
Triangulation Pixel / Ligne / Tache / Texture / Antialiassage

Physiologie de la vision ESPACE ECRAN


Cônes et batonnets
Clôture et Fenêtrage
menu
Cohen & Sutherland
Illusions d'optique Observateur Cyrus Beck, ...
Modèle RVB
Modèle ITS
Localisation
et remplissage
Lois de l'optique Rendu réaliste
Propagation de la lumière Elimination des
Synthèse additive lignes, faces Interfaces Systèmes graphiques
Modèles d'éclairage et parties cachées Mémoire Vidéo / DAC / CRT
Normes graphiques
Lancé de rayon Polling / Events Cartes graphiques
Radiosité Menus déroulants Tables de couleurs (LUT)
Fractales Périphériques
X-Windows

1.7. Un exemple d'application 2D

Affichage de la courbe y = cos(x).

Ce premier exemple va nous permettre de parcourir les étapes de l'affichage d'une fonction mathématique
et de définir au passage les outils pour la programmation graphique en Turbo C sur PC.

Univers

IR --> IR
x --> y = cosinus(x).

Infographie Jean FRUITET


5 UMLV - 1995
Modèle géométrique :

Fonction explicite y=cos(x) sur l'intervalle ] −∞ , +∞ [


Fonction paramétrique x = t; y = cos(t) sur l'intervalle ] −∞ , +∞ [
Vu la parité et la périodicité de la fonction, on peut :
se ramener à l'intervalle [ − π , + π [
donner la fonction en extension, en prenant par exemple N=12 échantillons sur l'intervalle
[ − π , + π [

Indice 0 1 2 ... i ... N = 12


x -Π -5 Π /6 - Π /3 (2 Π / N)*i - Π +Π
-− 3 / 2
y=cos(x) -1 -1/2 -1

Passage de l'espace objet à l'espace image

L'espace objet (ou réel) est infini, continu, euclidien, en N-dimensions.


L'espace écran est fini, discret, en 2 dimensions.

Dans l'espace objet, on peut choisir un référentiel (repère) orthogonal, normé, direct (anti-horaire 2D, ou
trigonométrique) et un système de coordonnées cartésiennes pour représenter les fonctions mathématiques
et leur graphe.

Par contre l'espace écran est défini (pour des questions technologiques... et culturelles) selon un référentiel
horaire, avec origine dans le coin supérieur gauche de l'écran. Les coordonnées entières d'écran sont
données en (colonne, ligne).

Définition d'écran : c'est le nombre de lignes et de colonnes adressables.


Sur un écran PC en mode graphique standard VGA 16 couleurs :
Nombre de colonnes par ligne 640 (de 0 à MaxX=639)
Nombre de lignes par page écran 480 (de 0 à MaxY=479)
Si la forme du pixel (picture element) n'est pas carrée les cercles sont affichés comme des ellipses et les
carrés comme des rectangles...
Il est donc nécessaire :
- de calculer par avance les coordonnées des points (x,y=f(x)) pour toutes les valeurs de l'intervalle
de définition
- d'initialiser le mode d'affichage graphique (caractéristiques d'écran, clôture et fenêtrage)
- d'effectuer le passage de l'espace objet à l'espace image, qui peut être par exemple défini en
coordonnées flottantes normalisées [0,1] x [0,1]
- d'effectuer le passage de l'espace image à l'espace écran (changement de repère)
- pour chaque couple de coordonnées écran, d'appeler les primitives d'affichage.

Et bien sûr si on ne dispose que de primitives point ou ligne, il faut décomposer le graphe en une
succession de segments.

Infographie Jean FRUITET


6 UMLV - 1995
xmax, ymax
y
ESPACE OBJET
1
M (x, y)
y=cos(x)

IR
0,0 x

xmin, ymin
0,0
clôture Xmin, Ymin
M (X, Y)

Ox, Oy x

ESPACE IMAGE

ESPACE ECRAN Xmax, Ymax


Fenêtre

Passage de l'espace objet à l'espace image

0,0 xmax, ymax

y
XMIN,YMIN 1
M (x, y)
M' (X,Y)

0,0
X
X0,Y0

XMAX, YMAX
xmin, ymin

Dans l'espace objet dans l'espace image

( x − x min) ( X − XMIN )
=
sur l'axe des X ( x max − x min) ( XMAX − XMIN

( y − y min) (Y − YMIN )
=
sur l'axe des Y ( y max − y min) (YMAX − YMIN

Infographie Jean FRUITET


7 UMLV - 1995
soit X = ( x − x min )( XMAX − XMIN ) / ( x max − x min ) + XMIN
et Y = ( y − y min) (YMAX − YMIN ) / ( y max− y min ) + YMIN

Il faut ensuite passer dans l'espace écran, c'est-à-dire inverser l'orientation de l'axe des Y et en
coordonnées entières !

soit Xécran = ( x − x min )( XMAX − XMIN ) / ( x max − x min ) + XMIN

et Yécran = MaxY − ( y − y min )( YMAX − YMIN ) / ( y max − y min ) + YMIN

Infographie Jean FRUITET


8 UMLV - 1995
2. NOTIONS GEOMETRIQUES

2.1. Notion de repère


Une scène est une collection d'objets en 3 dimensions. Le repère associé à la scène est le repère global
Le repère mathématique usuel est un repère main droite (pouce -> X ; index --> Y ; majeur -> Z). En
synthèse d'image on lui préfère souvent un repère main gauche avec les mêmes conventions (pouce -> X ;
index --> Y ; majeur -> Z), pour lequel l'axe Z pointe dans le sens opposé du repère main droite.

majeur main droite (repère main droite)


Z
Observateur
Ecran
Oeil

K index
Repère global
I O J
Y
pouce

majeur main gauche


(repère main gauche)

2.2. Visualisation
L'opération de visualisation est définie par la position de l'oeil de l'observateur (E) et un axe de visée V si
l'oeil est à une distance finie.
Si l'observateur est à l'infini, on parle de direction de visée.

Tous les déplacement des objets de la scène ou les déplacements de l'observateur se traduisent par le
recalcul des projections sur l'écran. Il est donc nécessaire de passer constamment d'un repère à l'autre.
Ce passage est obtenu par composition de transformations spatiales élémentaires : translations, rotations,
changements d'échelle, homothétie...
Pour des raisons d'efficacité, on cherchera à représenter ces transformations par des produits matriciels,
qui sont programmés de façon efficace et même implantés par matériel sur les machines graphiques
spécialisées.

Ecran
Z V
Xe U
Repère local
Xv
W
Oeil Yv
(main Zv
Ye gauche)
K

I J
Repère global
Y

(main
X droite)

Infographie Jean FRUITET


9 UMLV - 1995
2.3. Le système de coordonnées homogènes

Les transformations de IR3 dans IR3 peuvent s'exprimer par des matrices 3x3, sauf la translation. Par
contre dans IP4, l'espace projectif de IR3, toutes les transformations s'expriment par des matrices 4x4.

Les coordonnées homogènes d'un point de IR3 sont constituées d'un quadruplet (x, y, z, t).
- si t _ 0, M de coordonnées homogènes (x, y, z, t) est le point de IR3 de coordonnées cartésiennes
(x/t, y/t, z/t).
- si t = 0, le point M est "à l'infini" et le triplet (x, y, z) s'interprète comme un vecteur.

Z M3 (a, b , c, 0.5)

M2 (a, b, c, 1)

K M1 (a, b, c, 2)

J
I Y

Pour tous les points à distance finie de IR3 les quadruplets (x, y, z, t) et (x/t, y/t, z/t, 1) représentent le
même point. On choisira donc en général la seconde forme.; cependant on peut choisir une valeur de t >1
pour coder avec des entiers les coordonnées réelles.

Exemple : t(0.2, 1.3, 2.5, 1) = t(2, 13, 25, 10).

2.4. Variétés affines de IR3 en coordonnées homogènes.

La droite
Une droite est définie par deux points A et B
A : t(xA, yA, zA, 1);
B : t(xB, yB, zB, 1);
et un point courant par M : t(x, y, z, 1)

Représentation paramétrique de la droite :


x - xA = λ (xB-xA)
y - yA = λ (yB-yA)
z - zA = λ (zB-zA)

Segment [A B] 0< λ ²1

Le plan
Un plan est défini par un point M0 et une normale n au plan.
L'équation du plan est donc :
M0 M . n = 0 (. : produit scalaire)

Infographie Jean FRUITET


10 UMLV - 1995
M0 : t(x0, y0, z0, 1)
n : t(a, b, c, 0)

On exprime ce produit scalaire nul :


a (x-x0) + b (y-y0) + (c (z-z0) = 0
soit, sous forme d'un produit de matrices

x 
y 
[a b c d ]  = 0
 z
1 
  avec d = -(a x0 + b y0 + cz0)

Puissance d'un point par rapport à un plan

Soit P un plan d'équation ax + by + cz + d = 0


et M un point de coordonnées t(X, Y, Z, 1)
Le nombre réel P(M) = aX + bY + cZ + d est la "puissance de M par rapport à P". Le signe de P(M)
détermine deux demi-espaces séparés par le plan P.

Intérieur d'un polyèdre convexe

Un point est intérieur à un polyèdre convexe dont toutes les normales aux faces du polyèdre sont orientées
vers l'extérieur si la puissance de ce point par rapport à toutes ces faces est négative.

Faces visibles
Une face pour laquelle la puissance de l'oeil est négative n'est pas visible par un observateur extérieur au
polyèdre... Les faces vues par l'observateur sont celles pour lesquelles PF(Oeil) >0.

2.5. Eléments de calcul géométrique

Produit scalaire

a, b deux vecteurs d'angle a

a . b = |a| |b| cos (a)

a : t(xa ya za 0) b : t(xb yb zb 0)

a . b = xa xb + ya yb + za zb

Déterminant

a1 b1
D= = a1b2 − a2 b1
a2 b2
a1 b1 c1
b2 c2 b1 c1 b1 c1
D = a2 b2 c2 = a1 − a2 + a3
b3 c3 b3 c3 b2 c2
a3 b3 c3


n i+j
j=1
(− 1) aij D *ij

Infographie Jean FRUITET


11 UMLV - 1995
avec D*ij déterminant de la matrice obtenue en supprimant la ième ligne et la jème colonne dans
(aij).

Produit vectoriel


n i+j
j=1
(− 1) aij D *ij

a et b deux vecteurs d' angle α


a ∧ b = n a b sin(α )
n normale au plan déterminé par (O, a, b)

expression analytique du produit vectoriel :


i j k
avb= xa ya za = i(ya zb-yb za)-j(xa zb-xb za)+k(xa b-xb ya)
xb yb zb

2.6. Transformations géométriques

Les transformations géométriques usuelles en coordonnées homogènes sont représentées par des
matrices 4x4

f : P4 --> P4 M(f) est la matrice 4x4 de f


R est le repère (O, i, j, k) associé à IR3

Translation

T : t(tx ty tz 0) un vecteur de IR3


La translation de vecteur T est une application

tT : P4 --> P4
X --> X + T avec X t(x y z 1)

s'exprime par le produit matriciel M(tT) x X

La matrice M(tT) est donnée par

1 0 0 tx x
0 1 0 ty y
M(tT)= et X =
0 0 1 tz z
0 0 0 1 1

(matrice 4x4) (Vecteur colonne)

Les coordonnées du point translaté sont données par X' = M(tT) x X

Matrice inverse T-1 : Translation de vecteur opposé

1 0 0 -tx

Infographie Jean FRUITET


12 UMLV - 1995
0 1 0 -ty
M-1(tT)=
0 0 1 -tz
0 0 0 1
Changement d'échelle

c : P4 --> P4
t(x y z 1) --> t(k1 x, k2 y, k3 z, 1)

k1 0 0 0
0 k2 0 0
M(c)=
0 0 k3 0
0 0 0 1

dont l'inverse est

1/k1 0 0 0
0 1/k2 0 0
M-1(c)=
0 0 1/k3 0
0 0 0 1

Cas particulier de changement d'échelle : l'homothétie


k1 = k2 = k3 = k

Rotations autour d'un axe du repère

r : P4 --> P4 d'angle α

Rotation autour de Ox d'un angle α

1 0 0 0
0 cos(α) -sin(α) 0
Rx(α) =

0 sin(α) cos(α) 0
0 0 0 1

Rotation autour de Oy d'un angle α

cos(α) 0 sin(α) 0
0 1 0 0
Ry(α) =

-sin(α) 0 cos(α) 0
Infographie Jean FRUITET
13 UMLV - 1995
0 0 0 1

Rotation autour de Oz d'un angle α

cos(α) -sin(α) 0 0
sin(α) cos(α) 0 0
Rz(α) =

0 0 1 0
0 0 0 1
Rotations inverses autour d'un axe du repère
Il suffit de changer le signe des termes en sin(α)

Rotation d'angle teta autour d'un axe quelconque D

Schéma général

a) Amener D à l'origine : Translation T


b) Rotations pour amener D à coïncider avec l'un des axes Rx(alpha) et Ry(beta)
c) Rotation d'angle teta autour de l'axe D confondu avec Oz : Rz(teta)
d) Rotations et translation inverses pour ramener D en position initiale.

M(RD) = T x Rx(α) x Ry(β) x Rz(θ) x Ry-1(β) x Rx-1(α) x T-1

D est donnée par deux points


M1 (x1, y1, z1, 1)
M2 (x2, y2, z2,1)
u vecteur unitaire de D
u = t((x2-x1)/U, (y2-y1)/U, (z2-z1)/U, 0)
avec U = SQRT((x2-x1)2+(y2-y1)2+(z2-z1)2)

soit u = t(a, b, c, 0)
avec a = (x2-x1)/U b = (y2-y1)/U c = (z2-z1)/U
et d = SQRT(a2+b2+c2)

Tous calculs faits on trouve

0 1 0 -x1
T(-OM1) =
0 0 1 -y1
0 0 0 -z1
0 0 0 -1

1 0 0 0
Rx(α)= 0 c/d -b/d 0
0 b/d c/d 0

Infographie Jean FRUITET


14 UMLV - 1995
0 0 0 1

d 0 -a 0
Ry(β)= 0 1 0 0
a 0 d 0
0 0 0 1

Et pour la rotation autour de Oz d'angle q:

cos(θ) -sin(θ) 0 0
Rz(θ)= sin(θ) cos(θ) 0 0
0 0 1 0
0 0 0 1

On obtient la matrice
M(RD) = T x Rx(α) x Ry(β) x Rz(θ) x Ry-1(β) x Rx-1(α) x T-1

Z
D"
θ
Rz (θ )
D
α β
M2
D'
u
M1

k
T(-OM1)

j Y
O
i Ry (β )

Rx (α)

Infographie Jean FRUITET


15 UMLV - 1995
3. PROJECTIONS

3.1. Modèle de la caméra et pipe line de visualisation

Une scène est une collection d'objets virtuels en 3 dimensions vus par un observateur à travers la fenêtre
en 2 dimensions de l’écran d’ordinateur.
La visualisation implique de déterminer les objets de la scène contenus dans la pyramide de vision
(découpage), puis de projeter ces objets sur le plan image (projection perspective par exemple), et enfin
d’afficher cette image en la transformant en primitives graphiques dans l’espace écran (pixels).

PYRAMIDE DE VISION
Clôture Ecran
Observateur

L'opération de visualisation est définie dans l'espace objet par la position des objets, celle de l'observateur
et un axe de visée si l'oeil est à une distance finie. Si l'observateur est à l'infini, on parle de direction de
visée.

Tous les déplacement (objets de la scène ou observateur) se traduisent par le recalcul des projections sur
l'écran.

La fluidité des déplacements est obtenue en recalculant et en affichant l'image au moins 25 fois par
seconde.

Infographie Jean FRUITET


16 UMLV - 1995
Ecran
Z V
U
Repère local Xe

E
W Repère de
l'observateur
Ye
K (main gauche)

I J
Repère global Y
(main droite)

Coordonnées Coordonnées
x xv
d'un point d'un point
y yv
dans le repère dans le repère
z zv
objet global local de l'observateur

Pipe line de visualisation


Espace objet Transformations
Coordonnées 3D
Découpage dans l'espace objet
(Cyrus-Beck)

Clôture
Elimination des parties
cachées dans l'espace
Projection 3D/2D objet

Elimination des parties


cachées dans l'espace
image
Espace image Découpage dans l'espace
image
(Cohen-Sutherland)
Changement d'échelle

Fenêtrage dans l'espace image

Primitives d'affichage

Coordonnées Interaction
entières avec l'utilisateur
de l'espace écran

3.2. Classification des projections


Les projections se divisent en deux grandes classes suivant la position du centre de projection :
- projections perspectives ayant leur centre de projection à distance finie
- projections parallèles ayant leur centre de projection à distance infinie.
Infographie Jean FRUITET
17 UMLV - 1995
Projections perspectives

Le centre de projection est à distance finie du plan de projection


--> vision “humaine”.

Exemple : projection d’un cube

Projection à un point de fuite, deux faces parallèles au


plan de projection

Deux points de fuites, quatre arètes parallèles au


plan de projection

Infographie Jean FRUITET


18 UMLV - 1995
Trois points de fuite, aucune arète n'est parallèle
au plan de projection

Projections parallèles

Le point de fuite est à l’infini.


- projection axonométrique : plan de projection perpendiculaire à la direction de projection
- dimétrique
- isométrique
- orthographique
- vue de dessus
- vue de côté
- vue de face
- projection oblique : le plan de projection n’est pas perpendiculaire à la direction de projection.
- projection cavalière (45°)
- projection cabinet : les distances fuyantes sont divisées par 2.

Perspective cavalière

Projection cabinet

3.3. Calcul des projections perspectives

L’écran est perpendiculaire à la droite de visée (droite de l’oeil au centre du monde objet).

On connaît :

Infographie Jean FRUITET


19 UMLV - 1995
- la distance D de l’observateur à l’écran (plan de projection)
- la position de l’observateur dans le repère objet
- la position des points dans l’espace objet

Il s’agit de déterminer les positions des projetés dans l’espace écran.

Z ECRAN
Mo XE
(x'0, y'0, z'0)

Me
Y Y'
Xe
Ye X'

Repère objet
(main droite)
Observateur
Z' (repère main gauche)
X
YE

Le point Mo (xo,yo, zo) dans le repère (OEIL, X', Y', Z') de l’observateur se projette en Me(xe,ye) dans le
repère image.

yo / ye = zo / D
xo / xe = zo / D

avec D distance de l’observateur à l’écran.

Y'
yo Mo
ye
Me
Z'
OEIL
D zo

X'

Pour le point M(x,y,z) on ramène la transformation perspective au repère observateur :


xe = x . (D/z)
ye = y . (D/z)

En coordonnées homogènes la matrice de transformation s’écrit :

X 1 0 0 0 x
Y = 0 1 0 0 y
Z 0 0 1 0 x z
W 0 0 1/D 0 1
Infographie Jean FRUITET
20 UMLV - 1995
X x
=> Y = y
Z z
W z/D

En passant dans IR3 on retrouve :

X = x /(z/D) ; Y=y/(z/D) ; Z = z/ (z/D) = D.

Passage de l’espace objet à l’espace observateur

On peut décrire la position de l’observateur en coordonnées sphériques dans le repère objet.

XE = ρ sin(ϕ) cos(θ)
YE = ρ sin(ϕ) sin(θ)
ZE = ρ cos(ϕ)

Xv
Yv
XE
E YE
Z ZE

ϕ
ρ Zv

YE
O Y

XE

X A

On se propose de déterminer la matrice V telle que

Xv x
Yv =V y
Zv z
1 1

de passage du repère objet au repère de vision (observateur).

V est un produit de matrices élémentaires.


1) Translation de vecteur -OE, fait passer le point O au point E.
1 0 0 -xe
0 1 0 -ye
T=
0 0 1 -ze
Infographie Jean FRUITET
21 UMLV - 1995
0 0 0 1

Z'

(π − ϕ) E=O'
Z Y'

ϕ Y"
X"

O Y

θ
(π/2 − θ)

X
A

2) Rotation d’axe OZ pour amener OY dans le plan (OEA) d’angle (π /2 - θ)


sin(θ) -cos(θ) 0 0
cos(θ) sin(θ) 0 0
Rz(π /2 - θ) =
0 0 1 0
0 0 0 1

3) Rotation d’axe OX pour placer l’axe OZ (O’Z’) dans la direction EO d’angle (ϕ−π)

1 0 0 0
0 -cos(ϕ) sin(ϕ) 0
Rx(ϕ−π) =
0 -sin(ϕ) -cos(ϕ) 0
0 0 0 1

4) Inversion de la direction de OX
-1 0 0 0
0 1 0 0
Myz =
0 0 1 0
0 0 0 1

Et finalement

V = T x Rz x Rx x Myz

-sin(θ) -cos(θ) 0 -xe


-cos(ϕ) cos(θ) -cos(ϕ) sin(θ) sin(ϕ) -ye
V=
-sin(ϕ) cos(θ) -sin(ϕ) sin(θ) -cos(ϕ) -ze
0 0 0 1

Finalement

Infographie Jean FRUITET


22 UMLV - 1995
Xv x
Yv =V y
Zv z
1 1

Puis on procède à la projection perspective vue plus haut.

Infographie Jean FRUITET


23 UMLV - 1995
4. ELIMINATION DES FACES CACHEES

4.1. Que voit-on de la scène

Une scène est déterminée par un point de vue : seuls les objets contenus dans la pyramide de vision seront
affichés, après élimination des lignes et faces cachées par d'autres objets.

Objet masqué et découpé PYRAMIDE DE VISION


Ecran
Observateur

4.2. Représentation fil de fer

Les objets sont "représentés par les arètes. C'est une représentation ambigüe.

L'élimination des lignes (arètes) cachées est adaptée aux périphériques vecteurs :
- tables à tracer
- écrans calligraphiques (vecteurs)

L'élimination des faces cachées convient aux écrans en mode mosaïque [raster]

Infographie Jean FRUITET


24 UMLV - 1995
--> visualisation 3D des objets opaques.

Les algorithmes dépendent beaucoup des structures de données et de la façon dont les objets sont
représentés dans la mémoire de l'ordinateur.

4.3. Représentation des objets 3D

B-REP : représentation par les bords

-> approximation des objets par des polygones plans : polyèdres

Table des sommets Table des arètes Table des faces


x y z indice S1 S2 indice S1 S2 S3 ... indice
10,5 -5,0 25,7 0 0 2 0 0 2 4 0
10,5 0,0 25,7 1 2 4 1 1
12,0 5,5 15,0 2 4 0 2 2
3 ... ...
4 m q
...
n
Coordonnées réelles 3D Indices dans la table Indices dans la table des
des sommets sommets
ou dans celle des arètes
GEOMETRIE TOPOLOGIE

3 4

Facettes triangulaires et polyèdres convexes permettent une représentation simple et efficace d'une scène
pouvant contenir plus de 10 000 facettes...

Patches ou carreaux
- de Coons
- de Bézier
- Splines
Un carreau est une partie élémentaire de surface délimitée par 4 courbes frontières.
Les courbes sont paramétrées :

p(x, y, z) avec x = f(u,v) ; v = g(u,v) ; z = h(u, v).

Infographie Jean FRUITET


25 UMLV - 1995
u

Cela permet de générer des formes "libres", des surfaces gauches.


Par contre les calculs d'intersection sont assez coûteux.

Arbres C S G [constructive solid geometry]

Sphère
-

Cube Cylindre

Les noeuds de l'arbre sont des opérations ensemblistes, les feuilles des primitives solides.

4.4. Algorithme d'élimination de faces cachées

On distingue
a) les algorithmes dans l'espace objet
b) les algorithmes dans l'espace image.
Tous utilisent la notion de tri géométrique. Il s'agit de définir un ordre de priorité sur les objets pour
déterminer ceux qui sont visibles.
Tous exploitent plus ou moins la notion de cohérence d'image pour limiter les calculs d'intersection.
Quand certains paramètres varient peu ou lentement, l'image se modifie peu d'un pixel à l'autre.
--> cohérence entre les arètes
--> cohérence entre les faces
--> cohérence d'éclairage
--> d'une ligne d'image à la suivante [scan line : ligne de balayage de l'image]

Infographie Jean FRUITET


26 UMLV - 1995
--> d'une page d'écran à l'autre : les images successives d'une scène sont très semblables si le
point de vue varie peur.
--> cohérence de profondeur : une superposition par projection correspond presque toujours à des
profondeurs différentes.

Caractéristiques des algorithmes d'élimination de faces cachées

Dans l'espace objet :


- résolution géométrique indépendante de l'affichage, dans la clôture de la pyramide de vision
- calculs en coordonnées réelles 3D
- comparaison de chaque facette avec toutes les autres (o(n2))

Dans l'espace image :


- en fonction de la résolution du périphérique d'affichage (écran)
- dans les limites de la fenêtre d'affichage
- en coordonnées entières si possible
- comparaison de chaque facette avec chaque pixel (o(n.r))
r : résolution de l'écran = MAXLIGNE x MAXPIXEL_LIGNE
n : nombre de facettes
Il s'agit de détecter si un point de coordonnées (x, y) est intérieur à une facette.
La prise en compte de la cohérence spatiale améliore les algorithmes dans l'espace image.

Algorithmes dans l'espace objet

Ce sont les plus anciens. [Galimberti & Montanari 1969]

Une scène est constituée d'objets polyédriques non intersectants opaques ; chaque face a une normale
orientée vers l'extérieur. On détermine les faces arrières à l'aide des normales. On supprime les arètes
appartenant à deux faces arrières. Pour les arètes restantes, il faut tester si aucune face ne les cache.

Algorithme du peintre [Newell, Newell & Sancha]

Cet algorithme repose sur un tri des facettes selon la distance à l'observateur.
Les facettes les plus éloignées sont affichées en premier ; les facettes (opaques) les plus proches venant
recouvrir les facettes les plus éloignées...

Q'
P
Q

Une scène est constituée de polyèdres ; les faces sont des polygones classés en triant les sommets les plus
éloignés de chaque face selon leur profondeur. En cas de chevauchement, les faces sont découpées selon
le plan contenant l'autre face.
Puis on projette les faces classées sur le plan de l'écran en commençant par celles qui sont les plus
éloignées.
La force de cet algorithme est sa simplicité, mais de nombreuses faces cachées sont affichées
inutilement.

Algorithmes mixtes
Infographie Jean FRUITET
27 UMLV - 1995
Algorithme de ligne de crête
[Wright 73 - dans l'espace image] [Williamson 72 - dans l'espace objet]

Cet algorithme est utile pour visualiser les fonctions de deux variables et les MNT (modèle
numérique de terrain).

L'idée est de couper la surface à représenter par des plans d'équation x=Cte.

XMIN

X0

Infographie Jean FRUITET


28 UMLV - 1995
LIGNE_DE_CRETE : tableau d'altitudes réelles

Fonction CRETE(altitude f(x,y))


{
/* Afficher la courbe la plus proche de l'observateur */
Pour y=YMIN à YMAX faire
Afficher f(x0, y);
/* Initialiser un tableau à une dimension LIGNE_DE_CRETE
avec les valeurs de f(x0,y) */
Pour y=YMIN à YMAX faire
LIGNE_DE_CRETE[y]= f(x1, y);
Pour j=1 à XMIN faire
Pour y=YMIN à YMAX faire
Si f(xj, y) > LIGNE_DE_CRETE[y]
{
Afficher f(xj, y);
LIGNE_DE_CRETE[y]= f(xj, y);
}
}

Algorithmes dans l'espace image

Algorithme du Z-buffer [tampon de profondeur]

C'est un algorithme dans l'espace image, simple (il est souvent "câblé" sur les machines haut de
gamme), mais il est gourmand en espace mémoire et présente des difficultés d'anti-aliassage.

L'image est une matrice de pixels.


Pour chaque pixel on recherche la valeur de couleur, qui dépend de la profondeur, c'est-à-dire de la
distance à l'oeil de l'observateur de l'objet représenté par ce pixel.

Z0 Z1 Z2
C = NOIR C1 C2 =
ROUGE
Z2 < Z1 donc la couleur ROUGE est affichées

Fond de l'écran ou arrière plan de la scène


Algorithme du Z-buffer

mpl : maximum de pixels par ligne d'écran ;


mlécran : maximum de lignes d'écran;
Z : tableau [mpl, mlécran] de réels ;
C : tableau [mpl, mlécran] de couleurs ;

Fonction Z_BUFFER (Scène, Oeil)


/* modifie le tableau C */
{
réel z; entiers i, j; objet E;

Infographie Jean FRUITET


29 UMLV - 1995
Pour chaque pixel (i,j) faire
{
Z[i,j] = INFINI ;
C[i,j] = COULEUR_FOND;
}

Pour chaque objet E de la scène faire


{
Calculer la projection de E sur l'écran ;
Pour chaque pixel de cette projection faire
{
z = Profondeur de E en (i,j);
Si (z<Z[i,j])
{
Z[i,j] = z;
C[i,j] = Couleur de E en (i,j);
}
}
}
}

Les avantages du Z-BUFFER

- Rapide ; câblé ; tire profit de la cohérence de scène


- Compatible avec le lissage de Phong ou de Gouraud.

Les inconvénients du Z-BUFFER

- Les éléments sont affichés dans un ordre quelconque


- L'image est connue à la résolution de la mémoire d'image, donc il peut y avoir des défaut
d'aliassage.
- Il n'est pas possible de représenter les ombres portées, les transparences et les réflexions.
- Pour une image 1024 x 1024 il faut 1024 x 1024 x 2 octets pour le tampon de profondeur (2 MO).

Quelle couleur domine à la frontière des deux


polygones ?

Infographie Jean FRUITET


30 UMLV - 1995
5. FENETRAGE
5.1. Découpage d’un segment [clipping]
Algorithme de Cohen et Sutherland - Hodgman

On appelle fenêtrage (ou découpage) l'opération qui consiste à découper un objet graphique (segment)
selon les bords de la fenêtre de visualisation.
Pour déterminer si un segment est visible on considère les coordonnées de ses extrémités par rapport aux
droites constituant les bords de la fenêtre de diagonale ((Xmin, Ymin) (Xmax, Ymax))

D
(x4, y4)

Ymax

(x2, y2) B F
(x6, y6)

A (x1, y1)
Ymin

E
(x5, y5)

C Xmin Xmax
(x3, y3)

A chaque point (x, y) est associé un code de 4 chiffres binaires


CODE (x, y)= Cxmin Cxmax Cymin Cymax
0 si y <= Ymax
1 si y > Ymax
0 si y >= Ymin
1 si y < Ymin
0 si x <= Xmax
1 si x > Xmax
0 si x >= Xmin
1 si x < Xmin

Avec cette codification les codes des points (x1, y1) et (x2, y2) est 0000 ;
le code de (x3, y3) est 1010 ; le code de (x4, y4) est 1001
le code de (x5, y5) est 0010 ; le code de (x6, y6) est 0100

Condition nécessaire et suffisante pour qu'un segment [AB] d'extrémités (xA, yA) et (xB, yB)soit
entièrement visible :
- les deux codes sont nuls
((code(xA, yA)==0) && ( code(xB, yB) == 0))

Condition suffisante pour que le segment [CD] soit entièrement invisible


- un bit commun différent de zéro
(( code(xC, yC) & code(xB, yB)) != 0)

Le segment [EF] est en partie visible, pour déterminer quelle portion conserver, on peut procéder comme
suit :
- partager [EF] en deux segments [EM] et [MF] égaux
- rappeler récursivement l'opération de fenêtrage sur chaque nouveau segment.
Infographie Jean FRUITET
31 UMLV - 1995
La condition d'arrêt de la récursion, c’est la résolution de l’écran : un pixels d'écart entre les extrémités du
segment.

5.2. Découpage d’un polygone


Le polygone est décrit par la liste de ses sommets qui définit une liste triée de ses arcs.
Lsom (s1, s2, s3, ..., sn)
Larc (s1s2, s2s3, ..., sns1)
L’algorithme parcourt la liste de sommets et examine à chaque pas la relation entre les sommets et la ligne
de découpe. Il crée une nouvelle liste de sommets en ajoutant 0, 1 ou 2 sommets suivant la stratégie ci-
dessous.

-prendre un sommet S_fin d’un arc (S_ini, S_fin). S_ini a déjà été traité. Examiner la stratégie
concernant S_fin :

intérieur extérieur
S_fin
S_ini
intérieur ajouter + 1 sommet ajouter le point d’intersection
+1 sommet
extérieur ajouter le pont d’intersection et le S_fin ne rien faire
+2 sommets +0 sommet

Il suffit de répéter cette démarche pour chaque ligne de découpe. L’algorithme s’étend au découpage par
n’importe quel polygone convexe.

Infographie Jean FRUITET


32 UMLV - 1995
Découpage d'un polygone arète par arète

a) b)

c) d)

e)

Infographie Jean FRUITET


33 UMLV - 1995
6. ESTOMPAGE

Soit une triangulation 3D et une source de lumière ponctuelle à une distance infinie. L'éclairage de chaque
facette triangulaire (assimilée à une surface mate) dépend de l'orientation de la normale à la facette par
rapport à la direction du rayon lumineux incident.

I Diffuse = I Ponctuelle (L .N )
avec L = N = 1

On peut donc exprimer l'éclairement de chaque facette, à un facteur Ip près, comme un produit mixte de
trois vecteurs :

u = AB AB ; v = BC BC ; w = L L
puisque N = u ∧ v (produit vectoriel de AB par BC normalisés )

En exprimant les coordonnées de chaque vecteur


a  d  i 
u b  ; v  e  ; w  j 
   
c   f   k 
le produit mixte (u ∧ v ).w est égal au déterminant
a d i
∆ = b e j = i (bd − ce ) − j (af − cd ) + k(ae − bd )
c f k

Si ∆ > 0 la facette est éclairée, sinon elle est sombre...

Selon la loi de Lambert la quantité de lumière diffuse reçue par l'observateur est indépendante de la
position de celui-ci, pourvu que la facette soit visible :
Pour déterminer quelles sont les facettes visibles, il suffit d'appliquer le même raisonnement que
précédemment en calculant le produit mixte de la normale à chaque facette avec la direction de visée.

Infographie Jean FRUITET


34 UMLV - 1995
Source ponctuelle
N
*
C
L

Zénith

Face en lumière
rasante
N Face éclairée
W
N
Soleil W
+W
phi

N
Rho
Nord Face non
éclairée

Est
Téta

6.1. Algorithme
1) Calculer les coordonnées de la source lumineuse (ou plutôt son coefficient directeur) en coordonnées
sphériques
 x = ρ cos(θ) sin(ϕ )

w  y = ρ sin(θ )sin(ϕ) avec ρ = 1 et x 2 + y 2 + z 2 = 1
 z = ρ cos(ϕ )

2) Pour chaque triangle, calculer la normale N :


Soient A, B et C trois sommets

Infographie Jean FRUITET


35 UMLV - 1995
r r
u = AB ; v = BC
r r r r r
u v v u
N = r ∧ r (Si < 0 calculer r ∧ r )
u v v u
puis calculer l' intensité lumineuse diffuse
r r
u v r
I Diffuse = ( r ∧ r ). w
u v
I Diffuse ∈ [−1, +1] . Si IDiffuse ≤ 0, la facette est dans l' ombre

3) Calculer les coordonnées de l'observateur


 xe = γ cos(α )sin(β )
r
e  y e = γ sin(α )sin(β ) avec γ > 0

 ze = γ cos(β )

Pour chaque triangle éclairé calculer la visibilité :


u v e
∆Visible = ( ∧ ).
u v e
Si ∆Visible > 0 la facette est visible sinon invisible...

4) Pour toutes les facette éclairées et visibles attribuer une couleur d'intensité proportionnelle à
l'éclairement I ; si on dispose de 16 couleurs (ou plutôt de 16 gris en valeur de luminosité croissante) :
Si I<=0 Couleur = 0
et si I>0
Couleur = 15 I  avec I ∈ ]0,1]

5) Afficher les facettes par l’algorithme du peintre en commençant par celles qui sont le plus éloignées de
l’observateur.

Infographie Jean FRUITET


36 UMLV - 1995
Bibliographie
BURGER P., DUNCAN G., “Interactive Computer Graphics, Fonctional, Procedural and Device-level
methods”, Addison Wesley - 1989
FOLEY J.D., VAN DAM A., FEINER, HUGHES “Computer Graphics, Principles and Practice”, Addison
Wesley -1982 -1992
LIEBLING T., ROTHLISBERGER H. : “Infographie et applications”, Masson - 1988
PEROCHE B., GHAZANFARPOUR D., ARGENCE J., MICHELUCCI D., “La synthèse d’image”, Hermès -
1990
SCHWEIZER Philippe, “Infographie 1 et 2”, Presses Polytechniques Romandes - 1987

Infographie Jean FRUITET


37 UMLV - 1995
Table des matières
INFOGRAPHIE 1
1. INTRODUCTION 1
1.1. Les étapes de la synthèse d'image. 1
1.2. L'univers et son modèle. 1
1.3. Le modèle et sa représentation. 2
1.4. Le pipe-line de visualisation. 2
1.5. Conversion numérique / analogique. 4
1.6. Thèmes de l'infographie. 5
1.7. Un exemple d'application 2D 5
2. NOTIONS GEOMETRIQUES 9
2.1. Notion de repère 9
2.2. Visualisation 9
2.3. Le système de coordonnées homogènes 10
2.4. Variétés affines de IR3 en coordonnées homogènes. 10
Puissance d'un point par rapport à un plan 11
Intérieur d'un polyèdre convexe 11
Faces visibles 11
2.5. Eléments de calcul géométrique 11
Produit scalaire 11
Déterminant 11
Produit vectoriel 12
2.6. Transformations géométriques 12
Translation 12
Changement d'échelle 13
Rotations autour d'un axe du repère 13
Rotation autour de Ox d'un angle a 13
Rotation autour de Oy d'un angle a 13
Rotation autour de Oz d'un angle a 14
Rotations inverses autour d'un axe du repère 14
Rotation d'angle teta autour d'un axe quelconque D 14
3. PROJECTIONS 17
3.1. Modèle de la caméra et pipe line de visualisation 17
3.2. Classification des projections 18
Projections perspectives 18
Projections parallèles 19
3.3. Calcul des projections perspectives 20
Passage de l’espace objet à l’espace observateur 21
4. ELIMINATION DES FACES CACHEES 24
4.1. Que voit-on de la scène 24
4.2. Représentation fil de fer 24
4.3. Représentation des objets 3D 25
B-REP : représentation par les bords 25
Patches ou carreaux 25
Arbres C S G [constructive solid geometry] 26
4.4. Algorithme d'élimination de faces cachées 26
Caractéristiques des algorithmes d'élimination de faces cachées 27
Algorithmes dans l'espace objet 27
Algorithme du peintre [Newell, Newell & Sancha] 27
Algorithmes mixtes 28
Algorithme de ligne de crête 28
Algorithmes dans l'espace image 29
Algorithme du Z-buffer [tampon de profondeur] 29
Les avantages du Z-BUFFER 30
Les inconvénients du Z-BUFFER 30
5. FENETRAGE 31
5.1. Découpage d’un segment [clipping] 31
Infographie Jean FRUITET
38 UMLV - 1995
Algorithme de Cohen et Sutherland - Hodgman 31
5.2. Découpage d’un polygone 32
6. ESTOMPAGE 34
6.1. Algorithme 35
BIBLIOGRAPHIE 37
TABLE DES MATIÈRES 38

Infographie Jean FRUITET


39 UMLV - 1995

Vous aimerez peut-être aussi