Vous êtes sur la page 1sur 43

Pipeline du rendu projectif

Alexandre Meyer
http://bat710.univ-lyon1.fr/~ameyer/cours

1
Synthèse d’images

1. Camera

photons

Cours de synthèse d’images 2


Analogie appareil photo et SI

photons
Image
Oeil (pixels)

Appareil photos Synthèse d’images

Cours de synthèse d’images 3


2 approches duales en SI

Image Image
Oeil (pixels) Oeil (pixels)

Des rayons sont lancés Les objets sont projetés sur


depuis l’œil vers la scène l’écran dans la direction de l’œil.
en passant par un pixel
Ray-tracing Rendu projectif (cablé sur les
•Image réaliste cartes graphiques modernes -> temps réel)
•Lent
Cours de synthèse d’images 4
Caméra : idée générale
Caméra
l Plan image
(viewport)
CDP Monde

h
d

CDP = Centre De Projection


d = Distance focale (distance entre CDP et le plan image)
l = largeur de l’image dans le monde
h = hauteur de l’image dans le monde
mxn = taille de l’image en nombre de pixel

Cours de synthèse d’images 5


2e approches : rendu projectif

Image Image
Oeil (pixels) Oeil (pixels)

Des rayons sont lancés Les objets sont projetés sur


depuis l’œil vers la scène l’écran dans la direction de l’œil.
en passant par un pixel
Ray-tracing Rendu projectif (cablé sur les
•Image réaliste cartes graphiques modernes -> temps réel)
•Lent
Cours de synthèse d’images 6
Rendu projectif : PIPELINE
Plan image

Ap A
oeil

Pipeline
1. Clipping des polygones en 3D suivant la pyramide de vue
2. Projection des points sur le plan image
3. Remplissage des triangles (Rasterizing) dans l’image
a. Suppression des parties cachées : Z-Buffer
b. Calcul de la couleur : illumination
Cours de synthèse d’images 7
Plan
 Rendu par lancé de rayons (ray-Tracing)
 Rendu projectif
 Clipping
 Projection
 Remplissage des polygones
 Suppression des parties cachées
 Illumination

oeil

Cours de synthèse d’images 8


Projection parallèle
 Direction De Projection (DDP) est (0,0,1)
 P=(x,y,z) -> P’ = (x, y, 0)
 Manque de réalisme

Image

Cours de synthèse d’images 9


Projection parallèle : problème
Projection // ne peut donner ceci :

Cours de synthèse d’images 10


Projection perspective
Plan image
Y (viewport)
l
Ap A
CDP=O
X -Z

h
d

1. Projette les points du triangle sur le plan image

Cours de synthèse d’images 11


Projection perspective
 Projete vers le centre de projection CDP
 P=(x,y,z) -> P’ = ??

Image

CDP

Cours de synthèse d’images 12


Projection perspective
 Besoin de perspective
 Configuration simple :
CQ CO y.d
Y
= ⇔ CQ = y ' =
P(x,y,z)
AP AO z
Q
CDP
x.d
-Z x'=
O d C A z

Plan image y x
Si d = 1 ⇒ y' = et x' =
z z
d=distance focale
Cours de synthèse d’images 13
Matrice de projection : MI←C
1 0 0 0
 
0 1 0 0
M I ←C =
0 0 1 0
 
0 0 1/ d
 0 

 Soit un point dans l’espace de la camera


(x, y, z,1)
 Résultat : un point dans l’espace Image
 xd yd 
(x, y, z, z / d ) =  , ,1,1
 z z 

Cours de synthèse d’images 14


Plan
 Rendu par lancé de rayons (ray-Tracing)
 Rendu projectif
 Clipping
 Projection
 Remplissage des polygones
 Suppression des parties cachées
 Illumination

oeil

Cours de synthèse d’images 15


Clipping

 Trouver la partie exacte d’un polygone se


trouvant dans la pyramide de vue
 Le clipping d’un polygone est un polygone
 Le clipping peut se faire en 2D ou en 3D
 Clipping avant (3D) ou après la projection (2D)?

Cours de synthèse d’images 16


Algorithme de Sutherland-Hodgman
p0
 Itération sur les arêtes de p1

la région de clipping
p4 p2

p3
 Résultat peut être NULL si
le polygone est en dehors

 Généralisation possible à
des régions non
rectangulaires

etc
Cours de synthèse d’images 17
Clipping suivant une région
 Pour construire le nouveau polygone
 Itération sur les arêtes c P0
(par exemple de P0 à P4 pour le poly ci contre)

P1
 Construction d’une nouvelle
