principe du lancer de rayons - univ-lille.fr

9
Chapitre 6 : Eclairement Modélisation 3D et Synthèse Fabrice Aubert [email protected] Master Informatique 2018-2019 F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 1/49 1 Introduction : modèles d’illuminations F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 2/49 Modèles d’illuminations Modèle local : on calcule l’intensité en un point donné d’une surface en ne tenant compte que de l’intensité des sources lumineuses. Exemple : modèle de Phong. Modèle semi-global : s’appuie sur un modèle local enrichit pour tenir compte des objets de la scène. Exemple : lancer de rayons. Modèle global : on tient compte de la contribution de tous les points de la scène environnants pour le calcul de l’éclairement en un point (échanges lumineux entre toutes les surfaces de la scène). Exemple : radiosité. F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 3/49 Principe du lancer de rayons Suivre le chemin inverse de la lumière (but : calculer la couleur en chacun des pixels de l’écran). Dans sa version simple, on détermine pour chaque point rencontré un éclairement local (i.e. éclairement direct par les sources) auquel on ajoute l’éclairement provenant d’un rayon réfléchi (objet miroir) et d’un rayon transmis (réfraction) Modèle de Whitted (80). α α rayon d’ombrage Surface2 rayon reflechi normale au sommet rayon primaire Observateur Surface1 rayon transmis Source F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 4/49 Modèle global : équation de Kajiya I(x, x )=g(x, x ) ε(x, x )+ A ρ(x, x , x )I(x , x)dx (1) avec I (x , x ) l’intensité véhiculée de x vers x , g(x , x ) la fonction de visibilité entre les points x et x (0 s’il ne se voient pas, sinon g varie comme l’inverse du carré de la distance entre x et x ), ε(x , x ) l’intensité propre transférée de x vers x , ρ(x , x , x ) est la réflectance bi-directionnelle au point x correspondant aux directions x et x . A ensemble des surfaces constituant la scène (remarque : S fait partie de A). F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 5/49 Méthode de Radiosité Résoudre l’équation de Kajiya en considérant des reflectances parfaitement diffuses uniquement. Source S" S S’ step 1 step 79 Source : http://dudka.cz/rrv F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 6/49

Upload: others

Post on 07-Apr-2022

0 views

Category:

Documents


0 download

TRANSCRIPT

Chapitre 6 : EclairementModélisation 3D et Synthèse

Fabrice Aubert

[email protected]

Master Informatique

2018-2019

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 1 / 49

1 Introduction : modèles d’illuminations

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 2 / 49

Modèles d’illuminations

I Modèle local : on calcule l’intensité en un point donné d’une surface en ne tenant compteque de l’intensité des sources lumineuses. Exemple : modèle de Phong.

I Modèle semi-global : s’appuie sur un modèle local enrichit pour tenir compte des objets dela scène. Exemple : lancer de rayons.

I Modèle global : on tient compte de la contribution de tous les points de la scèneenvironnants pour le calcul de l’éclairement en un point (échanges lumineux entre toutesles surfaces de la scène). Exemple : radiosité.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 3 / 49

Principe du lancer de rayons

I Suivre le chemin inverse de la lumière (but : calculer la couleur en chacun des pixels del’écran).

I Dans sa version simple, on détermine pour chaque point rencontré un éclairement local(i.e. éclairement direct par les sources) auquel on ajoute l’éclairement provenant d’un rayonréfléchi (objet miroir) et d’un rayon transmis (réfraction)⇒ Modèle de Whitted (80).

αα

rayon d’ombrage

Surface2

rayon reflechi

normale au sommet

rayon primaire

Observateur

Surface1

rayon transmis

Source

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 4 / 49

Modèle global : équation de Kajiya

I(x ,x ′) = g(x ,x ′)[

ε(x ,x ′)+∫

Aρ(x ,x ′ ,x ′′)I(x ′′ ,x)dx ′′

](1)

avec

I I(x ,x ′) l’intensité véhiculée de x vers x ′,I g(x ,x ′) la fonction de visibilité entre les points x et x ′ (0 s’il ne se voient pas, sinon g varie

comme l’inverse du carré de la distance entre x et x ′),I ε(x ,x ′) l’intensité propre transférée de x vers x ′,I ρ(x ,x ′,x ′′) est la réflectance bi-directionnelle au point x correspondant aux directions x ′ et

