• Nie Znaleziono Wyników

Cieniowanie i oświetlenie

N/A
N/A
Protected

Academic year: 2021

Share "Cieniowanie i oświetlenie"

Copied!
8
0
0

Pełen tekst

(1)

Cieniowanie i oświetlenie

Marcin Orchel

1 Wstęp

Zakładamy, że każde światło wpływa na finalny kolor każdego fragmentu.

1.1 Cieniowanie

1.1.1 Cieniowanie płaskie

Określenie koloru wielokąta przy użyciu danych wygenerowanych tylko dla jednego z jego wierzchołków – wierzchołka głównego. Następnie ten sam kolor jest używany do pozostałych punktów prymitywu.

Możemy ustawić czy brany jest pod uwagę pierwszy czy ostatni wierzchołek prymi- tywu.

1.1.2 Cieniowanie Gourauda (gładkie)

Oblicza wartości oświetlenia dla poszczególnych wierzchołków, a następnie interpoluje wynikowe kolory między wierzchołkami. Wartości kolorów są interpolowane liniowo w przestrzeni kolorów. Wada: pasma Macha - uwypuklenie zmiany jasności sąsiednich, nieciągłych obszarów cieniowanych obiektów, czyli np. rozjaśnianie krawędzi wielokątów (efekt budowy ludzkiego oka).

Dla punktu trójkąta, można wyliczyć odległości od poszczególnych wierzchołków i obliczyć średnią ważoną dla kolorów wierzchołków, ważoną tymi odległościami. Alter- natywnie możemy wykonać interpolację w 3 wymiarach, trójkąt jest umieszczony na płaszczyźnie OXZ, wartość funkcji to wartość koloru. Znajdujemy płaszczyznę przecho- dzącą przez te 3 punkty.

1.1.3 Cieniowanie Phonga

Interpolujemy normalne w każdym punkcie i następnie obliczamy oświetlenie dla każdego punktu. Stosujemy cieniowanie Gourauda do wektorów normalnych wierzchołków.

1.2 Modele oświetlenia

Funkcja rozkładu odbicia zależy od kierunku padania światła oraz kierunku odbicia światła.

Równanie oświetlenia.

(2)

Materiały. Parametry

1. ambient - współczynnik odbicia światła otoczenia M a 2. diffuse - współczynnik odbicia światła rozproszonego M d 3. specular - współczynnik odbicia światła zwierciadlanego M s 4. shininess - wykładnik współczynnika funkcji rozbłysku M sh

Współczynnik M d ∈ [0, 1] i określa jaki procent energii światła padającego na po- wierzchnię ulega odbiciu.

Rodzaje źródła światła

1. światło kierunkowe, określone przez wektor

2. światło punktowe, parametrami są położenie i zasięg Dodatkowo mamy światło reflektorowe

Parametry źródła światła

1. ambient - intensywność światła otoczenia L a 2. diffuse - intensywność światła rozproszonego L d 3. specular - intensywność światła zwierciadlanego L s

4. position - położenie światła punktowego lub wektor kierunku światła kierunkowego (skierowany do źródła światła)

5. constantAttenuation, linearAttenuation, quadraticAttenuation - współczynnik tłu- mienia atmosferycznego światła, stały, liniowy i kwadratowy k c , k l , k q

Tłumienie atmosferyczne światła powoduje ograniczenie zasięgu światła punktowego, współczynnik tłumienia to

att = 1

k c + k l LV ~ + k q LV ~ 2

(1)

gdzie | ~ LV | to długość wektora od źródła światła L do oświetlanego wierzchołka V Światło otoczenia nie pochodzi z żadnego konkretnego kierunku.

Globalne światło otoczenia obliczane jest jako

I ga = G a M a (2)

gdzie G a to intensywność globalnego światła otoczenia, M a to współczynnik odbicia światła otoczenia przez materiał.

Intensywność światła otoczenia L a , która wpływa lokalnie na światło otoczenia

I la = L a M a (3)

A więc mnożymy wartość światła otoczenia przez właściwość materiału dotycząca koloru otoczenia.

Wektory normalne mogą być obliczane dla wierzchołka jako średnia dla wszystkich

