Modelowanie oświetlenia z wykorzystaniem funkcji OpenGL
Grzegorz Prochowicz I4D1S0
Model oświetlenia zastosowany w bibliotece OpenGL opiera się na trzech
rodzajach światła: pierwszym jest światło otaczające (ambent light), które nie
pochodzi z \adnego konkretnego kierunku i równomiernie oświetla całą scenę
3D. Drugi rodzaj to światło rozproszone (diffuse light), które pada na obiekt z
określonego kierunku i jest na nim rozpraszane we wszystkich kierunkach.
Trzecim rodzajem jest światło odbite (specular light), które pada na obiekt z
określonego kierunku i jest odbijane w ściśle określonym kierunku.
W bibliotece OpenGL ze światłem ściśle związane jest pojęcie materiałów
określające właściwości oświetlanych obiektów. Właściwości materiału, poza
reakcją na opisane wy\ej trzy rodzaje światła, uwzględniają tak\e mo\liwość
emitowania światła.
Uruchomienie/wyłączenie oświetlenia wymaga wywołania funkcji
glEnable/glDisable z parametrem GL_LIGHTING. Minimalna ilość zródeł
światła jaką musi obsługiwać ka\da implementacja OpenGL wynosi 8. Ka\de
zródło światła ma unikatowy numer oznaczony stałą GL_lightx, gdzie x zawiera
się z przedziale [0,7]
1. Parametry świateł
Parametry ka\dego ze zródeł światła mo\na modyfikować niezale\nie od
pozostałych zródeł. Słu\ą do tego funkcje glLight, które mo\na podzielić na
dwie grupy. Pierwsza pozwala na modyfikacje określonych parametrów
pojedynczą wartością:
void glLightf (GLenum light, Plenum pname, GLfloat param)
void glLighti (GLenum light, Plenum pname, GLint param)
Druga natomiast na zmianę parametru zródła światła określonego tablicą
wartości:
void glLightv (GLenum light, Plenum pname, const GLfloat *params)
void glLightiv (GLenum light, Plenum pname, const GLint *params)
Parametr light określa numer zródła światła, którego parametry chcemy zmienić
(G_LIGHTx). Parametr pname określa parametr zródła światła, który chcemy
zmodyfikować. Mo\liwe są następujące wartości modyfikowanego tego
parametru:
GL_AMBIENT - wartości składowych RGBA światła otaczającego,
GL_DIFFUSE - wartości składowych RGBA światła rozproszonego,
GL_SPECULAR - wartości składowych RGBA światła odbitego,
GL_POSITION czteroelementowy wektor (x,y,z,w), którego interpretacja
zale\y od wartości w; je\eli w ma wartość 1 oznacza to \e trzy pierwsze
współrzędne wektora określają poło\enie zródła światła; je\eli natomiast w
ma wartość 0, to zródło światła jest światłem kierunkowym a jego
promienie padają w kierunku zdefiniowanym prze trzy pierwsze
współrzędne wektora,
GL_SPOT_DIRECTION znormalizowany (o długość 1) trójwspółrzędny
wektor określający kierunek reflektora,
GLSPOT_EXPONENT współczynnik tłumienia kątowego reflektora,
dopuszczalne są wartości z przedziału [0,128]. Umo\liwia regulację stopnia
skupienia światła reflektora.
GL_SPOT_CUTOFF- kąt odcięcia reflektora, dopuszczalne są wartości z
przedziału [0,90] oraz 180,
GL_CONSTANT_ATTENUATION stały współczynnik tłumienia światła,
GL_LINEAR_ATTENUATION linowy współczynnik tłumienia światła,
GL_QUADRATIC_ATTENUATION kwadratowy współczynnik tłumienia
światła.
Reflektory to światło kierunkowe , którego promienie rozchodzą się w
przestrzeni ograniczonej sto\kiem o wierzchołku znajdującym się w zródle
światła. Połowę kąta rozwarcia sto\ka określa parametr GL_SPOT_CUTOFF.
Wszystkie obiekty sceny poza sto\kiem świata reflektora nie będą nim
oświetlone.
Trzy ostatnie parametry zródła światła określają współczynnik tłumienia
światła:
gdzie d oznacza odległość wierzchołka od zródła światła, a stałe ac, al., aq
odpowiednio stały (GL_CONSTANT_ATTENUATION), liniowy
(GL_LINEAR_ATTENUATION i kwadratowy
(QUADRATIC_ATTENUATION) współczynnik tłumienia. Przy domyślnych
ustawieniach zródeł światła wartość współczynnika tłumienia wynosi 1, co
oznacza, \e intensywność strumienia światła nie zale\y od odległości pomiędzy
jego zródłem a wierzchołkiem oświetlanego obiektu.
Domyślnie światło GL_LIGHT0 jest światłem białym kierunkowym
poło\onym w punkcie o współrzędnych (0,0,1). Światło skierowane jest zgodnie
z kierunkiem wyznaczanym przez wektor o współrzędnych [0,0,-1].
Pomimo kierunkowego charakteru sto\ek światła GL_LIGHT0 nie jest w \aden
sposób ograniczony (parametr GL_SPOT_CUTOFF ma wartość 180) i światło
rozchodzi się we wszystkich kierunkach. Światło GL_LIGHT0 znajduje się na
środku płaszczyzny monitora (okna) i jest skierowane prostopadle w głąb
monitora. yródła światła GL_LIGHT1-GLLIGHT7 ró\nią się od GL_LIGHT0
tylko barwą światła rozproszonego i odbitego.
2. Parametry modelu oświetlenia.
Poza zdefiniowaniem właściwości poszczególnych zródeł światła do
oświetlenia sceny w bibliotece OpenGL trzeba jeszcze określić parametry
stosowanego modelu oświetlenia. Słu\ą do tego funkcje z grupy glLightModel:
void glLightModelf (GLenum pname, GLfloat param)
void glLightModeli (GLenum pname, GLint param)
void glLightModelfv (GLenum pname, const GLfloat *params)
Funkcje te, podobnie jak funkcje z grupy glLight, występują w dwóch wersjach
ró\niących się sposobem przekazywania parametrów. Parametr pname określa
własność modelu otoczenia , który chcemy zmienić. Dopuszczalne są
następujące wartości tego parametru:
GL_LIGHT_MODEL_LOCAL_VIEWER określenie sposobu obliczania kąta
odbicia światła; wartość 0 oznacza, \e kąt obliczany jest na podstawie kierunku
od początku układu współrzędnych do oświetlanego wierzchołka obiektu;
wartość inna ni\ 0 oznacza, \e kąt odbicia światła obliczany jest na podstawie
kierunku ujemnej osi OZ,
GL_LIGHT_MODEL_TWO_SIDE określenie czy będą oświetlane obie
strony wielokątów (wartość ró\na od 0) czy te\ tylko przednie strony (wartość
0),
GL_LIGHT_MODEL_AMBIENT określenie składowych RGBA globalnego
światła otaczającego
GL_LIGHT_MODEL_COLOR_CONTROL określenie czy efekt oświetlenia
światłem odbitym będzie nakładany dopiero po nało\eniu tekstury (wartość
GL_SEPARATE_SPECULAR_COLOR) czy te\ razem z teksturą (wartość
GL_SINGLE_COLOR).
3. Materiały
Elementem modelu oświetlenia przyjętego w bibliotece OpenGL jest opis
sposobu zachowania się powierzchni obiektów na poszczególne rodzaje światła,
czyli opis właściwości materiałów. Do ich modyfikacji słu\ą funkcje z grupy
glMaterial:
void glMaterialf (GLenum face, GLlenum pname, GLfloat param)
void glMateriali (GLenum face, GLlenum pname, GLint param)
void glMaterialfv (GLenum face, GLlenum pname, const GLfloat *params)
void glMaterialiv (GLenum face, GLlenum pname, const GLint *params)
Parametr face ustala, której strony wielokąta dotyczy modyfikowany
parametr. Wartości: GL_FRONT, GL_BACK, GL_FRONT_AND_BACK
(odpowiednio przednia, tylna, obie strony)
Parametr pname określa zmienną wartość parametru materiału.
Dopuszczalne wartości:
GL_AMBIENT - składowe RGBA określające stopień odbicia światła
otaczającego,
GL_DIFFUSE - składowe RGBA określające stopień odbicia światła
rozproszonego,
GL_AMBIENT_AND_DIFFUSE - składowe RGBA określające jednocześnie
stopień odbicia światła otaczającego i rozproszonego,
GL_SPECULAR - składowe RGBA określające stopień odbicia światła
odbitego,
GL_SHININESS stała z przedziału [0,128] określająca wykładnik odbłysku
światła czyli regulację stopnia rozbłysku obiektu. Im większa wartość tym
większe skupienie rozbłysku światła na obiekcie,
GL_EMISSION składowe RGBA światła emitowanego przez obiekt, taki
obiekt nie staje się zródłem światła i nie oświetla innych obiektów sceny,
wymaga to tak\e utworzenia zródła światła,
GL_COLOR_INDEXES w indeksowanym trybie kolorów trzy indeksy do
tablicy kolorów określające kolejno składowe RGBA określające reakcję na
światło otaczające, rozproszone i odbite.
Wyszukiwarka
Podobne podstrony:
Modelowanie oświetlenia w OpenGlInstalacja oświetlenia z wykorzystaniem włączników schodowych i krzyżowychMODELOWANIE ENERGETYCZNEGO WYKORZYSTANIA BIOMASYInstalacja oświetlenia z wykorzystaniem automatów schodowychInstalacja oświetlenia z wykorzystaniem przekaźników bistabilnychGK Modelowanie efektów oświetleniaModelowanie przedsięwzięć budowlanych z wykorzystaniem sieci Petriego2007 07 Wykorzystanie przypadków użycia do modelowania zachowania [Inzynieria Oprogramowania]2007 07 Wykorzystanie przypadków użycia do modelowania zachowania [Inzynieria Oprogramowania]L2 PAA Modelowanie układu regulacji automatycznej z wykorzystaniem pakietu MATLAB Simulink(1)Energooszczędne instalacje oświetleniowewięcej podobnych podstron