séquence de points P4
P
2
 Initialisation avec une séquence vide P
3

 4 cas à considérer Region de


clipping

Cours de synthèse d’images 18


Clipping d’une arête

 P0,P1 une arête. 4 cas possibles :


V i si bl e si de of
boundar y
 Entrée dans la région de clipping p p
-> ajouter P et P1 1
p
0
 Sortie de la région de clipping
p p
-> ajouter P 1
p
0
p
 Entièrement en dehors 1

-> ne rien faire p


0

p
1 p
 Entièrement à l’intérieur 0
-> ajouter P1
OUT IN
 P est le point d’intersection
Cours de synthèse d’images 19
Sutherland-Hodgman
 Un exemple:

P0 P’4 P’0
P’4 P’0
P1
P1
P4
P4 P
P 2
2
Etape 0: vide P
P Etape 1: ? 3
3 …
Exercice

Cours de synthèse d’images 20


Sutherland-Hodgman
 Un exemple:

P0 P’4 P’0
P’4 P’0
P1
P1
P4
P4 P
P 2
2
Etape 0: vide P
P Etape 1: P’0 P1 3
3 Etape 2: P’0 P1 P2
Etape 3: P’0 P1 P2 P3
Etape 3: P’0 P1 P2 P3 P4
Etape 4: P’0 P1 P2 P3 P4 P’4

Cours de synthèse d’images 21


Sutherland-Hodgman

Cours de synthèse d’images 22


Clipping en 3D
 L’algo de Sutherland-Hodgman peut être
facilement étendu à la 3D :
 L’enveloppe de clipping devient 6 plans au
lieu des 4 lignes
 Le calcul d’intersection est fait en comparant
une arête à un plan.

 Ce clipping peut être fait dans l’espace


objet en 3D ou dans l’espace image en 2D

Cours de synthèse d’images 23


Clipping / projection dans quel ordre?

 Projection puis clipping


erreur possible (cf. page suivante)

 Clipping de Sutherland-Hodgman en 3D
puis projection

 6 plan de clipping formant la pyramide de


vue

Cours de synthèse d’images 24


Clipping dans l’espace image (2D)

 Problème : un segment allant de derrière le point


de projection provoque un résultat incorrecte.

V
View plane
+1
P2
P1
Q2
N
O
COP
Q1

-1

Cours de synthèse d’images 25


Plan
 Rendu par lancé de rayons (ray-Tracing)
 Rendu projectif
 Clipping
 Projection
 Remplissage des polygones
 Suppression des parties cachées
 Illumination

oeil

Cours de synthèse d’images 26


Simple, Convexe et complexe

 Simple
 Aucune intersection d’arêtes
Simple Convexe
 Convexe
 Chaque angle intérieur Pi-1PiPi+1<Pi

 Sinon polygone arbitraire ou complexe Concave

Arbitraire ou complexe
Cours de synthèse d’images 27
Intérieur?

 Règle pair - impair


 Pour chaque point, trace une ligne horizontal allant à
l’infini
 Compte le nombre d’intersection avec des arêtes

 Impaire veut dire à l’intérieur

(compte les sommets Max et Min comme 0; les autres


comme 1)

extérieur

Cours de synthèse d’images 28


Remplir un polygone

 Remplir un polygone
 Faire un test d’ "intérieur" pour chaque pixel de l’image
 OK mais lent

 Pour chaque pixel de la boite englobante (bounding box) …


 Toujours peu efficace

On utilise la cohérence

Cours de synthèse d’images 29


Algorithme de Scan-Line
 L’intersection entre l’arête d’un polygone et deux
lignes horizontale change peu et est calculable
facilement

Arête y=ax+b

yi = i = axi + b
xi
yi−1 = i −1 = axi−1 + b yi=i
xi-1
yi-1=i-1
1
xi = xx−1 +
a
Cours de synthèse d’images 30
Principe général : exemple
 Algo
 Pour chaque ligne y
 Récupère les arêtes actives de la ligne y
depuis la table des arêtes (Edge Table)
 Pour chaque aretes active, mettre à jour les valeurs
de x (avec x= intersection entre l’arête et la ligne y)
8
 Tri les arêtes actives
7
 On remplie les espaces 6
5
entre 2 arêtes successive a b
4
3
d c
2
1
0
0 1 2 3 4 5 6 7 8
Cours de synthèse d’images 31
Initialisation : Edge Table (ET)
 Ordre de description d’une arête
 Être sur que y1<y2 pour chaque arête (x1,y1) (x2,y2)

 Construire une table des arêtes Edge Table (ET)


 Tri des arêtes suivant leur Y minimum
 Des arêtes commençant avec le même Y sont rangées
