IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

46
IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal

Transcript of IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Page 1: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

IFT3355: InfographieVisibilité

© Victor Ostromoukhov

Dép. I.R.O.

Université de Montréal

Page 2: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Visibilité

1. Pour créer une image, on doit premièrement effectuer la projection et le clippage

2. Pour une scène constituée d’objets opaques et non-réfléchissants, on doit ensuite déterminer ce qui est à l’avant pour chaque élément de l’image

3. Finalement, on doit afficher l’élément de l’image avec la bonne couleur

Page 3: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Visibilité

• Déterminer les surfaces visibles ou éliminer les surfaces cachées

• Il existe deux classes d’algorithmes pour résoudre le problème de la visibilité:– Algorithmes en espace image– Algorithmes en espace objet

Page 4: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

1. Algorithmes en espace image

• Détermine pour chaque élément d’image (de p pixels), l’objet (de n objets) qui est le plus près du centre de projection tout en étant dans le volume de vision

• O(n p)

Ex: 100 x (640x480) = 30,720,000 opérations

Page 5: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

1. Algorithmes en espace image

- Précision dépend de la résolution de l’image

- La visibilité doit être recalculée à chaque changement de résolution et/ou de positionnement de la fenêtre

+ Les algorithmes et leurs structures sont habituellement plus simples

Ex: tampon de profondeur, balayage de lignes, subdivision, lancer de rayons

Page 6: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

2. Algorithmes en espace objet

• Détermine entre chaque objet lequel est devant l’autre étant donnée la direction de projection

• O( )

Ex: 100 x 100 = 10,000 opérations

2n

Page 7: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

2. Algorithmes en espace objet

+ Précision dépend de la résolution des objets

+ La visibilité est indépendante de la résolution de l’image et peut même être indépendante de la position de la fenêtre

- Les algorithmes et leurs structures sont habituellement assez complexes

Ex: algorithme du peintre, octree, arbres BSP

Page 8: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Cohérences

• Hiérarchies en 3D• Face polygonale (si aucune inter-pénétration)• Changements seulement aux segments• Faces orientées vers l’arrière (backface culling)• Similarités entre lignes de balayage adjacentes• Similarités entre régions adjacentes de l’espace• Similarités de profondeur pour des parties d’un

même objet• Similarités dans une séquence d’images

Page 9: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Tampon de profondeur (z-buffer)

Initialise tous les pixels

rgb (x,y) = couleur arrière-plan

z (x,y) = distance arrière-plan

Pour chaque objet, scan-conversion dans le tampon

Pour chaque pixel (x,y) couvert par l’objet

Si distance-objet (x,y) < z (x,y)

z (x,y) = distance-objet (x,y)

rgb (x,y) = couleur objet

Page 10: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Tampon de profondeur (z-buffer)

* * * 3 4 4 4 5

* * * * * * * *

* * 5 6 * * * *

* 5 6 6 * 3 * *

* * 6 7 3 3 4 *

* * * 3 3 4 4 *

* * * 3 4 4 4 5

* * * * * * * *

* * * * * * * *

* * * * * 3 * *

* * * * 3 3 4 *

* * * 3 3 4 4 *

Page 11: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Tampon de profondeur (z-buffer)

Scan-conversion: remplissage par balayage

