• Nie Znaleziono Wyników

Sze´scian kolorów

W dokumencie Jak działa OpenGL (Stron 28-36)

OpenGL opisuje kolory za pomoc ˛a intensywno´sci ich składowej czerwonej, zielonej i niebieskiej. Intensywno´s´c poszczególnych składowych mo˙ze przyjmowa´c warto´sci z przedziału 0 do 1. Rysunek prezentuje za pomoc ˛a sze´scianu kolorów to, w jaki sposób kombinacje ró˙znej intensywno´sci poszczególnych składowych tworz ˛a spektrum kolorów.

Cieniowanie

Posługuj ˛ac si ˛e przykładem odcinka ł ˛acz ˛acego dwa wierzchołki o ró˙znych kolorach, dla uproszczenia przyjmiemy, ˙ze pierwszy z nich jest w kolorze czarnym, a drugi jest biały.

Jaki b ˛edzie kolor ł ˛acz ˛acego je odcinka ?. Mo˙zna to ustali´c posługuj ˛ac si ˛e modelem cieniowania.

Cieniowanie mo˙ze by´c płaskie lub gładkie. Cieniowanie płaskie wykonywane jest za pomoc ˛a pojedynczego koloru. Zwykle jest to kolor ostatniego wierzchołka (jedynie w przypadku trybu rysowania wielok ˛atów o dowolnej liczbie wierzchołków wybranego za pomoc ˛a stałej GL_POLYGON jest to kolor pierwszego z wierzchołków). Cieniowanie gładkie zwane te˙z cieniowaniem Gouraud stosuje natomiast interpolacj ˛e koloru pikseli odcinka.

Je´sli dla naszego odcinka zastosujemy cieniowanie płaskie, to b ˛edzie on miał kolor biały, poniewa˙z ostatni z wierzchołków odcinka ma taki kolor. Natomiast w przypadku

cieniowania gładkiego kolor pikseli b ˛edzie zmienia´c si ˛e pocz ˛awszy od koloru czarnego

O´swietlenie

Mo˙zna teraz zastanowi´c si ˛e nad tym, w jaki sposób o´swietlenie wpływa na wygl ˛ad obiektów w rzeczywistym ´swiecie. Obraz widziany w oku powstaje na skutek

podra˙znienia siatkówki przez fotony. Fotony te musz ˛a mie´c okre´slone ´zródło, a do oka trafiaj ˛a na skutek odbicia przez ogl ˛adane obiekty. Nie wszystkie fotony, które padaj ˛a na obiekt zostaj ˛a odbite, poniewa˙z cz ˛e´s´c ich zostaje pochłoni ˛eta. Stopie ´n odbicia

padaj ˛acego ´swiatła przez obiekt zale˙zy od materiału z jakiego jest on wykonany. Obiekty, które widziane s ˛a jako połyskuj ˛ace, odbijaj ˛a wi ˛ekszo´s´c ´swiatła. Natomiast obiekty, które pochłaniaj ˛a znaczn ˛a cz ˛e´s´c padaj ˛acego na nie ´swiatła lub odbijaj ˛a j ˛a w takim kierunku,

˙ze nie trafiaj ˛a do oka, odbierane s ˛a jako ciemniejsze.

OpenGL wyznacza efekt o´swietlenia obiektów w podobny sposób. Kolor obiektu zale˙zy od stopnia odbicia przez niego składowej czerwonej, zielonej i niebieskiej padaj ˛acego

´swiatła. Stopie ´n ten OpenGL okre´sla na podstawie rodzaju materiału, na który pada

´swiatło.

O´swietlenie

OpenGL umo˙zliwia modelowanie o´swietlenia za pomoc ˛a czterech komponentów:

´swiatła otoczenia - ´swiatło to przedstawia si ˛e tak, jakby nie posiadało ´zródła (zostało rozproszone w takim stopniu, ˙ze ustalenie jego ´zródła nie jest mo˙zliwe)

´swiatła rozproszonego - ´swiatło to pada z okre´slonego kierunku, ale zostaje odbite przez obiekt równomiernie we wszystkich kierunkach, dzi ˛eki czemu

niezale˙znie od poło˙zenia obserwatora obiekt wydaje si ˛e o´swietlony równomiernie

´swiatło odbicia - ´swiatło pada z okre´slonego kierunku i odbijane jest tak˙ze w jednym kierunku tworz ˛ac efekt odbicia