x ′′.I A ensemble des surfaces constituant la scène (remarque : S′ fait partie de A).

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 5 / 49

Méthode de Radiosité

I Résoudre l’équation de Kajiya en considérant des reflectances parfaitement diffusesuniquement.

Source

S"

SS’

step 1 step 79

Source : http://dudka.cz/rrvF. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 6 / 49

Ombres portées

I Il s’agit, au point considéré, de l’occultation d’une source lumineuse par d’autres élémentsde la scène.

I Objet récepteur : l’objet qui subit l’ombre d’un autre objet (celui qui "reçoit" l’ombre portée).

I Objet emetteur : l’objet qui provoque l’ombre.

I Intrinsèque au lancer de rayons et à la radiosité.

I Plus délicat en rendu projectif (OpenGL) : depth map, shadow volumes.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 7 / 49

Autres méthodes d’éclairement

I Méthodes hybrides lancer de rayon (spéculaire, transparence) + radiosité (diffus)

I Radiosité étendue : résolution de l’équation de kajiya avec modèle diffus compléxifié(BRDF).

I Photon mapping : diffuser des « photons » en partant des sources ; stockage directementsur les surfaces de l’énergie reçue ; rediffusion pour le spéculaire ; puis lancer de rayons encalculant l’éclairement selon l’énergie stockée « autour du point d’intersection »(rendu decaustique).

I Modèle volumétrique pour simulation d’atmosphère.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 8 / 49

2 Modèle local de Phong

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 9 / 49

Données

I Position des sources. Position de l’observateur.

I Le vecteur V est appelé vecteur d’observation, le vecteur L est appelé vecteurd’éclairement.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 10 / 49

Réflexion diffuse 1/2

I On suppose qu’un objet (un matériel) diffuse la lumière reçue de manière uniforme danstoutes les directions.

I La lumière (i.e. la couleur) perçue ne dépend donc pas de la position de l’observateur.

I L’intensité diffusée dépend des caractéristiques du matériel (matériel rouge =« beaucoup »de rouge diffusé, matériel noir = aucune intensité diffusée, etc).

I ⇒ Définition d’un coefficient de matériel kd = (rouge,vert,bleu) pour définir cettecaractéristique (toujours ∈ [0,1]).

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 11 / 49

Réflexion diffuse 2/2

I L’intensité diffusée dépend de l’angle d’incidence des rayons lumineux sur la surface del’objet

• un éclairement direct (i.e. la lumière arrive orthogonalement à la surface) donne unediffusion maximale.

• un éclairement fuyant (i.e tangent à la surface) donne un éclairement nul.• on souhaite que la diffusion varie « continuement »entre ces 2 positions de la manière

la plus réaliste possible.• ⇒ prise en compte de la normale (i.e. vecteur orthogonal) à la surface au point P.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 12 / 49

Calcul du diffus

I On suppose N et L sont normés (‖N‖= ‖L‖= 1).

I Le calcul de l’intensité du diffus par cos(N,L) = L ·N est un « bon »choix.

I On donnera une couleur de réflexion diffuse Kd pour indiquer la couleur réfléchie par lematériel.

⇒ Couleurdiffus(P) = Kd (N ·L)

I seul le « coté »dirigé par la normale est éclairé (si N ·L < 0 alors éclairement nul).

I ⇒ important de spécifier correctement les normales.

I Composante Kd=(rouge,vert,bleu) couleur souhaitée pour le matériel.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 13 / 49

Interpolation de Gouraud

I On calcule l’éclairement uniquement aux sommets.

I ⇒ obtention d’une couleur en chaque sommet.

I La couleur des pixels lors de la rasterization est alors simplement obtenue par interpolationdes couleurs (varying).

I Approximation satisfaisante par rapport à un calcul sur chacun des pixels des triangles 3D.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 14 / 49

Orientation de la normale pour l’éclairement

I Un point P sera éclairé uniquement si sa normale N et le vecteur d’éclairement L sontorientés dans le "même sens" (N ·L > 0)

I Un point P FRONT (i.e. dont on voit la face directe) sera éclairé avec la normale N

