Światła i rodzaje świateł. Dorota Smorawa

Podobne dokumenty
6 Przygotował: mgr inż. Maciej Lasota

Materiały. Dorota Smorawa

Światło. W OpenGL można rozróżnić 3 rodzaje światła

Mieszanie kolorów. Dorota Smorawa

Oświetlenie w OpenGL. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 8. Światło otaczajace. Światło rozproszone.

Przekształcenia geometryczne. Dorota Smorawa

Elementarne obiekty geometryczne, bufory. Dorota Smorawa

OpenGL oświetlenie. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

OPEN_GL LABORATORIUM 6. tekst na podstawie: Edwarda Angela oraz Łukasza Grabca

PRZEWODNIK PO PRZEDMIOCIE

Rzutowanie DOROTA SMORAWA

OpenGL model oświetlenia

Mapowanie tekstur Mip-mapy (level of detail) Filtrowanie Multiteksturowanie

Wprowadzenie do programowania z wykorzystaniem biblioteki OpenGL. Dorota Smorawa

OpenGL Światło (cieniowanie)

Janusz Ganczarski. OpenGL Pierwszy program

OpenGL Światło (cieniowanie)

Laboratorium Grafiki Komputerowej i Animacji. Ćwiczenie V. Biblioteka OpenGL - oświetlenie sceny

Tekstury. Dorota Smorawa

Laboratorium grafiki komputerowej i animacji. Ćwiczenie V - Biblioteka OpenGL - oświetlenie sceny

Animowana grafika 3D. Opracowanie: J. Kęsik.

Model oświetlenia. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Oświetlenie obiektów 3D

Oświetlenie. Modelowanie oświetlenia sceny 3D. Algorytmy cieniowania.

Temat: Transformacje 3D

Grafika Komputerowa Wykład 6. Teksturowanie. mgr inż. Michał Chwesiuk 1/23

Gry komputerowe, Informatyka N1, III Rok

Bartosz Bazyluk POTOK RENDEROWANIA Etapy renderowania w grafice czasu rzeczywistego. Grafika Komputerowa, Informatyka, I Rok

OpenGL oświetlenie i tekstury. OpenGL oświetlenie. Bogdan Kreczmer.

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie

Programowanie gier komputerowych Tomasz Martyn Wykład 6. Materiały informacje podstawowe

Ustawienia materiałów i tekstur w programie KD Max. MTPARTNER S.C.

Studium podyplomowe. Programowanie w OpenGL. Michał Turek, AGH Kraków

PODSTAWY BARWY, PIGMENTY CERAMICZNE

3 Przygotował: mgr inż. Maciej Lasota

Plan wykładu. Akcelerator 3D Potok graficzny

GRAFIKA CZASU RZECZYWISTEGO Interakcja, ruch kamery, oświetlenie.

GRK 4. dr Wojciech Palubicki