trójkątów zawierających dowolną krawędź wychodzącą z tego wierzchołka.

(3)

1.3 Model oświetlenia Lamberta

Światło rozproszone to kierunkowy komponent źródła światła. Prawo Lamberta jest prawdziwe dla powierzchni matowych, które rozpraszają światło w jednakowy sposób we wszystkich kierunkach i dlatego wydają się jednakowo jasne, niezależnie od kąta patrzenia.

Odbicie światła bez efektu połysku. Zgodnie z prawem Lamberta (cosinusów) k Lambert =

N ~ ~ L cos θ (4)

gdzie ~ L to wektor kierunku światła, ~ N to wektor normalny powierzchni, k Lambert to współczynnik odbicia światła rozproszonego, a θ to kąt pomiędzy wektorami N i L. Gdy wektor L ma kierunek przeciwny to

k Lambert = ~ N · ~ L (5)

Równanie oświetlenia w modelu Lamberta

I Lambert = I ga + att  I la + L d M d  N · ~ ~ L  (6) A więc też mnożymy wartość rozproszenia materiału i wartość światła, ale przeskalowu- jemy ten iloczyn o iloczyn skalarny normalnej do powierzchni i wektora światła.

1.4 Model oświetlenia Blinna-Phonga

Opisuje odbicie zwierciadlane światła od powierzchni błyszczących. Uwzględniane jest również odbicie rozproszone. Światło odbicia lustrzanego powoduje rozbłysk odbicia lu- strzanego, czuli bardzo jasnego punktu na powierzchni.

Obliczamy wektor połówkowy, który jest wypadkowym wektorem wektora kierunku światła L oraz wektora E określającego kierunek patrzenia obserwatora na oświetlany wierzchołek. Obliczamy go jako normalizowaną sumę wektorów L i E. Wektor L to wektor od cieniowanego punktu w kierunku źródła światła.

H = ~ ~ L + ~ E

~ L + ~ E

(7)

Równanie oświetlenia to I Blinn−P hong = I ga + att



I la + L d M d  N · ~ ~ L  + L s M s  H · ~ ~ E  M

sh



(8)

1.5 Model oświetlenia Phonga

Każdy obiekt ma materiał składający się z trzech właściwości oświetlenia: otoczenia,

rozproszenia i odbicia lustrzanego.

(4)

Zamiast wektora połówkowego stosowany jest wektor odbicia zwierciadlanego R taki, że kąt pomiędzy wektorami N i L jest taki sam jak między R i N (kąt θ). Kąt pomiędzy wektorami E i R to kąt α. Wektor R jest obliczany jako

R = 2 ~ ~ N  L · ~ ~ N  − ~ L (9) przy założeniu, że wektory L i N są normalizowane. Wektor R powstaje w ten sposób, że wektor −L odbijamy względem płaszczyzny, której normalną jest wektor N , a zatem wektor R będzie leżał na płaszczyźnie zdefiniowanej przez N i wektor L. Stąd właśnie możemy zauważyć, że kąt pomiędzy R i N jest równy kątowi pomiędzy N i L. Możemy alternatywnie odbić wektor L względem wektora N .

Równanie oświetlenia to I P hong = I ga + att



I la + L d M d  N · ~ ~ L  + L s M s  R · ~ ~ E  M

sh



(10)

1.6 Efekt obwódki świetlnej

Jest to aproksymacja efektu przenikania koloru na krawędziach, który to efekt zależy od materiału. Źródło światła znajduje się z tyłu obiektu. Oświetlenie to

L trim = C trim  1.0 − ~ N · ~ E  P

rim

(11) gdzie C trim to skalarna jasność, a P rim to wykładniczy współczynnik ostrości. Dodajemy to do równania oświetlenia.

1.7 Oświetlenie reflektorowe

Parametry: wykładnik tłumienia kątowego - szybkość zanikania światła poza powierzch- nią boczną stożka, kąt odcięcia - rozwartość stożka. W implementacji sprawdzamy kąt pomiędzy wektorem od źródła światła do obiektu ~ L, a kierunkiem reflektora.

1.8 Cienie

1.8.1 Rzutowanie cieni