I Un point P BACK sera éclairé avec l’opposée −N.

I ⇒ attention à la cohérence de l’orientation directe/indirecte pour l’ensemble des faces etau sens de la normale associée à chaque sommet.

Ces critères sont issus de l’étude des cas qui peuvent se présenter pour être toujours cohérent.Par exemple :

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 15 / 49

Eclairement ambiant

I Lorsqu’un point n’est pas directement éclairé par une source, il apparaitra complêtementnoir.

I On contre ce problème en donnant une couleur constante aux objets⇒ matériel ambiant.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 16 / 49

Vertex Shader

i n vec3 p o s i t i o n ;i n vec3 normal ;

uni form mat4 modelviewMatr ix ;uni form mat3 normalMatr ix ;uni form mat4 mvp ; / / p r o j e c t i o n M a t r i x∗modelviewMatr ix

uni form vec3 l i g h t P o s i t i o n ;uni form vec3 m a t e r i a l D i f f u s e ;uni form vec4 mater ia lAmbient ;

out vec4 fCo lo rFron t , fColorBack ;

void main ( ) {vec4 pos i t ionEye ;vec3 V, L ,N;f l o a t d i f f u s e I n t e n s i t y F r o n t , d i f f u s e I n t e n s i t y B a c k ;/ / compute l i g h t i n g data i n Eye coord ina tes :pos i t ionEye=modelviewMatr ix∗vec4 ( pos i t i on , 1 ) ;V=−pos i t ionEye . xyz / pos i t ionEye .w;L= l i g h t P o s i t i o n +V;N=normalMatr ix∗normal ;

/ / normal ize a l l vec to rsL=normal ize ( L ) ; V=normal ize (V ) ; N=normal ize (N ) ;

/ / d i f f u s e i n t e n s i t y f o r f r o n t and backf l o a t NdotL=dot (N, L ) ;d i f f u s e I n t e n s i t y F r o n t =max( NdotL , 0 ) ;d i f f u s e I n t e n s i t y B a c k =max(−NdotL , 0 ) ;

/ / co l o r = ambient + d i f f u s e ( d i s t i n c t ma te r i a l s f o r f r o n t and back could be def ined )fCo lo rF ron t = d i f f u s e I n t e n s i t y F r o n t∗vec4 ( ma te r i a lD i f f use ,1 )+ mater ia lAmbient ;fColorBack= d i f f u s e I n t e n s i t y B a c k∗vec4 ( ma te r i a lD i f f use ,1 )+ mater ia lAmbient ;

g l _ P o s i t i o n =mvp∗vec4 ( pos i t i on , 1 ) ;}

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 17 / 49

Fragment Shader

i n vec4 fCo lo rF ron t ;i n vec4 fColorBack ;

out vec4 f ragCo lo r ;

void main ( ) {i f ( g l_FrontFac ing ) {

f ragCo lo r= fCo lo rF ron t ;}else {

f ragCo lo r=fColorBack ;}

}

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 18 / 49

Spéculaire

I La spécularité traduit l’aspect « brillant »de l’objet.

I La réflexion spéculaire provient de la réflexion (au sens « miroir ») des rayons lumineux surl’objet.

I ⇒ on considère alors la direction miroir R du vecteur d’éclairement L (R est le symétriquede L par rapport à N).

I L’intensité de la réflexion spéculaire est maximale dans la direction R et est atténuée autourde cette direction R.

⇒ L’intensité perçue (i.e. la couleur) par l’observateur va donc dépendre de sa position parrapport à la direction R.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 19 / 49

Calcul de R

I H = (L.N)N (interprétation du produit scalaire par projection) et 2H = L+R (diagonalesse coupent en leur milieu).

I ⇒ R = 2(L ·N)N−L

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 20 / 49

Calcul spéculaire

I Le calcul de V .R (cosinus de l’angle entre V et R) donne une approximation correcte del’effet spéculaire (maximal dans la direction si R dirigé directement sur l’observateur ;atténué autour).

I Comme pour le diffus : on affecte une caractéristique Ks = (rouge,vert,bleu) pour lematériel.

I Ne pas oublier : tous les vecteurs doivent être normés (V .R = cos(V ,R) ∈ [−1,1])

