14 Ray Tracing

Post on 11-Jul-2016

279 views 4 download

description

Ray tracing Ray casting Iluminare

Transcript of 14 Ray Tracing

1

Iluminarea

• Locala– sursele de lumina

– pozitia observatorului

– proprietatile de material

• Globala– interactiunea dintre lumina provenita

de la toate suprafetele scenei

obiect 1

obiect 2obiect 3

obiect 4

2

Iluminare globala – forma simplificata

Zona de

afisareObservator

Raze prinplanul de vizualizare

3

Ray Casting

Zona deafisare

Observator

Raze prinplanul devizualizare

4

Ray Casting

• pentru fiecare fragment

– se construieste raza

observator prin zona de

afisare

– se determina prima

suprafata intersectata

de raza

– se calculeaza culoarea

pixelului bazata pe

culoarea suprafetei

obtinuta la intersectie

Esantioane inplanul de vizualizare

Observator

Raze prin planul devzualizare

5

Ray Casting

RayCasting(Observator, Scena, w, h)

{

for(x=0; x<w; x++)

for(y=0; y<h; y++)

{

construieste raza R(Observator, fragment(x,y));

obiect = intersecteaza raza R cu Scena;

culoare_obiect = determina_culoare(obiect);

ScriePixel(x, y, culoare_obiect);

}

} L L

n

SDAAE IRVKLNKIKII *)))()((

Trebuie calculata N

6

Intersectia Raza - Scena

determina_intersectia(R, Scena)

{

min_t = inf

min_primitiva = NULL;

for fiecare primitiva p din Scena

{

t = intersectie(R, p);

if(t < min_t)

{ min_primitiva = primitiva;

min_t = t;

}

}

}

7

Adaugarea umbrelor

Raza de lumina L – raza de umbra U

Determina intersectiile dintre U si obiectele scenei

Exista obiecte intersectate -> umbra

Altfel -> obiect luminat

Observator

umbra

UU

8

• Calculul iluminarii

• Factor de umbra – SL

– SL = 0 umbra,

SL = 1 iluminata

Adaugarea umbrelor

L LL

n

SDAAE ISRVKLNKIKII ))()((

L L

n

SDAAE IRVKLNKIKII *)))()((

9

Ray Tracing

Eye

Light

Observator

Sursa lumina

10

Ray Tracing

• Simuleaza razele de lumina de la sursa de

lumina la observator

Obs Sursa de lumina

Suprafata

11

Ray-Tracing

• Raze pornesc de la sursa de lumina

• Cost mare

Obs

Zona de afisare

Obiect

Raze de lumina

12

Ray-Tracing (“Backward”)

• Razele pornesc de la observator

Obs

This is what most people mean by “ray tracing”.

Zona deafisare

Obiect

13

Propagarea razei

14

Propagarea razei

Raza observator / primara

Normala

Raza reflectata

Raza refractata

Raza de lumina / umbra

15

Reflexia

( ( ) ( ) )n

E A A D S L L R R T TLI I K I K N L K V R S I K I K I

Lumina reflectata

Coeficient de reflexie

16

Raza refractata

( ( ) ( ) )n

E A A D S L L R R T TLI I K I K N L K V R S I K I K I

Lumina refractata

17

( ( ) ( ) )n

E A A D S L L R R T TLI I K I K N L K V R S I K I K I

Raza refractata

• KT - Coeficient de

transparenta

– KT = 1 translucid

– KT = 0 , opac

– 0 < KT < 1, semi-translucide

Coeficient de

transparenta

18

Ray Tracing

• Constructie raze

• Intersectia razelor cu scena

• Iluminare

• Umbrire

• Reflexii, refractii

19

Calculul razei reflectate

N

LR

α

X

-YY

N.L|L|*|N|

N.L)cos(

N.L )cos()*cos(|L||X|

N.L)N(X

20

Calculul razei reflectate

N

LR

α

X

-YYL - 2X R

XL - X Y - X R

L Y X

L - (N.L)N2 R

21

Calculul razei refractate

• indice de refractie (h )

T

L

T

sin(L) hTsin(T) hL

=

N

L

YX

hT

hL

(N.L)N - L Y

(N.L)N X

X - L Y

L Y X

22

Calculul razei refractate

G Z T

T

L

T

N

L

YX

hT

hL

ZG

)Ncos(- Z T

)sin()sin(

(N.L)N - L - G

)sin( |Y|

(N.L)N - L Y

X - L Y

T

L

L

23

Calculul razei refractate

]N.L)(1[-1)cos(

(N.L) - 1 )(cos - 1 )(sin

)(sin -1 )(sin1 )cos(

(N.L)N] - [L - )Ncos(- T

)sin(

)sin((N.L)N] - [L - )Ncos(- T

2

T2

L2

T

2

L

2

L

2

T

2

T2

L2

T

2

T

T

LT

L

TT

h

h

h

h

h

h

24

Raza refractata

• Suprafete subtiri – poate fi ignorata

modificarea directiei

N

L

Qi

TQr

hr

hi

Qi

T LT

25

Ray Tracing

Pentru fiecare pixel al imaginii

{

calculeaza raza primara, P;

culoare_pixel = TraseuRaza(P, 1);

afiseaza pixelul in culoare_pixel;

}

26

Ray Tracing

Culoare TraseuRaza(Raza R, int n)

{ // n este nivelul de recursivitate

calculeaza intersectiile razei R cu obiectele scenei;

daca(nu exista intersectii), atunci

return (culoare_fond);

altfel

fie I punctul de intersectie cel mai apropiat de

observator si O obiectul intersectat;

calculeaza normala N, in punctul I;

return CuloarePunct(O, R, I, N, n);

}

Ray tracing

27

Culoare CuloarePunct(Obiect O, Raza R, Punct I, Normala N, adancime_arbore n){

Culoare culoare;culoare = culoare_ambianta;pentru fiecare sursa de lumina S executa

calculeaza vectorul L, din I catre Sdaca((Nu·Lu)> 0 si vectorul L nu intersecteaza un obiect opac al scenei) atunci

calculeaza contributia sursei S la culoare, CS, folosind modelul de iluminare localculoare = culoare + CS

daca(n< nivel_max) atuncidaca(obiectul O produce reflexii speculare) atunci

calculeaza raza reflectata in punctul I, RS;culoare = culoare + Ks* TraseuRaza(RS, n+1);

daca(obiectul O este transparent) atuncicalculeaza raza transmisa (refractata) in punctul I, RT;culoare = culoare + Kt* TraseuRaza(RT, n+1);

return (culoare)}

28

Structuri de accelerare a determinarii intersectiilor

• Volume incadratoare

– Ierarhii de volume incadratoare

• Partitii spatiale

– Arbori de partitionare binara

29

Volume incadratoare

•Se verifica intersectia cu volumul incadrator

30

Forma volumelor incadratoare

31

Ierarhii de volume incadratoare

32

Ierarhii de volume incadratoare

33

Ierarhii de volume incadratoare

R