6 Przygotował: mgr inż. Maciej Lasota

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

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

Materiały. Dorota Smorawa

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

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

OpenGL model oświetlenia

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

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

OpenGL Światło (cieniowanie)

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

Mieszanie kolorów. Dorota Smorawa

Oświetlenie obiektów 3D

OpenGL Światło (cieniowanie)

Gry komputerowe, Informatyka N1, III Rok

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

3 Przygotował: mgr inż. Maciej Lasota

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

Temat: Transformacje 3D

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

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

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

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie

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

2 Przygotował: mgr inż. Maciej Lasota

Elementarne obiekty geometryczne, bufory. Dorota Smorawa

8 Przygotował: mgr inż. Maciej Lasota

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

GRAFIKA KOMPUTEROWA 8: Konwersja i mieszanie kolorów

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

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

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

GRK 4. dr Wojciech Palubicki

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

1. Oświetlenie Materiały i powierzchnie

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

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

Plan wykładu. Akcelerator 3D Potok graficzny

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

Polecenie ŚWIATPUNKT - ŚWIATŁO PUNKTOWE

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

System graficzny. Potok graficzny 3D. Scena 3D Zbiór trójwymiarowych danych wejściowych wykorzystywanych do wygenerowania obrazu wyjściowego 2D.

Janusz Ganczarski. OpenGL Pierwszy program

Przekształcenia geometryczne. Dorota Smorawa

Laboratorium 4 OpenGl (4) Oświetlenie sceny

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 6

1 Wstęp teoretyczny. Temat: Manipulowanie przestrzenią. Grafika komputerowa 3D. Instrukcja laboratoryjna Układ współrzędnych

PODSTAWY BARWY, PIGMENTY CERAMICZNE

Dopuszcza się użycie świateł które otrzymały świadectwo homologacji. Powierzchnia świetlna nie może:

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

OpenGL i Qt. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska

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

Wprowadzenie do programowania z wykorzystaniem biblioteki OpenGL. Dorota Smorawa

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

Grafika 3D OpenGL część II

Grafika 3D program POV-Ray

Gry Komputerowe Laboratorium 4. Teksturowanie Kolizje obiektów z otoczeniem. mgr inż. Michał Chwesiuk 1/29. Szczecin, r

GRAFIKA KOMPUTEROWA 10: Antyaliasing

MODELE OŚWIETLENIA. Mateusz Moczadło

Zjawisko widzenia obrazów

Grafika 3D program POV-Ray - 1 -

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

Wykład 4. Rendering (1) Informacje podstawowe

OpenGL teksturowanie

rgbf<składowa_r,składowa_g,składowa_b,filter>. Dla parametru filter przyjmij kolejno wartości: 0.60, 0.70, 0.80, 0.90, 1.00, np.:

ANALIZA I INDEKSOWANIE MULTIMEDIÓW (AIM)

Gry komputerowe: efekty specjalne cz. 2

Scena 3D. Cieniowanie (ang. Shading) Scena 3D - Materia" Obliczenie koloru powierzchni (ang. Lighting)

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

Modelowanie i wstęp do druku 3D Wykład 1. Robert Banasiak

Laboratorium 2. Część I. Perspektywa. Obsługa poleceń myszy. 2. W sekcji przeznaczonej na definicję zmiennych globalnych dodaj następujące definicje:

17. Który z rysunków błędnie przedstawia bieg jednobarwnego promienia światła przez pryzmat? A. rysunek A, B. rysunek B, C. rysunek C, D. rysunek D.

IRONCAD. TriBall IRONCAD Narzędzie pozycjonujące

Ćwiczenie 4 - Podstawy materiałów i tekstur. Renderowanie obrazu i animacji

Materiały 2 1.Kasujemy wszystko ze sceny. Upewniamy się ze uruchomiliśmy Cycles render. 2. W (0,0,0) stawiamy sphere wielkości (2,2,2), nazywamy ja

Zbiór zdjęć przykładowych SB-900

Transformacje. dr Radosław Matusik. radmat

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

WSTĘP DO GRAFIKI KOMPUTEROWEJ

Tekstury. Dorota Smorawa

- 1 - OPTYKA - ĆWICZENIA

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

OpenGL przezroczystość

Przetwarzanie obrazów rastrowych macierzą konwolucji

Tektura obiektów. Ogólnie sekcja opisująca teksturę wygląda następująco:

Teoria światła i barwy

Rzutowanie z 4D na 3D

WASM AppInventor Lab 3. Rysowanie i animacja po kanwie PODSTAWY PRACY Z KANWAMI

VBA w Excel Lekcja ta ma przybliżyć pojęcia związane z programowaniem w pakiecie Office. Poniższe przykłady związane są z wersją Office2007.

Własności optyczne materii. Jak zachowuje się światło w zetknięciu z materią?

Przewodnik po soczewkach

Grafika Komputerowa Materiały Laboratoryjne

Elektrotechnika w środkach transportu

MODELE KOLORÓW. Przygotował: Robert Bednarz

Grafika Komputerowa Wykład 4. Synteza grafiki 3D. mgr inż. Michał Chwesiuk 1/30