⇒ CouleurSpéculaire(P) = Ks(V ·R)

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 21 / 49

Résultat

I Le calcul du spéculaire donne une « tache »lumineuse sur l’objet (conséquence de laréflexion des rayons lumineux).

I Pour accentuer ou atténuer l’effet autour de la direction principale, on donne également uncoefficient de brillance s.

I ⇒ CouleurSpéculaire(P) = Ks(V ·R)s

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 22 / 49

Spéculaire et Gouraud

I Spéculaire : très mal rendu s’il est calculé uniquement au sommet puis interpolé.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 23 / 49

Interpolation de Phong

I On calcule l’éclairement spéculaire en chacun des pixels (donc dans le fragment shader).

I Les vecteurs L,V ,N sont interpolés linéairement par rapport aux valeurs aux sommets(L,V ,N définies comme varying).

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 24 / 49

3 Ombres portées avec Depth Map(réalisation OpenGL)

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 25 / 49

Principe

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 26 / 49

Capturer la visualisation depuis la source lumineuse

I Placer la caméra sur la source lumineuse puis tracer la scène.

I Tracer la scène directement dans une texture (technique "render to texture").

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 27 / 49

Render to texture

I Définition d’un frame buffer object et attachement d’un color buffer et d’un depth buffer (quipeuvent être des textures).

I Exemple :

/ / t ex tu reCo lo r e t tex tureDepth = 2 tex tu res ( de même dimensions )/ / tex tureDepth d o i t ê t r e en format GL_DEPTH_COMPONENT/ / generate fboglGenFramebuffers (1 ,& _idFrame ) ;g lBindFramebuf fer (GL_FRAMEBUFFER, _idFrame ) ;

glFramebufferTexture2D (GL_DRAW_FRAMEBUFFER,GL_COLOR_ATTACHMENT0,GL_TEXTURE_2D, tex tu reCo lo r . i d ( ) , 0 ) ;g lFramebufferTexture2D (GL_DRAW_FRAMEBUFFER,GL_DEPTH_ATTACHMENT,GL_TEXTURE_2D, textureDepth . i d ( ) , 0 ) ;

g lB indFramebuf fer (GL_FRAMEBUFFER, 0 ) ;

I (nombreuses autres possibilités !)

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 28 / 49

Render to texture

Texture _depthMap ;FrameBufferObject _ r t t ;

void i n i t i a l i z e ( ) {_ r t t . c rea te (512 ,512) ;_ r t t . at tachDepth (&_depthMap ) ;

}

void draw ( ) {_ r t t . begin ( ) ;g lC lea r (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ) ;apply ( _l ightCamera ) ; / / p r o j e c t i o n M a t r i x / modelviewMatr ixdrawObjects ( ) ;_ r t t . end ( ) ;/ / => _depthMap c o n t i e n t l es profondeurs de chaque p i x e l .

}

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 29 / 49

Test de visibilité

I On suppose la depth map disponible : elle stocke toutes les profondeurs de la scène vue depuis la source lumineuse.I Lors du tracé "normal" de la scène, on projette chaque sommet sur la texture⇒ on obtient les coordonnées

normalisées incluant la profondeur (cf calcul sur transparent suivant).I Exemple : projeter B⇒ obtention de BD de coordonnées (s, t, rB).I Comparer la profondeur (rB sur l’exemple) avec celle stockée dans la depth map (r ′B ) pour en déduire si le point est

éclairé ou non.I Exemple : pour B la valeur stockée est r ′B . Elle est plus petite, donc on sait que B est occulté. Pour A les profondeurs

seront égales : A est éclairé.I Tout ce traitement est effectué dans les shaders (cf TP pour mise en oeuvre).

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 30 / 49

Changement de repère sur Depth Map

Lors du tracé, il faut, à partir des coordonnées de chaque sommet (x ,y ,z) (repère Local),retrouver ses coordonnées dans la Depth Map (i.e. les coordonnées de sa projection sur ladepth map ; noté repère Texture).I Calcul des coordonnées de texture selon les positions :

strq

Texture

= MTexture→Local

xyzw

Local

où MTexture→Local =

as bs cs dsat bt ct dtar br cr draq bq cq dq