´swiatło emisji - obiekty wydzielaj ˛ace ´swiatło emisji posiadaj ˛a wi ˛eksz ˛a

intensywno´s´c kolorów (´swiatło emisji nie ma wpływu na wygl ˛ad pozostałych

obiektów, a inne ´zródła ´swiatła nie maj ˛a wpływu na ´swiatło emisji danego obiektu)

O´swietlenie

Swiatło ma równie˙z wpływ na to, ˙ze wi ˛ekszo´s´c nie o´swietlonych obiektów´ trójwymiarowych wygl ˛ada jak płaskie obiekty je´sli nie s ˛a o´swietlone.

Materiały

OpenGL wyznacza kolor obiektu na podstawie stopnia odbicia przez jego materiał

składowej czerwonej, zielonej i niebieskiej ´swiatła. Na przykład powierzchnia w kolorze zielonym odbija w cało´sci składowa zielon ˛a ´swiatła, a pochłania składow ˛a czerwon ˛a i niebiesk ˛a. Je´sli wi ˛ec b ˛edzie pada´c na ni ˛a ´swiatło posiadaj ˛ace wył ˛acznie składow ˛a czerwon ˛a, to b ˛edzie mo˙zna zobaczy´c powierzchni ˛e w kolorze czarnym, poniewa˙z o´swietlaj ˛ace j ˛a ´swiatło zostanie pochłoni ˛ete w cało´sci. Natomiast je˙zeli o´swietlona zostanie zielona powierzchnia białym ´swiatłem, to b ˛edzie ona miała kolor zielony,

poniewa˙z składowa zielona zostanie odbita, a składowe niebieska i czerwona zostan ˛a pochłoni ˛ete. Podobnie b ˛edzie si ˛e działo, je´sli o´swietlona zostanie ona za pomoc ˛a ´zródła emituj ˛acego kolor zielony, poniewa˙z odbije w cało´sci składow ˛a zielon ˛a padaj ˛acego na ni ˛a ´swiatła.

Materiały

Materiał opisuje si ˛e za pomoc ˛a tych samych wła´sciwo´sci co ´swiatło. Wła´sciwo´sci te opisuj ˛a stopie ´n odbicia poszczególnych rodzajów ´swiatła przez dany materiał. Jedne materiały b ˛ed ˛a na przykład dobrze odbija´c jedynie ´swiatło otoczenia, a pochłania´c

´swiatło rozproszone i ´swiatło odbicia. Inne b ˛ed ˛a odbija´c ´swiatło odbicia stwarzaj ˛ac wra˙zenie połysku, a absorbowa´c pozostałe rodzaje ´swiatła. Kolor materiału zale˙zy od stopnia odbicia ´swiatła i ´swiatła rozproszonego, który zwykle jest jednakowy.

Normalne

Normalna do powierzchni jest wektorem prostopadłym do danej powierzchni.

Wyznaczenie normalnej do powierzchni jest niezb ˛edne w celu ustalenia odcienia koloru, którym wypełniony zostanie wielok ˛at o´swietlony pod okre´slonym k ˛atem. Jak wiadomo

´zródła ´swiatła (w zale˙zno´sci od ich rodzaju) promieniuj ˛a w okre´slonym kierunku lub we wszystkich kierunkach. Promienie ´swiatła padaj ˛a wi ˛ec na obiekt pod pewnym k ˛atem.

Znaj ˛ac warto´s´c tego k ˛ata oraz k ˛at odbicia ´swiatła mo˙zna, bior ˛ac pod uwag ˛e tak˙ze rodzaj materiału i rodzaj ´swiatła, wyznaczy´c kolor danej powierzchni. Wyznaczenie normalnej ma wi ˛ec na celu okre´slenie k ˛ata padania ´swiatła na dan ˛a powierzchni ˛e.

Gdy jednak działania ograniczy si ˛e jedynie do wyznaczenia o´swietlenia powierzchni na podstawie normalnej, to uzyska si ˛e mało realistyczny efekt wypełnienia powierzchni jednolitym kolorem. Dlatego te˙z normaln ˛a, a tym samym kolor powierzchni, nale˙zy wyznaczy´c w odniesieniu do wszystkich wierzchołków wielok ˛ata. Wielok ˛at b ˛edzie natomiast wypełniany przy u˙zyciu modelu cieniowania gładkiego, co pozwoli uzyska´c bardziej realistyczny efekt.

W dokumencie Jak działa OpenGL (Stron 28-36)

Powiązane dokumenty