Model oświetlenia WYKŁAD 4. Adam Wojciechowski

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

OpenGL - maszyna stanu. Oprogramowanie i wykorzystanie stacji roboczych. Wykład 7. Grupy atrybutów. Zmienne stanu.

Dokąd on zmierza? Przemieszczenie i prędkość jako wektory

Przeciążanie operatorów

Rozdział 5 Oświetlenie: cienie własne

Transkrypt:

Laboratorium nr 6 1/7 Grafika Komputerowa 3D Instrukcja laboratoryjna Temat: Materiały i oświetlenie 6 Przygotował: mgr inż. Maciej Lasota 1) Wprowadzenie Specyfikacja biblioteki OpenGL rozróżnia trzy niezależne rodzaje światła: światło otoczenia (ambient light), światło rozproszone (diffuse light) oraz światło odbite (specular light). Każdy komponent światła definiowany jest przez cztery wartości RGBA, określające względną intensywność czerwonego, zielonego, niebieskiego oraz składowej alfa. Światło otoczenia jest to najprostszy typ światła. Rozprasza się równomiernie na powierzchni danego obiektu niezależnie od swojego źródła. Odbija się od obiektów znajdujących się w jego zasięgu, rozjaśniając wszystkie obiekty znajdujące się dookoła. Światło rozproszone w przeciwieństwie do światła otoczenia posiada kierunek. Oznacza to, że gdy oświetlamy światłem rozproszonym jedną ze stron danego obiektu to tylko ta strona jest oświetlona, a pozostałe nie. Światło rozproszone rozprowadzane jest na powierzchni obiektu w sposób równomierny.

Laboratorium nr 6 2/7 Światło odbite również posiada określony kierunek, ale jest odbijane na powierzchni obiektu w konkretnym kierunku. Takie typ światła powoduje, że na powierzchni obiektu pojawia się rozbłysk (zazwyczaj o kolorze białym). 1.1) Wektory normalne Aby w OpenGL oświetlenie było obliczanie poprawnie, każdej ścianie należy przypisać wektor normalny. Służą do tego celu funkcje z rodziny glnormal: void glnormal3f(glfloat x, GLfloat y, GLfloat z) void glnormal3d(gldouble x, GLdouble y, GLdouble z) Funkcje te definiują wektor normalny dla powierzchni. Przyjmują trzy parametry będące współrzędnymi wektora normalnego. Wektor ten powinien być jednostkowy (znormalizowany).

Laboratorium nr 6 3/7 2) Materiały Materiały określają kolor dla obiektu, na który pada światło. W OpenGL każdy materiał pokrywający zdefiniowany obiekt ma określone właściwości odbicia światła otaczającego, rozproszonego i odbitego. Barwa obiektu widzianego przez obserwatora zależy od rodzaju światła padającego na obiekt i materiału, z jakiego jest wykonany. Podobnie jak światło, materiał również można opisać za pomocą współczynników ambient, diffuse i specular, które w tym wypadku oznaczają procentową zdolność materiału do absorbowania i odbijania światła. Za przypisywanie obiektom materiałów odpowiada rodzina funkcji glmaterial. void glmaterialf(glenum face, GLenum pname, GLfloat param) void glmateriald(glenum face, GLenum pname, GLdouble param) void glmateriali(glenum face, GLenum pname, GLint param) Funkcje z rodziny glmaterial przyjmują trzy parametry. Pierwszy parametr określa, czy definiujemy materiał dla przednich, tylnych, czy obydwu stron wielokątów. Drugi parametr określa jaką właściwość materiału definiujemy. Ostatni parametr to tablica wartości składających się na kolor RGB lub pojedyncza wartość. Parametr face GL_FRONT GL_BACK GL_FRONT_AND_BACK Przednia strona wielokąta Tylna strona wielokąta Przednia i tylna strona wielokąta GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_AMBIENT_AND_DIFFUSE GL_SHININESS GL_EMISSION Definiujemy kolor materiału dla światła otoczenia Definiujemy kolor materiału dla światła rozproszonego Definiujemy kolor materiału dla światła odbitego Definiujemy kolor materiału dla światła otoczenia i rozproszonego Definiujemy kolor materiału z możliwością zmiany mocy światła odbitego. Jako ostatni parametr funkcji glmaterial podajmy liczbę z przedziału (0 128) określającą moc odbicia Definiujemy kolor materiału z efektem emisji, który jest dodawany do wynikowego koloru obiektu.