(matrice de passage du repère texture au repère objet).

I Le texel final a pour coordonnée ( sq ,

tq ,

rq ) (passage en NDC)

I Projection perspective depuis la source lumineuse :

MTexture→Local = ProjectionLight MLight→World MWorld→Local

les sommets de la scène ont lescoordonnées de textures calculéesavec MTexture→Local pour la texture"diapositive"

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 31 / 49

4 Mise en oeuvre d’un lancer de rayons

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 32 / 49

Principe

I Suivre le chemin inverse de la lumière en partant de l’oeil.

I Trouver la couleur de chaque pixel.

I Rayon = droite définie par (oeil, pixel) (rayon dit primaire).

I Calculer la couleur du pixel en trouvant l’intersection de ce rayon avec la scène.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 33 / 49

Rayon primaire

I Une fois le point P trouvé (i.e. intersection la plus proche de l’oeil et devant l’écran), oncalcule sa couleur.

I On peut se contenter d’un éclairement local (calcul par Phong par exemple avec lesdirections d’éclairement L1 et L2).

I Remarque : il faut retenir l’objet dont P appartient pour avoir la normale, lescaractéristiques de matériaux, etc...

I Remarque : le principe contient intrinsèquement l’élimination des parties cachées (lacouleur provient de l’intersection la plus proche).

I Problème principal du lancer de rayon : calculer l’intersection d’une droite avec la scène.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 34 / 49

Eclairement semi-global

I Une fois l’intersection avec la scène mis en place, on peut aisément compléxifierl’éclairement. L’éclairement de P provient (éventuellement) de :

• L’éclairement direct par une source (éclairement local, par exemple Phong).• L’éclairement indirect par d’autres objets : réflexion (objet spéculaire) et réfraction

(objet transparent).• Une source peut être occultée par un autre objet (ombres portées).

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 35 / 49

Principe récursif

I On peut se retrouver confronté à une récursivité infinie (exemple : 2 miroirs face à face).

I ⇒ limiter selon une profondeur maximale.

I ⇒ limiter selon le cumul des contributions (si la contribution devient négligeable : arréter lecalcul).

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 36 / 49

Calcul d’éclairement en chaque pixel

I Il suffit d’itérer pour tous les pixels de l’écran :

Pour t o u t p i x e l _ i =( x_i , y_ i ) f a i r erayon_pr imai re = Ray ( eye , p i x e l _ i ) ;cou leur ( p i x e l _ i )= computeRayColor ( rayon_pr imaire , 1 0 , 1 ) ; / / t rans fo rmer dans l e repère wor ld/ / i . e . profondeur r é c u r s i v i t é maximale = 10 , c o n t r i b u t i o n = 1

Fin Pour

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 37 / 49

Calcul d’éclairement pour un rayon donné

Couleur computeRayColor(Ray d, int level, float contribution) {Si level=0 ou contribution<CONTRIBUTION_MIN alors

resultat=noir;Sinon

P=intersection(d,scene); // + retenir les caractéristiques de l’intersection (matériel, normale,...)Si P=Vide alors resultat=noir;Sinon

couleur=noir;// rayons d’ombre et Phong :Pour toute source s_i faire

Si intersection(Ray(P,S_i),scene) non Vide Alorscouleur = couleur+computeLocalColor(P,S_i); // Phong

Fin SiFin Pour// rayons secondaires :couleur=couleur+

computeRayColor(Ray(P,Réfléchi),level-1,contribution*alpha_P_Refracte);couleur=couleur+

computeRayColor(Ray(P,Transmis),level-1,contribution*alpha_P_Reflexion);resultat=contribution*couleur;

Fin Si}

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 38 / 49

Intersections : changement de repères du rayon

I Equation du rayon (droite) : P = A+λu

I Pour les calculs d’intersections : on calcule les rayons dans le repère le plus simplepossible (calcul du rayon dans le repère local de l’objet à intersecter).

I On transforme alors A et u pour obtenir l’équation dans le repère souhaité.

I ⇒ si M1→2 est le passage de 1 à 2, et P2 = A2 +λu2 est le rayon dans le repère 2, alorsP1 = M1→2A2 +λM1→2u2 est l’équation du rayon dans le repère 1.