dans la même “boite”
 Chaque élément contient
 (Ymax, Xmin, incrément des X)

Cours de synthèse d’images 32


8
7
6
Initialisation 5
b
4 a
3
d c
2
1
0
0 1 2 3 4 5 6 7 8
 Arêtes (Edges )
(Ymax, Xmin, incrément des X)
Label Coordonnées y1 Structure
a (1,1) to (4,7) 1 (7,1,0.5)
b (7,2) to (4,7) 2 (7,7,-0.6)
c (7,2) to (4,4) 2 (4,7,-1.5)
d (1,1) to (4,4) 1 (4,1,1)

 Table des arêtes (Edge Table) contient


y1 Sequence d’arêtes
1 (7,1,0.5), (4, 1, 1)
2 (7,7,-0.6), (4, 7,-1.5)
Cours de synthèse d’images 33
Pour chaque ligne de l’AET
Ligne Active Edge Table Interval de dessin
0 vide
1 (7, 1, 0.5), (4, 1, 1) 1à1
2 (7, 1.5, 0.5), (4, 2, 1), (7, 7, -0.6), (4, 7, -1.5) 1.5 à 2, 7 à 7
3 (7, 2.0, 0.5), (4, 3, 1), (4, 5.5, -1.5), (7, 6.4, -0.6) 2.0 à 3, 5.5 à 6.4
4 (7, 2.5, 0.5), (7, 5.8, -0.6) 2.5 à 5.8
5 (7,3. 0,0. 5), (7, 5.2, -0.6) 3.0 à 5.2
6 (7, 3.5, 0.5), (7, 4.6, -0.6) 3.5 à 4.6
7 vide 8
8 vide 7
6
5
a b
4
3
d c
2
1
0
0 1 2 3 4 5 6 7 8 Cours de synthèse d’images 34
Active Edge Table (AET)

Pour chaque ligne horizontale d’un polygone on a


besoin de considérer que les arêtes actives

 Garde une table des arêtes actives


= Active Edge Table
 Mise à jour de cette table à chaque changement de
ligne

 On extrait de cette table les intervalles à


colorier

Cours de synthèse d’images 35


Maintenir l’AET

 Passage à la ligne horizontale suivante


 Enlève chaque arête dont y2 = ligne courante

 Mettre à jour la valeur de x pour chaque arêtes


restantes

 Ajoute chaque arête dont y1 est égal à la ligne


courante

Cours de synthèse d’images 36


Dessiner à partir de l’AET
 Trier les arêtes actives selon x
 Les pairs d’arêtes donnent les segments à
dessiner

 Attention
 Les sommets Maximum ne sont pas dessinés
 Cas particulier quand un polygones partages
des arêtes avec un polygone voisin

Cours de synthèse d’images 37


Pour chaque ligne de l’AET
Ligne Active Edge Table Interval de dessin
0 vide
1 (7, 1, 0.5), (4, 1, 1) 1à1
2 (7, 1.5, 0.5), (4, 2, 1), (7, 7, -0.6), (4, 7, -1.5) 1.5 à 2, 7 à 7
3 (7, 2.0, 0.5), (4, 3, 1), (4, 5.5, -1.5), (7, 6.4, -0.6) 2.0 à 3, 5.5 à 6.4
4 (7, 2.5, 0.5), (7, 5.8, -0.6) 2.5 à 5.8
5 (7,3. 0,0. 5), (7, 5.2, -0.6) 3.0 à 5.2
6 (7, 3.5, 0.5), (7, 4.6, -0.6) 3.5 à 4.6
7 vide 8
8 vide 7
6
5
a b
4
3
d c
2
1
0
0 1 2 3 4 5 6 7 8 Cours de synthèse d’images 38
Rendu projectif : PIPELINE
Plan image

Ap A
oeil

Pipeline
1. Clipping des polygones en 3D suivant la pyramide de vue
2. Projection des points sur le plan image
3. Remplissage des triangles (Rasterizing) dans l’image
a. Suppression des parties cachées : Z-Buffer
b. Calcul de la couleur : illumination
Cours de synthèse d’images 39
Cours de synthèse d’images 40
Cablé sur les cartes graphiques modernes

GPU pour Graphic Process Unit


→ Temps réel
Cours de synthèse d’images 41
Evolutions du GPU

Evolution_GPU.pdf pour les images Cours de synthèse d’images 42


Evolutions du GPU

Cours de synthèse d’images 43

Vous aimerez peut-être aussi