Profondeur:

),,()()(

)()(

1312

1312 CBAPPPP

PPPPN

111111 0 CzByAxDDCzByAx

const

y

C

yByxz

C

yyBAxDyyxz

const

x

C

xAyxz

C

ByxxADyxxz

C

ByAxDyxz

CB

CA

1),(

)(),(

1),(

)(),(

),(

1P

2P3P

Page 12: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Interpolation bilinéaire (alternative)

)( 121 zztzza

)( 121 yytyy s

12

1

12

1

yy

yy

zz

zz sa

)(

)()(

12

1121 yy

yyzzzz s

a

)(

)()(

13

1131

yy

yyzzzz s

b

)(

)()(

ab

apabap xx

xxzzzz

1z

2z

3z

az pzbz

1y

sy

2y

3yX

Y

Interpole aussi: couleur, texture, normale, etc.

Page 13: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Tampon de profondeur (z-buffer)

Avantages/désavantages:

+ simplicité, généralité

+ hardware, parallélisme

- mémoire additionnelle pour les tampons

+ aucune mémoire pour conserver la scène

- aliassage (en XY et en Z)

Page 14: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Donc rendre aussipetit que possible correspondà minimiser f et maximiser n

zwmax

Z-fighting

Donc rendre aussipetit que possible correspondà minimiser f et maximiser n

dérivée de chaque côté

taille des bins en espace monde

Majeed Hayat

z f n /2b pour b bits

z n f fn

zw

z fnzw

zw2

zw zw

2z

fn

zwmax fz

n lorsque z f

n 0 0 0

0 n 0 0

0 0 n f fn

0 0 1 0

xw

yw

zw

1

Page 15: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Partition de l’espace

• Dans l’algorithme du peintre, les objets sont ordonnés en fonction de leur distance à la fenêtre, et ils sont affichés du plus éloigné au plus rapproché

Ex: celluloïdes, VLSI

• Dans certains cas, cet ordre est

impossible sans découpage

au préalable

Page 16: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Octree

• Pour n’importe quel point de vue, on peut énumérer les faces d’un cube de la plus éloignée à la plus rapprochée.

• Cette approche se généralise à l’octree

• En alternant selon X, Y, Z et glissant le plan de subdivision, on obtient un kd-tree

Page 17: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Partition binaire de l’espace (BSP tree)

• L’octree se généralise à son tour à la partition binaire de l’espace en se servant des plans de support des polygones comme éléments de séparation

+ Très utile lorsque la scène est statique mais que le point de vue peut être n’importe où dans la scène

Page 18: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Création d’une partition binaire

BSPTree * BSPMakeTree (liste de polygones)– choisit un polygone comme racine– pour tous les autres polygones p

• si p est devant, ajoute p à la liste de devant

• si p est derrière, ajouter p à la liste de derrière

• sinon, découpe p en deux par rapport au plan de la racine et ajoute chaque moitié à sa liste respective

BSPTree = BSPCombineTree ( BSPMakeTree (liste de devant), racine, BSPMakeTree (liste de derrière))

Page 19: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Exemple de construction d’arbre BSP

A

E

CB

D

A

E

C1

B

D C2

C1 C2

Page 20: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Découpage en 3D

T1 = (a,b,A)

T2 = (b,B,A)

T3 = (A,B,c)

Page 21: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Ordonnancement dans un arbre BSP

• Si l’oeil est d’un côté d’un plan, les objets de l’autre côté ne pourront jamais être devant un objet du même côté du plan que l’oeil

• On peut donc traverser l’arbre de derrière à devant pour tout point de vue en affichant simplement avec un algorithme du peintre

Page 22: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Algorithme d’affichage d’un arbre BSP

AfficheArbre (sousArbre)– si l’oeil est devant la racine

• AfficheArbre (sousArbre->arrière)

• AffichePolygone (sousArbre->racine)

• AfficheArbre (sousArbre->devant)

– sinon• AfficheArbre (sousArbre->devant)

• AffichePolygone (sousArbre->racine)

• AfficheArbre (sousArbre->arrière)

// si aucun backface culling

Page 23: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Avantages et inconvénients du BSP

+ Les plans de la pyramide de vue peuvent être utilisés pour le clippage avec BSP

+ Si l’illumination (shading) est coûteuse, on peut aussi afficher de devant à derrière en n’affichant un pixel que s’il n’a pas déjà été affiché

+ On peut aussi traiter les ombres de sources de lumière ponctuelles

- Obtenir un arbre BSP avec le moins de polygones coupés est une tâche complexe

- Problèmes de robustesse en créant des polygones étroits

Page 24: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Optimization du BSP

Racine T1: 2 nodes

Racine T2: 4 nodes

n objets: n! possibiliés

Page 25: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

• Généralement, les techniques précédentes en espace image projettent les objets sur une fenêtre. Il faut alors projeter tous les n objets: O(n p)

• Le lancer de rayons (ou ray casting pour ne traiter que la visibilité) consiste à lancerun rayon au travers de la fenêtrepour identifier la première surfaceentre la fenêtre et la scène 3D:O(n res) pour res pixels

• Traitement pixel par pixel plutôtque objet par objet

• Utilisé aussi pour le picking

Lancer de rayons (ray tracing/ray casting)

Page 26: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

• Un rayon est défini par

une origine

une direction

définie par un point sur la fenêtre• Sous forme paramétrique, un rayon s’exprime

comme

Lancer de rayons - Le rayon

010

010

010

010

)(

zzzztzz

yyyytyy

xxxxtxx

PPtPP

),,( 000 zyx

),,( zyx

),,( 111 zyx

Page 27: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Lancer de rayons - Intersection avec un plan

• L’intersection d’un rayon avec un plan (A,B,C,D)

consiste à exprimer le plan en fonction de la forme

paramétrique du rayon

• Pour l’intersection avec un polygone, il faudra déterminer si le point d’intersection est à l’intérieur du polygone

zCyBxA

DCzByAxt

DztzCytyBxtxA

DCzByAx

)(

0)()()(

0

000

000

Page 28: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Lancer de rayons - Intersection avec une sphère

• Similairement pour l’intersection d’un rayon avec une sphère

a

acbbt

zyxtzzyyxxtzyx

ztzytyxtx

zyx

2

4

0)1()(2)(

1)()()(

1

2

20

20

20000

2222

20

20

20

222

0, 1 ou 2 intersections réelles

Page 29: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Lancer de rayons - Visibilité au pixel

• Pour identifier la surface visible du pixel, il suffit d’intersecter tous les objets et de ne conserver que l’intersection ayant la plus petite valeur positive de t

1t2t

3t

3210 ttt

Page 30: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Lancer de rayons récursif (ray tracing)

• Le premier rayon identifie la visibilité à partir de l’oeil• Du point d’intersection, d’autres rayons peuvent être tracés

pour déterminer la visibilité des lumières et calculer leurs contributions

• Du point d’intersection, d’autres rayons peuvent aussi être tracés pour déterminer les contributions de la réflexion et de la transmission/réfraction

• On doit s’assurer de ne pas ré-intersecter l’objet au nouveau point de départ (surface acné)– ajouter une distance epsilon au rayon (trouver la bonne

valeur par rapport aux objets et la scène)– ne pas intersecter la surface elle-même (plus limité:

surface convexe et test par rapport à la normale)

Page 31: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Lancer de rayons récursif (ray tracing)

1N

1R1L

L2L

1T

3N

3L

3R

3T

Page 32: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Lancer de rayons: types de rayons

• Rayons d’ombre:

• Rayons réfléchis:

)(

)(

i

ii PL

PLL

11 )(2 iiiii VNNVR

iN

iR

1iV

iN

iR

1iV

Page 33: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Lancer de rayons: types de rayons

• Rayons transmis / réfractés:

(la loi de Snell) 1

2

2

1

sin

sin

hh

1h 2h

iN

iN

iT

1iV

1

2

Page 34: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Lancer de rayons: réfraction

22 cossin ii NMT

221

11 cossinsin

)cos(

i

iii N

VNT

121 )coscos( iii VNT

hh

2112

1 cos)cos( hh

iiii NVNT

122

122

22 cos11sin1sin1 hh

1

2

1sin

2sinM

1iV

1cosiN

1

11

sin

cos

M

VN ii

2cosiN

iN

iN

iT

1

11

sin

)cos(

ii VNM

12

12

1 ))(1(1)( iiiiiii VVNVNNT

hhh

2

1h

hh

M

Page 35: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Intersection en espace objet (instancing)

a

b

tba ᅠ

Mq

Mr

aM 1bM 1

btMaM 11

qᅠ

r

espace objetespace monde

n

nMT1

Page 36: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Accélérations du lancer de rayons

Rayon - objet

algorithmes d’intersectionvolumes englobants

Moins d’intersections par rayon

subdivisions d’espacetechniques directionnelles

hiérarchies de volumes englobants

Moins de rayons

contrôle de profondeurstatistiques

Rayons généralisés

faisceauconiqueparaxial

Page 37: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Volumes englobants

espace objet

boîte orientée(OBB)

boîte alignée sur les axes(AABB)

hiérarchie de boîtes englobantes(BVH)

Page 38: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Grilles

1er test: aucune intersection

2e test: intersection hors du voxel courant

3e test: intersection valide, dans le voxel, stop

Page 39: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Lancer de rayons distribués

• Anti-aliassage– échantillonnage régulier– échantillonnage stratifié (jitter)

• Pénombres– échantillonner la lumière– échantillonner l’angle solide formé par la lumière

• Profondeur de champ– échantillonner les lentilles (simulées) d’une caméra

• Réflexion glossy– échantillonner le cone de réflexion

• Flou de mouvement– échantillonner (le mouvement dans) le temps

Page 40: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Lancer de rayons distribués

• Anti-aliassage– échantillonnage régulier– échantillonnage stratifié (jitter)

• Pénombres– échantillonner la lumière– échantillonner l’angle solide formé par la lumière

• Profondeur de champ– échantillonner les lentilles (simulées) d’une caméra

• Réflexion glossy– échantillonner le cone de réflexion

• Flou de mouvement– échantillonner (le mouvement dans) le temps

Page 41: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Lancer de rayons distribués

• Anti-aliassage– échantillonnage régulier– échantillonnage stratifié (jitter)

• Pénombres– échantillonner la lumière– échantillonner l’angle solide formé par la lumière

• Profondeur de champ– échantillonner les lentilles (simulées) d’une caméra

• Réflexion glossy– échantillonner le cone de réflexion

• Flou de mouvement– échantillonner (le mouvement dans) le temps

Page 42: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Lancer de rayons distribués

• Anti-aliassage– échantillonnage régulier– échantillonnage stratifié (jitter)

• Pénombres– échantillonner la lumière– échantillonner l’angle solide formé par la lumière

• Profondeur de champ– échantillonner les lentilles (simulées) d’une caméra

• Réflexion glossy– échantillonner le cone de réflexion

• Flou de mouvement– échantillonner (le mouvement dans) le temps

Page 43: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Lancer de rayons distribués

• Anti-aliassage– échantillonnage régulier– échantillonnage stratifié (jitter)

• Pénombres– échantillonner la lumière– échantillonner l’angle solide formé par la lumière

• Profondeur de champ– échantillonner les lentilles (simulées) d’une caméra

• Réflexion glossy– échantillonner le cone de réflexion

• Flou de mouvement– échantillonner (le mouvement dans) le temps

Page 44: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Lancer de rayons distribués

• Anti-aliassage– échantillonnage régulier– échantillonnage stratifié (jitter)

• Pénombres– échantillonner la lumière– échantillonner l’angle solide formé par la lumière

• Profondeur de champ– échantillonner les lentilles (simulées) d’une caméra

• Réflexion glossy– échantillonner le cone de réflexion

• Flou de mouvement– échantillonner (le mouvement dans) le temps

Page 45: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Submissions 2007

Page 46: IFT3355: Infographie Visibilité © Victor Ostromoukhov Dép. I.R.O. Université de Montréal.

Weathering