I Le λ est indépendant du repère !

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 39 / 49

Calcul du rayon primaire

I Données :

• Pixel i par lequel passe le rayon = (xi ,yi) connu en window coordinates.• Données de la caméra : viewport, matrice de projection (frustum, ortho, ...), et

positionnement (i.e. MWorld→Eye).

I Calcul :

1 Pixel en coordonnées normalisées : application inverse du viewport sur xi et yi , etposer zndc =−1 (z de l’écran)⇒ (xndc ,yndc ,zndc).

2 Pixel en coordonnées Eye : application de la matrice inverse de projection⇒ (xEye,yEye,zEye)

3 Origine du rayon : A = (0,0,0)4 Direction du rayon : u = (xEye,yEye,zEye).5 Transformation du rayon dans le repère world en appliquant MWorld→Eye.6 Transformation du rayon dans le repère local de chaque objet à intersecter en

appliquant MLocal→World .

I ⇒ intersection la plus proche donnée par minλ tels que λ > 1 (visible).

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 40 / 49

Rayon d’ombre

I A = P (point d’intersection avec rayon incident), u =−−−−−→P Source

I « Plus proche »signifiera minλ tel que λ > 0.

I Problème d’imprécision numérique :

• Résolution par epsilon : problème pour déterminer le bon epsilon.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 41 / 49

Rayons secondaires

Normale Observateur

Source lumineuse

Direction

DNR

L

Réfléchi

Transmis

I A = P (point d’intersection avec rayon incident), u = R pour réfléchi ou T pour réfracté.

I Direction réfléchie : à un signe près, nous l’avons déjà vu pour l’éclairement :R =−2(D ·N)N +D.

I Direction transmise par réfraction : application de la loi de descartes :T = M1/M2 ∗D+[M1/M2 ∗ (D.N)−

√1.0− (M1/M2)2 ∗ (1.0− (D.N)2)]N

I Au delà d’un angle d’incidence critique, la réfraction devient réflexion (i.e. lorsque1.0− (M1/M2)

2 ∗ (1.0− (D.N)2)< 0).

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 42 / 49

Intersection arbre CSG

I Représentation bien adaptée au lancer de rayon (algo d’intersection en exercice :intersection dans le repère des feuilles, puis tri des λ par fusion).

I ... à condition que les primitives soit « simples ».

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 43 / 49

Intersection B-rep polygonaux

I Uniquement des intersections de droites avec des plans (et localisation dans les facettes).

I Il faut prendre garde à éviter les problèmes liés aux erreurs numériques, en tenant comptede la topologie des objets (cas de 2 triangles adjacents par exemple).

I Calcul de la normale en l’interpolant avec les valeurs aux sommets.

I Il est rapidement nécessaire de mettre en place des techniques d’accélérations pour éviterles nombreux calculs (nombreux polygones).

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 44 / 49

Intersection surfaces polynomiales

I Si on obtient une équation polynomiale en λ de degré plus petit que 5, on peut tenter larésolution brutale par radicaux (instabilités numériques peuvent devenir critiques).Exemple : surface composées de patches de béziers cubiques⇒ résolution d’uneéquation de degré 3.

I Adopter des méthodes itératives de résolution.

I Exemple : dichotomie en (u,v) sur une surface de Bézier en exploitant la propriétéd’enveloppe convexe et de normalisation.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 45 / 49

Accélérations

Volumes englobants

Volumes englobants

Objets de la scene

Observateur

Partition de l’espace

Observateur

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 46 / 49

Volumes englobants

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 47 / 49

Hiérarchie de volumes englobants

⇒ « descendre »dans les niveaux de précision si une intersection avec une sphère est trouvée.Principal problème : construire la hiérarchie automatiquement.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 48 / 49

Partition de l’espace

Observateur

I Le rayon « avance »de cube en cube (lancer de rayon dit discret : parcours du rayonincrémentalement)

I Si un objet se trouve dans un cube :

• ou bien on effectue l’intersection avec l’objet.• ou bien on augmente en résolution (éventuellement hiérarchiquement).

I Principal problème : énumération des objets dans les cubes.

F. Aubert M3DS/ Chapitre 6 : Eclairement Master Informatique2018-2019 49 / 49