Cień jest rzutem oświetlanego obiektu na zacienioną płaszczyznę. Wada musimy rzuto- wać obiekt na każdą płaszczyznę z osobna na której może pojawić się cień.

Mamy dany wierzchołek V

V = (V x , V y , V z , V z ) (12) oraz źródło światła

L = (L x , L y , L z , L z ) (13) Mamy równanie płaszczyzny na którą rzutujemy (rzutnia)

P : ax + by + cz + dw = 0 (14)

(5)

Współrzędne rzutu wierzchołka V to

V 0 = L − V w

a b c d

L

a b c 0

(V − L)

(15)

Stosuje się macierz rzutowania perspektywicznego cienia obiektu

D − aL x −bL x −cL x −dL x

−aL y D − bL y −cL y −dL y

−aL z −bL z D − cL z −dL z

−aL w −bL w −cL w D − dL w

(16)

gdzie

D = h a b c d i L (17)

Dla światła punktowego mamy L w = 1, dla światła kierunkowego L w = 0, kierunek światła to

L x L y

L z

 (18)

1.8.2 Bryły cieni

Cień reprezentowany jest przez bryłę w przestrzeni trójwymiarowej, obejmującą te frag- menty przestrzeni sceny, do których nie dochodzi światło. Cienie mogą być odwzory- wowane na dowolnych powierzchniach. Zazwyczaj taka bryła jest ostrosłupem ściętym.

Najpierw musimy dokonać detekcji krawędzi szkieletowych widocznych z punktu widze- nia źródła światła. Jak sprawdzić czy dana ściana obiektu jest widoczna? Sprawdzamy wartość równania płaszczyzny (margines funkcyjny). Wartość dodatnia oznacza widocz- ność. Dla światła kierunkowego sprawdzamy znak iloczynu skalarnego wektora normal- nego ściany i wektora kierunku źródła światła. Następnie sprawdzamy każdą krawędź widocznej ściany.

Bryła cienia zawiera domknięcie przednie złożone z oświetlonych prymitywów oraz domknięcie tylne stanowiące podstawę ostrosłupa ściętego tworzącego bryłę cienia. Bryła cienia może być skończona lub nieskończona (domknięcie tylne znajduje się w nieskoń- czoności).

Informacje dodatkowe: algorytm depth-pass, depth-fail.

(6)

1.9 Wprowadzenie do WebGL

Sprawdzenie czy przeglądarka internetowa obsługuje WebGL http://caniuse.com/

#feat=webgl.

WebGL bazuje na OpenGL ES.

Aby włączyć obsługę webGL w Firefox 52 należy na stronie about:config zmienić webgl.disabled na false. Dodatkowe informacje o grafice można sprawdzić na stronie about:support w zakładce Graphics.

Można sprawdzić czy webGL zostało poprawnie włączone np. uruchamiając grę http://hexgl.bkcore.com.

2 Pytania

Czy interpolacja za pomocą współrzędnych barycentrycznych jest tożsama z interpolacją za pomocą współrzednych kartezjańskich?

Mam dane wartości funkcji f w wierzchołkach trójkąta f 1 , f 2 i f 3 . Chcemy interpolo- wać funkcję f w innych punktach trójkąta. Pomysł polega na obliczeniu średniej ważonej współrzędnych barycentrycznych

z = u 1 f 1 + u 2 f 2 + u 3 f 3 (19) Jest to interpolacja liniowa we współrzędnych barycentrycznych. Pytanie czy to roz- wiązanie będzie tożsame z interpolacją punktów trójwymiarowych płaszczyzną? Mamy 3 punkty trójkąta V (v 1 , v 2 ), W (w 1 , w 2 ) i Z(z 1 , z 2 ). Współrzędne kartezjańskie możemy znaleźć za pomocą układu równań

V 1 u 1 + V 2 u 2 + f 1 u 3 = x (20) W 1 u 1 + W 2 u 2 + f 2 u 3 = y (21) Z 1 u 1 + Z 2 u 2 + f 2 u 3 = z (22) Ponieważ wiemy, że gdy mamy Au = x, to u = A −1 x. A więc widzimy, że u jest funk- cją liniową wektora x, a więc pomnożenie u 1 f 1 będzie funkcją liniową x, oraz suma u 1 f 1 + u 2 f 2 + u 3 f 3 będzie funkcją liniową. A więc uzyskamy płaszczyznę. Czy ta płasz- czyzna przechodzi przez wierzchołki trójkąta? W średniej ważonej wartość z otrzymuje- my dokładnie taką jak wartość wierzchołka, więc po konwersji współrzędnych ta wartość pozostanie taka sama.

