Modelowanie oświetlenia z wykorzystaniem OpenGL

background image

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ść źródeł
ś

wiatła jaką musi obsługiwać każda implementacja OpenGL wynosi 8. Każde

ź

ró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 źródeł światła można modyfikować niezależnie od

pozostałych źró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 źró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 źródła światła, którego parametry chcemy zmienić
(G_LIGHTx). Parametr pname określa parametr źró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 źródła światła; jeżeli natomiast w

ma wartość 0, to źródło światła jest światłem kierunkowym a jego

background image

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 źró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 źródła światła określają współczynnik tłumienia

ś

wiatła:

gdzie d oznacza odległość wierzchołka od źródła światła, a stałe a

c

, a

l

., a

q

odpowiednio stały (GL_CONSTANT_ATTENUATION), liniowy
(GL_LINEAR_ATTENUATION i kwadratowy
(QUADRATIC_ATTENUATION) współczynnik tłumienia. Przy domyślnych
ustawieniach źró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 źró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. Źródła światła GL_LIGHT1-GLLIGHT7 różnią się od GL_LIGHT0
tylko barwą światła rozproszonego i odbitego.



background image

2. Parametry modelu oświetlenia.

Poza zdefiniowaniem właściwości poszczególnych źró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,

background image

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ę źródłem światła i nie oświetla innych obiektów sceny,
wymaga to także utworzenia źró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 OpenGl
MODELOWANIE ENERGETYCZNEGO WYKORZYSTANIA BIOMASY
Instalacja oświetlenia z wykorzystaniem przekaźników bistabilnych
1.1.Modelowanie oświetlenia Dialux, Politechnika Poznańska, Inżynieria Bezpieczeństwa, 6. SEMESTR, D
MODELOWANIE ENERGETYCZNEGO WYKORZYSTANIA BIOMASY
L2 PAA Modelowanie układu regulacji automatycznej z wykorzystaniem pakietu MATLAB Simulink(1)
GK 11 Modelowanie efektów oświetlenia
Modelowanie przedsięwzięć budowlanych z wykorzystaniem sieci Petriego
Modelowanie i analiza generatora samowzbudnego, Na laboratorium korzystaliśmy z programu wykorzystuj
modelowanie układów przełączających z wykorzystaniem elementów pneumatycznych i elektrycznychx
2007 07 Wykorzystanie przypadków użycia do modelowania zachowania [Inzynieria Oprogramowania]
Modelowanie przemysłowej instalacji oświetleniowej
Techniki wykorzystujące mechanizm modelowania, Prace tekstowe
L2 PAA Modelowanie układu regulacji automatycznej z wykorzystaniem pakietu MATLAB Simulink(1)
Modelowanie z wykorzystaniem UML
Modelowanie wnetrz w 3D z wykorzystaniem bezplatnych narzedzi
Modelowanie wnetrz w 3D z wykorzystaniem bezplatnych narzedzi mown3d

więcej podobnych podstron