Laboratorium nr 6 4/7 2.1) Śledzenie materiału Śledzenie materiału umożliwia nam zmianę koloru danego typu materiału z wykorzystaniem funkcji glcolor. Możemy np. śledzić kolor światła otoczenia, każdorazowa zmiana koloru funkcją glcolor spowoduje zmianę koloru materiału dla światła otoczenia. Włączenie śledzenia materiału dokonujemy za pomocą funkcji glenable z parametrem GL_COLOR_MATERIAL. Przypisanie śledzonego koloru materiału funkcji glcolor, odbywa się za pomocą funkcji glcolormaterial. void glcolormaterial(glenum face, GLenum mode) Funkcja ta przyjmuje dwa parametry. Pierwszy parametr określa strony wielokątów których będzie dotyczyć śledzony kolor. Drugi parametr określa materiał, jaki będzie śledzony. Parametr face GL_FRONT GL_BACK GL_FRONT_AND_BACK Przednia strona wielokąta Tylna strona wielokąta Przednia i tylna strona wielokąta Parametr mode GL_AMBIENT GL_DIFFUSE GL_SPECULAR GL_AMBIENT_AND_DIFFUSE GL_EMISSION Najczęściej podaje się GL_FRONT_AND_BACK jako pierwszy parametr oraz GL_AMBIENT_AND_DIFFUSE jako drugi.

Laboratorium nr 6 5/7 3) Oświetlenie Aby włączyć oświetlenie w OpenGL należy wywołać funkcję glenable z parametrem GL_LIGHTING. Funkcja ta nakazuje bibliotece, aby przy obliczaniu koloru wierzchołków w scenie brała pod uwagę właściwości materiału i parametry oświetlenia. W OpenGL dostępnych jest osiem niezależnych źródeł światła. Każdemu z nich możemy przypisać inne położenie, kolor otoczenia czy rozproszenia oraz kilka innych parametrów. Funkcją służącą do ustawiania i modyfikacji parametrów oświetlenia jest gllight. void gllightf(glenum light, GLenum pname, GLfloat param) void gllighti(glenum light, GLenum pname, GLint param) Funkcja ta przyjmuje trzy parametry. Pierwszy parametr określa którego światła parametry modyfikujemy. Drugi parametr określa, który parametr światła zmieniamy. Trzeci parametr określa kolor lub pojedynczą wartość przypisywaną danej właściwości. Parametr light GL_LIGHTx Parametr określa, którego światła parametry modyfikujemy x jest to liczba z przedziału <0,7>, 0 < x < GL_MAX_LIGHTS np. GL_LIGHT1, GL_LIGHT2, GL_AMBIENT GL_DIFFUSE GL_SPECULAR UWAGA!!! Za pomocą funkcji glenable oraz gldisable, możemy włączać i wyłączać konkretne światło podając jako parametr np. GL_LIGHT1, GL_LIGHT2 itd. 3.1) Pozycja światła Konkretnemu światłu możemy przypisać położenie, które określa z której strony pada. Aby zdefiniować położenie światła jako drugi parametr pname funkcji gllight podajemy stałą GL_POSITION. Jako trzeci parametr przekazujemy wtedy czteroelementowy wektor. GL_POSITION

Laboratorium nr 6 6/7 3.2) Reflektor Reflektor jest to specjalny typ światła, który oświetla obiekt w danym konkretnym miejscu np. latarka. GL_SPOT_CUTOFF GL_SPOT_DIRECTION GL_SPOT_EXPONENT Definiujemy rozpiętość stożka widzenia w stopniach, domyślnie jest 180 stopni Określamy wektor kierunku Definiujemy płynne przejście od miejsc najbardziej do najmniej oświetlonych 3.3) Tłumienie światła Tłumienie powoduje, że obiekty bardziej oddalone od źródła światła są mniej oświetlone, a w konsekwencji mogą nie być oświetlone w ogóle jeśli znajdują się odpowiednio daleko. Tłumienie ustawiamy za pośrednictwem trzech stałych: GL_CONSTANT_ATTENUATION GL_LINEAR_ATTENUATION GL_QUADRATIC_ATTENUATION tłumienia. W zależności od tego jakie przyjmują one wartości otrzymujemy odpowiednie efekty Efekty GL_CONSTANT_ATTENUATION Wartość wynosi 1.0 GL_LINEAR_ATTENUATION Wartość wynosi 0.0 GL_QUADRATIC_ATTENUATION Wartość wynosi 0.0 Wraz z odległością wierzchołki oświetlane są tak samo Efekty GL_CONSTANT_ATTENUATION Wartość wynosi 0.0 GL_LINEAR_ATTENUATION Wartość wynosi 1.0 GL_QUADRATIC_ATTENUATION Wartość wynosi 0.0 Zanik liniowy Efekty GL_CONSTANT_ATTENUATION Wartość wynosi 0.0 GL_LINEAR_ATTENUATION Wartość wynosi 0.0 GL_QUADRATIC_ATTENUATION Wartość wynosi 1.0 Zanik kwadratowy

Laboratorium nr 6 7/7 3.4) Modyfikacja oświetlenia globalnego W OpenGL istnieje możliwość modyfikacji oświetlenia globalnego. Do tego celu służy rodzina funkcji gllightmodel. void gllightmodelf(glenum pname, GLfloat param) void gllightmodeli(glenum pname, GLint param) Funkcje te przyjmują dwa parametry. Pierwszy parametr określa jaką właściwość modelu oświetlenia zmieniamy: GL_LIGHT_MODEL_LOCAL_VIEWER GL_LIGHT_MODEL_TWO_SIDE GL_LIGHT_MODEL_AMBIENT Drugi parametr określa przypisywaną wartość.