14 Ray Tracing
-
Upload
andreea-sonea -
Category
Documents
-
view
279 -
download
4
description
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