P1C4 - Modèle d'illumination locale Flashcards Preview

SY32 > P1C4 - Modèle d'illumination locale > Flashcards

Flashcards in P1C4 - Modèle d'illumination locale Deck (25)
Loading flashcards...
1

Modèle HSV

Teinte (degré), saturation, valeur ("diamant")

2

OpenGL

glutInitDisplayMode(GLUT_RGB)
glColor3f(.9,.5,.1)

3

éclairage / illumination

transport de la lumière dans la scène (Phong)

4

ombrage (shading)

considère les valeurs de l'illumination en des points d'une surface et interpole ces valeurs d'après le modèle d'ombrage (flat, Gouraud, Phong)

5

illumination locale/globale

- ne considère que les interactions sources-objets
- considère en plus les interactions objets-objets, forte réflexion spéculaire (effet miroir)

6

Phénomènes objet-lumière

absorption, réflexion (ambiante, diffuse, spéculaire), réfraction, émission (non traité)

7

types de sources lumineuses

- ambiante
- directionnelle (supposé à l'infini, intensité selon distance)
- ponctuelle (point précis, direction dépend du point considéré, dépend de la distance)

8

Lumière ambiante

pour chaque objet, 0≤ka≤1, I=Ia.ka (Ia intensité de la source, ka constante de réflexion ambiante, I intensité du pixel)

9

Réflexion diffuse

Loi de Lambert, intensité proportionnelle au cosinus entre la normale et la direction de la source lumineuse.
I=Ip.kd.max(N.L), avec max(N.L) = max(0,cos⍺) si N, L normalisés N normale, kd constante selon matériau (mat)
Les intensités s'additionnent !
Facteur d'atténuation : fatt.Ip.kd(N.L)

10

Réflexion spéculaire

Prend en compte la position de l'observateur (highlight), surface métallique/brillante. Proportionnel à l'angle entre réflexion et observateur. (R=2N(N.L)-L) n: éclat
I = Ip.kd.max(R.V)^n avec max(R.V) = max(0,cos⍺) si R, V normalisés
ks coefficient de réflexion spéculaire
Facteur d'atténuation fatt.Ip.kd.max(R.V)^n

11

Facteur d'atténuation

Pour réflexions diffuse et spéculaire,
fatt = 1/d² (bof)
fatt = min(1/(C1+C2d+C3d²), 1)
fatt = 1/(d0+d) prise en compte de la position de l'observateur (d0 distance objet-observateur)

12

Modèle de Phong

I = Ia.ka + fatt.Ip(kd(N.L) + ks(R.V)^n)
I = Ia.ka + ∑j fattj.Ipj(kd(N.Lj) + ks(Rj.V)^n)
matière : ka, fatt, kd, ks, V, n
géométrie : fatt, N, L, R, V
source : Ia, fatt, Ip, L, R
vecteurs RGB : Ia, Ip, ka, kd

13

Méthodes d'ombrage

méthode du flat
méthode de Gouraud
méthode de Phong

14

Méthode du flat (ombrage)

ombrage constant pour la facette (calcul en un point), ok si lumière directionnelle et projection parallèle.

15

Méthode de Gouraud (ombrage)

calcul d'intensité pour chaque sommet et interpolation linéaire. Avec lissage : moyenne des normales.

16

Méthode de Phong (ombrage)

Interpolation linéaire des normales puis calcul de l'intensité en tout point. Avec lissage : moyenne des normales pour chaque sommet.

17

openGL

gleanable(GL_LIGHTING);
glShadeModel(GL_FLAT); //constant
glShadeModel(GL_SMOOTH); //gouraud
glLightModel(GL_LIGHT_MODEL_LOCAL_VIEWER, GL_TRUE)
glLightfv(source[4], GL_POSITION, v[4])
glMaterialfv(GL_FRONT_AND_BACK, GL_SPECULAR, v[4])

18

Effet de transparence non réfractive linéaire

Interpolation linéaire (Newell Sancha) : I=(1-k1)I1 + k1.I2
(I1 intensité polygone 1, k1 transparence 0->opaque)
/!\ Incompatible z-buffer

19

Effet de transparence non réfractive non linéaire

Modèle de Kay, prend en compte l'épaisseur de la matière, transparence selon la normale.
k1 = kmin + (kmax-kmin)(1-(1-N.Z)^p)
p: exposant caractéristique de la transparence
kmin kmax valeurs de transparence
N normale à la surface
/!\ Incompatible z-buffer

20

Transparence avec z-buffer

2 passages, 2 tampons (1 pour objets transparents)
- premier passage :
pour tout polygone, si transparent stocker dans une liste, si opaque appliquer algo z-buffer
- second passage :
pour chaque polygone transparent, regarder altitude et comparer à buffer, si z>buffer alors :
> A-buffer : ajouter son facteur de transparence kc dans le tampon knew = f(kold, kc), calculer Inew=koldIold + kcIc
- combiner les deux tampons

21

Transparence réfractive

η1.sinΘi = η2.sinΘt, indices de réfraction, rayon incident et rayon transmis. (L incident côté observateur η1, T transmis, N normale côté η1, T=sinΘt.M-cosΘt.N)
T = [ηr(N.L)-√(1-ηr²(1-(N.L)²)].N-ηrL avec ηr=η1/η2

22

Transparence OpenGL

glColor4f(0,0,1.0,1.0,0.75);
fonctions de combinaison (mélange) :
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // sinon pas de transparence
glBlendEquation(GL_FUNC_ADD);
(permet anti-aliasing)

23

Ombres propres

intégrées au model de Phong

24

Ombres portées

intégrables à Phong : (ajout de Sj)
I = Ia.ka + ∑j Sj fattj.Ipj(kd(N.Lj) + ks(Rj.V)^n)
Sj = 0 si la lumière n'atteint pas le point
Sj = 1 sinon

25

Ombre algorithmes

- algorithme scan-line : projection sur les polygones, créations de polygones d'ombre
- algorithme de calcul d'ombres en 2 passages
>Weiler Atherton nécessite découpage de polygone
>z-buffer nécessite mémoire, doit être optimisé beaucoup de transformations et calcul de pixel non visible
- volumes d'ombre
- calcul de la pénombre (ombres additives)