3 Zadania

3.1 Zadania na zajęcia

• zmienić wierzchołki główne pierwsze na ostatnie w cieniowaniu płaskim

• porównać cieniowanie płaskie z gładkim

(7)

• przetestować różne predefiniowane materiały zdefiniowane w opengl

• przetestować różne położenia obserwatora

• przetestować model oświetlenia Lamberta dla światła kierunkowego i punktowego, zmieniać wszystkie wartości parametrów dla różnych kolorów

Wskazówki

– możemy ustawić intensywność światła zwierciadlanego na 0 w modelu Blinna- Phonga

– można zmniejszyć liczbę źródeł światła do 1

• przetestować model oświetlenia Blinna-Phonga dla światła kierunkowego i punk- towego

• przetestować różne kierunki źródła światła zdefiniowane za pomocą obrotu

• przetestować cieniowanie algorytmami Gourauda i Phonga dla różnej liczby trój- kątów, pokazać pasma Macha

• przetestować różne położenia źrodła światła punktowego

• przetestować model oświetlenia Phonga dla światła kierunkowego i punktowego

• porównać modele oświetlenia dla różnych materiałów

• zbadać przypadki szczególne w modelu Phonga (przeanalizować różne wartości iloczny skalarnego ~ R · ~ E)

• przetestować modele oświetlenia z różnymi kolorami źródła światła

• dodać implementację obwódki świetlnej

• przetestować efekt obwódki świetlnej, kiedy źródło światła punktowego znajduje się z tyłu obiektu

• zmienić program tak aby obliczenia oświetlenia były wykonywane w układzie współ- rzednych obiektu

• przetestować oświetlenie reflektorowe http://galaxy.agh.edu.pl/~alda/Wstep_

do_grafiki_komp_2017/

• przetestować rzutowanie cieni http://jsfiddle.net/Q4uqE/5/, http://learningthreejs.

com/data/casting-shadows/

• przetestować bryły cienia https://regl-project.github.io/regl/www/gallery/

shadow-volume.js.html

• parametr att możemy zmienić we wzorze w projekcie Light3, np. licznik

(8)

• parametr M sh jest zdefiniowany dla materiału Wskazówki

• oświetlenie obliczamy w układzie współrzędnych obserwatora 3.2 Zadania domowe na plusa

• zadania znajdują sie w moodle

Cytaty

Powiązane dokumenty

Figure III.2: Di usely re e ted light is re e ted equally brightly in all dire tions.. The double line is a beam of in

Rys. Rozszczepienie światła białego. Składowa niebieska jest załamywana silniej niż składowa czerwona. a) Przy przejściu z powietrza do szkła kąt załamania składowej

Wyznacz wartości parametru m, dla których równanie ma dwa różne pierwiastki o różnych znakach.. Wyznacz wartości parametru m, dla których równanie ma dwa różne pierwiastki

Następnie nałóż maskę na włosy, owiń ręcznikiem (możesz najpierw owinąć włosy folią) i trzymaj tak przez minimum pół godziny.. Jeśli mieszanka zostanie na głowie dłużej

W przypadku relacji dotyczących systemu egzekucji prawa zakres czasowy dostępnych danych jest znacznie krótszy: od zaledwie ośmiu obserwacji dla przestępstwa ściganego z artykułu

- Pyły organiczne pochodzenia zwierzęcego i roślinnego z wyjątkiem pyłów drewna oraz mąki. -

Natura: Produkty GreenCoat® wykorzystują powłokę wykonaną w biotechnologii, która wykorzystuje znaczną część szwedzkiego oleju rzepakowego zamiast oleju kopalnego, co jest

Dla operatorów samosprzężonych obraz numeryczny jest rzeczywisty, jego kresy należą do widma, widmo zawiera się w domknięciu ob- razu numerycznego, więc dla operatora