glwindowpos2d void DrawString (GLint x, GLint y, char *string) { glwindowpos2i (x,y); int len = strlen (string); for (int i = 0; i < len; i++)

GRAKO: ŚWIATŁO I CIENIE. Modele barw. Trochę fizyki percepcji światła. OŚWIETLENIE: elementy istotne w projektowaniu

Rendering sceny z modelem węzła

Jak tworzyć dobre wizualizacje? Porady do wykorzystania w programie KD Max. MTpartner s.c.

Wykład 17: Optyka falowa cz.2.

GRAFIKA KOMPUTEROWA 8: Konwersja i mieszanie kolorów

Przewodnik po soczewkach

Programowanie gier komputerowych. Tomasz Martyn. Wykład 10. Różności: Cinamatics, Aktorzy kinematyczni, Prefabs, Archetypes

PRZEWODNIK PO PRZEDMIOCIE

Elementy okna MatLab-a

Zadanie 1. Ściana. 1. Potrzebne zmienne w dołączonym do zadania kodzie źródłowym

Polecenie ŚWIATPUNKT - ŚWIATŁO PUNKTOWE

Efekt lustra 3D w OpenGL z wykorzystaniem bufora szablonowego (stencil buffer)

Laboratorium 1. Część I. Podstawy biblioteki graficznej OpenGL.

Zatem standardowe rysowanie prymitywów wygląda następująco:

Wykład 4. Rendering (1) Informacje podstawowe

Laboratorium 4 OpenGl (4) Oświetlenie sceny

Materiały dydaktyczne. Zaawansowane systemy informatyczne. Semestr VI. Laboratoria

2 Przygotował: mgr inż. Maciej Lasota

JĘZYKI PROGRAMOWANIA Z PROGRAMOWANIEM OBIEKTOWYM. Wykład 6

Ćwiczenie Nr 11 Fotometria

8 Przygotował: mgr inż. Maciej Lasota

Grafika 3D program POV-Ray - 1 -

Programowanie Procesorów Graficznych

ZASOBY ZMIENNYCH W STEROWNIKACH SAIA-BURGESS

1. Oświetlenie Materiały i powierzchnie

Grafika Komputerowa Wykład 5. Potok Renderowania Oświetlenie. mgr inż. Michał Chwesiuk 1/38

Matematyka licea ogólnokształcące, technika

Siły wewnętrzne - związki różniczkowe

Przełączanie ustawień oświetlenia bez wymiany żarówki

Zaawansowane programowanie obiektowe - wykład 5

ANDROID. OpenGL ES 1.0. Tomasz Dzieniak

Białość oznaczana jednostką CIE, oznacza wzrokowy odbiór białego papieru, do którego produkcji wykorzystano (lub nie) wybielacze optyczne (czyli

Mapowanie sześcienne otoczenia (cubic environment mapping)

Prawa optyki geometrycznej

Laboratorium nr 10. Temat: Funkcje cz.2.

Wskaźniki a tablice Wskaźniki i tablice są ze sobą w języku C++ ściśle związane. Aby się o tym przekonać wykonajmy cwiczenie.

- pozorny, czyli został utworzony przez przedłużenia promieni świetlnych.

Wędrówka światła. Światło nad kamerą

GRAFIKA KOMPUTEROWA 10: Antyaliasing

Programowanie strukturalne i obiektowe. Funkcje

Narzędzia wizualizacji - AutoCAD 2013 PL

Dzień dobry. Miejsce: IFE - Centrum Kształcenia Międzynarodowego PŁ, ul. Żwirki 36, sala nr 7

Zadanie. Oczywiście masa sklejonych ciał jest sumą poszczególnych mas. Zasada zachowania pędu: pozwala obliczyć prędkość po zderzeniu

Optyka stanowi dział fizyki, który zajmuje się światłem (także promieniowaniem niewidzialnym dla ludzkiego oka).

PL B1. Sposób odczytu topografii linii papilarnych i układ do odczytu topografii linii papilarnych. Politechnika Wrocławska,Wrocław,PL

Badanie przy użyciu stolika optycznego lub ławy optycznej praw odbicia i załamania światła. Wyznaczanie ogniskowej soczewki metodą Bessela.

OpenGL : Oświetlenie. mgr inż. Michał Chwesiuk mgr inż. Tomasz Sergej inż. Patryk Piotrowski. Szczecin, r 1/23

Grafika komputerowa. Model oświetlenia. emisja światła przez źródła światła. interakcja światła z powierzchnią. absorbcja światła przez sensor

GLKit. Wykład 10. Programowanie aplikacji mobilnych na urządzenia Apple (IOS i ObjectiveC) #import "Fraction.h" #import <stdio.h>

KORPORACYJNE SYSTEMY ZARZĄDZANIA INFORMACJĄ

Ćwiczenia nr 7. TEMATYKA: Krzywe Bézier a

SPOSÓB POMIARU PODSTAWOWYCH PARAMETRÓW OŚWIETLENIA

W dowolnym momencie można zmienić typ wskaźnika.

Ćwiczenie: "Zagadnienia optyki"

WYZNACZANIE KĄTA BREWSTERA 72

Specyfikacja OpenGL Podstawy programowania grafiki komputerowej*

4/4/2012. CATT-Acoustic v8.0

Fala elektromagnetyczna o określonej częstotliwości ma inną długość fali w ośrodku niż w próżni. Jako przykłady policzmy:

Parametry Widoczność. SDP3 dla producentów nadwozi

Podstawy POV-Ray a. Diana Domańska. Uniwersytet Śląski

TEMAT : KLASY DZIEDZICZENIE

Transkrypt:

Światła i rodzaje świateł Dorota Smorawa

Rodzaje świateł Biblioteka OpenGL posiada trzy podstawowe rodzaje świateł: światło otoczenia, światło rozproszone oraz światło odbite. Dodając oświetlenie na scenie należy pamiętać o ustaleniu parametrów tych trzech głównych rodzajów świateł. Domyślne ustawienia biblioteki OpenGL nie zawsze dają zadawalające rezultaty. W bibliotece OpenGL możemy zdefiniować osiem różnych rodzajów świateł, numerując je od 0 do 7.

Rodzaje świateł Każde źródło światła na scenie musi składać się z trzech składowych oświetlenia. Tak jak zwykłe kolory każda składowa oświetlenia definiowana jest składowymi RGBA. GL_AMBIENT - światło otaczające - nie pochodzi z żadnego kierunku, choć ma źródło. Wszystkie obiekty na scenie są nim równomiernie oświetlone ze wszystkich stron i na wszystkich powierzchniach. GL_DIFFUSE - światło rozproszone - ma zdefiniowane źródło i z tego kierunku pochodzi. Jasność powierzchni zależy od kąta, pod jakim pada na nią światło. GL_SPECULAR - światło odbite - ma kierunek i jest odbijane od powierzchni w jednym konkretnym kierunku.

Nie istnieje źródło światła, które składałoby się wyłącznie z jednego rodzaju światła!

Parametry światła Przykład: floatswiatlo_otoczenia[] = { 0.1, 0.1, 0.1, 1.0}; floatswiatlo_rozproszone[] = { 0.2, 0.2, 0.6, 1.0}; floatswiatlo_odbite[] = { 1.0, 0.2, 0.2, 1.0}; floatswiatlo_pozycja[] = { 0.0, 0.0, -20.0, 1.0}; gllightfv(światlo,typ,macierz_parametrow); gllightfv( GL_LIGHT0, GL_AMBIENT, swiatlo_otoczenia); gllightfv( GL_LIGHT0, GL_DIFFUSE, swiatlo_rozproszone); gllightfv( GL_LIGHT0, GL_SPECULAR, swiatlo_odbite); gllightfv( GL_LIGHT0, GL_POSITION, swiatlo_pozycja);

Światło otaczające - ogólne Dodając do sceny światło ogólne należy zdefiniować kilka przydatnych zmiennych: // definiowanie wartości parametrów światła ogólnego GLfloat fpozycja_swiatla[4] = {100.0f, 100.0f, 50.0f, 1.0f}; GLfloat fslabe_swiatlo[] = {0.25f, 0.25f, 0.25f, 1.0f}; GLfloat fmocne_swiatlo[] = {1.0f, 1.0f, 1.0f, 1.0f}; Dla światła ogólnego, podobnie jak dla innych rodzajów świateł, ustawiamy parametry światła otoczenia, rozproszonego oraz odbitego. Dodatkowo musimy ustalić pozycję tego światła, świecącego we wszystkich kierunkach. Musimy pamiętać, aby wszystko było ustawiane dla konkretnego światła na scenie (od GL_LIGHT0 do GL_LIGHT7) // ustawienia parametrów dla światła ogólnego gllightfv (GL_LIGHT0, GL_AMBIENT, fslabe_swiatlo); // światło otoczenia gllightfv (GL_LIGHT0, GL_DIFFUSE, fmocne_swiatlo); // światło rozproszenia gllightfv (GL_LIGHT0, GL_SPECULAR, fmocne_swiatlo); // światło odbite gllightfv (GL_LIGHT0, GL_POSITION, fpozycja_swiatla); // pozycja światła

Światło otaczające - ogólne Ustawienia parametrów dla światła ogólnego dokonujemy w funkcji ustawienia, wywoływanej w funkcji main, w funkcji rysującej aktorów lub bezpośrednio w funkcji sceny, zależnie od stopnia zaawansowania i wymogów dla oświetlenia. Po wszystkich ustawieniach należy włączyć za pomocą funkcji glenable oświetlenie (parametr GL_LIGHTING oraz odpowiednie światło (parametr GL_LIGHT0 do GL_LIGHT7). Włączenia dokonujemy w funkcji rysującej aktorów lub w funkcji sceny. glenable (GL_LIGHTING); // włączenie oświetlenia glenable (GL_LIGHT0); // włączenie światła 0 Jeśli chcemy włączyć inne światło i nie chcemy, aby aktualne brało udział w scenie, to po prostu wyłączamy je za pomocą funkcji gldisable z parametrem GL_LIGHT0 do GL_LIGHT7.

Światło odbite - kierunkowe Jeśli chcemy dodać światło kierunkowe do sceny, musimy również je odpowiednio zdefiniować, zaczynając od ustalenia parametrów definiujących to światło. Przykładem światła kierunkowego jest reflektor o odpowiednio zadeklarowanym kształcie reflektora i stopniu skupienia. GLfloat fpozycja_reflektora[4] = {0.0f, 10.0f, -2.5f, 1.0f}; GLfloat fkierunek_reflektora[4] = {0.0f, -2.0f, 0.0f, 1.0f}; // kierunek w którym maświecić reflektor GLfloat fslabe_swiatlo[] = {0.25f, 0.25f, 0.25f, 1.0f}; GLfloat fmocne_swiatlo[] = {1.0f, 1.0f, 1.0f, 1.0f}; Jeśli chcemy korzystać z reflektora, to musimy ustalić jego kształt oraz stopień skupienia wiązki światła. gllightf (GL_LIGHT1, GL_SPOT_CUTOFF, 30.0f); // reflektor o kącie rozwarcia 60stopni gllightf(gl_light1,gl_spot_exponent,10.0f); // stopień skupienia reflektora

Światło odbite - kierunkowe Parametry dla światła kierunkowego definiujemy podobnie jak dla światła ogólnego. Dochodzi tylko kierunek reflektora. gllightfv (GL_LIGHT1, GL_AMBIENT, fslabe_swiatlo); // światło otoczenia gllightfv (GL_LIGHT1, GL_DIFFUSE, fmocne_swiatlo); // światło rozproszenia gllightfv (GL_LIGHT1, GL_SPECULAR, fmocne_swiatlo); // światło odbite gllightfv (GL_LIGHT1, GL_POSITION, fpozycja_reflektora); // pozycja światła gllightfv (GL_LIGHT1, GL_SPOT_DIRECTION, fkierunek_reflektora); // kierunek w który odwrócony jest reflektor Po wszystkich ustawieniach należy włączyć za pomocą funkcji glenable oświetlenie (parametr GL_LIGHTING oraz odpowiednie światło (parametr GL_LIGHT0 do GL_LIGHT7). Włączenia dokonujemy w funkcji rysującej aktorów lub w funkcji sceny. glenable (GL_LIGHTING); // włączenie oświetlenia glenable (GL_LIGHT1); // włączenie światła 1

Opis funkcji gllightmodel składnia parametry Ustala parametry modelu oświetlenia stosowanego przez bibliotekę OpenGL. Możliwe jest ustalenie wartości dowolnego z czterech parametrów modelu. Parametr GL_LIGHT_MODEL_AMBIENT stosowany jest do ustalania domyślnego oświetlenia otoczenia. Domyślnie parametr ten przyjnuje wartości RGBA (0.2, 0.2, 0.2, 1.0). Parametr GL_LIGHT_MODEKL_TWO_SIDE pozwala określić, czy oświetlane będą obie strony wielokątów. Domyślnie oświetlane są przednie strony wielokątów, przy czym w czasie wyliczania oświetlenia stosowane są właściwości materiałów zdefiniowane funkcją glmaterial. Określenie parametru GL_LIGHT_MODEL_LOCAL_VIEWER powoduje zmodyfikowanie obliczeń kątów odbicia światłą odbitego w zależności od tego, czy obserwator patrzy w dół wzdłuż ujemnych wartości osi z, czy też z początku układu współrzędnych oka. Parametr GL_LIGHT_MODEL_COLOR_CONTROL kontroluje, czy oświetlenie będzie tworzyło dodatkowy kolor (tekstury będą oświetlane światłem odbitym) czy też wszystkie trzy składowe światła będą łączone w parametrze GL_SINGLE_COLOR. void gllightmodelfv (GLenum pname, const GLfloat *params); pname określa modyfikowany parametr oświetlenia. Przyjmowane są wartości GL_LIGHT_MODEL_AMBIENT, GL_LIGHT_MODEL_LOCAL_VIEWER, GL_LIGHT_MODEKL_TWO_SIDE, GL_LIGHT_MODEL_COLOR_CONTROL param dla parametru GL_LIGHT_MODEL_LOCAL_VIEWER wartość 0.0 oznacza, że kąty padania światła odbitego muszą brać pod uwagę kierunek patrzenia obserwatora równoległy do ujemnych wartości osi z. każda inna wartość oznacza, że obserwator znajduje się w początku układu współrzędnych. Dla parametru GL_LIGHT_MODEKL_TWO_SIDE wartość 0.0 oznacza, że wyliczane będzie oświetlenie wyłącznie przednich stron wielokątów. Każda inna wartość oznacza, że obliczenia prowadzone będą dla przednich i tylnych stron wielokątów. Parametr ten nie ma żadnego wpływu na punkty, linie i bitmapy. Dla parametru GL_LIGHT_MODEL_COLOR_CONTROL można podać wartości GL_SEPARATE_SPECULAR_COLOR lub GL_SINGLE_COLOR. params dla parametrów GL_LIGHT_MODEL_AMBIENT lub GL_LIGHT_MODEL_LOCAL_VIEWER podać należy wskaźnik na tablicę wartości całkowitych lub zmiennoprzecinkowych. Z podanej tablicy wykorzystana będzie tylko pierwsza wartość. W przypadku parametru GL_LIGHT_MODEL_AMBIENT z tablicy pobierane są cztery wartości opisujące RGBA światła otoczenia.

Opis funkcji gllight Ustala parametry jednego z ośmiu dostępnych źródeł światła. Możemy ustawiać następujące parametry: GL_SPOT_EXPONENT wykładnik tłumienia kątowego reflektora, dopuszczalne są wartości z przedziału [0, 128], 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 liniowy współczynnik tłumienia światła, GL_QUADRATIC_ATTENUATION kwadratowy współczynnik tłumienia światła. Pozostałe parametry ustawiamy za pomocą tablicy wartości, a są to: GL_AMBIENT wartość składowych RGBA światła otaczającego, GL_DIFFUSE - wartość składowych RGBA światła rozproszonego, GL_SPECULAR - wartość 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 to 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 promienie padają w kierunku zdefiniowanym przez trzy pierwsze współrzędne wektora. Tablicowych wersji funkcji gllight można używać też do ustalania wartości właściwości opisywanych pojedynczą wartością. składnia void gllightfv (GLenum light, GLenum pname, const GLfloat *params); parametry light określa numer źródła światła poddawanego modyfikacjom. Można podawać tu wartości od 0 do GL_MAX_LIGHTS (przynajmniej 8). Zdefiniowane są stałe wartości wyliczeniowe od GL_LIGHT0 do GL_LIGHT7, pname określa parametr oświetlenia ustawiany w danym wywołaniu funkcji. params określa tablicę wartości całkowitych lub zmiennoprzecinkowych zawierającą wartości przypisywane ustalonej właściwości.

Literatura Richard S. Wright jr, Michael Sweet: OpenGL Księga eksperta Wydanie III, Helion2005 Pomoce dydaktyczne i instrukcje, http://icis.pcz.pl/~mkubanek Jackie Neider, Tom Davis, Mason Woo: OpenGL Programming Guide The RedBook Kevin Hawkins, Dave Astle: OpenGL. Programowanie gier, Helion 2003 The official OpenGL web page, http://www.opengl.org http://januszg.hg.pl/opengl/