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

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

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

6 Przygotował: mgr inż. Maciej Lasota

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

Czujniki PSD i dalmierze triangulacyjne

Schemat konstrukcja pliku Makefile

Czujniki PSD i dalmierze triangulacyjne

Qt sygnały i sloty. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Wydział Elektroniki Politechnika Wrocławska

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

Przestrzenie nazw. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

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

Dalmierze optyczne. Bogdan Kreczmer.

Materiały. Dorota Smorawa

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

Oświetlenie obiektów 3D

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

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

Papyrus. Papyrus. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

Zasoby, pliki graficzne

Praca z aplikacją designer

Wprowadzenie do szablonów klas

Qt sygnały i designer

Szablony funkcji i szablony klas

1. Oświetlenie Materiały i powierzchnie

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

GRK 4. dr Wojciech Palubicki

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

Weryfikatory, zasoby graficzne

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

Zjawisko widzenia obrazów

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

OpenGL model oświetlenia

Pola i metody statyczne

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

Wprowadzenie do szablonów szablony funkcji

OpenGL Światło (cieniowanie)

Wartości domyślne, przeciażenia funkcji

Mieszanie kolorów. Dorota Smorawa

Wprowadzenie do UML, przykład użycia kolizja

Style programowania - krótki przeglad

Diagramy UML, przykład problemu kolizji

Wprowadzenie do szablonów szablony funkcji

Wyjątki. Wyjątki. Bogdan Kreczmer. Katedra Cybernetyki i Robotyki Politechnika Wrocławska

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

Geneza powstania języka C++

Powłoki systemu operacyjnego i intepretery

Plan wykładu. Akcelerator 3D Potok graficzny

OpenGL Światło (cieniowanie)

Wartości domyślne, przeciażenia funkcji

Geneza powstania języka C++

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

Przesłanianie nazw, przestrzenie nazw

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

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

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

Dia rysowanie diagramów

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

Rzutowanie z 4D na 3D

Janusz Ganczarski. OpenGL Pierwszy program

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

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie

GRAFIKA KOMPUTEROWA 8: Konwersja i mieszanie kolorów

Raytracer. Seminaria. Hotline. początkujący zaawansowani na miejscu

Grafika 3D program POV-Ray - 1 -

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

Konstruktor kopiujacy

Gry komputerowe: efekty specjalne cz. 2

Gry komputerowe, Informatyka N1, III Rok

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

Przenośne urządzenia pomiarowe Nowy spectro-guide...59 Color-guide do małych detali...64 Color-guide do proszków... 64

Lista dwukierunkowa - przykład implementacji destruktorów

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

Przykłady oprogramowania wykorzystujacego Qt

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

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

Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska

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

Wyliczanie wyrażenia obiekty tymczasowe

Ćwiczenie Nr 11 Fotometria

3 Przygotował: mgr inż. Maciej Lasota

Grafika 3D program POV-Ray

GRAFIKA RASTROWA GRAFIKA RASTROWA

Pomiar dyspersji materiałów za pomocą spektrometru

Polecenie ŚWIATPUNKT - ŚWIATŁO PUNKTOWE

OCENA PRZYDATNOŚCI FARBY PRZEWIDZIANEJ DO POMALOWANIA WNĘTRZA KULI ULBRICHTA

Wykład 17: Optyka falowa cz.2.

PODSTAWY BARWY, PIGMENTY CERAMICZNE

Obraz jako funkcja Przekształcenia geometryczne

WYZNACZANIE WSPÓŁCZYNNIKA ZAŁAMANIA SZKŁA ZA POMOCĄ SPEKTROMETRU CZĘŚĆ (A-zestaw 1) Instrukcja wykonawcza

Referencje do zmiennych i obiektów

OP6 WIDZENIE BARWNE I FIZYCZNE POCHODZENIE BARW W PRZYRODZIE

Pomiar dyspersji materiałów za pomocą spektrometru

WYZNACZANIE WSPÓŁCZYNNIKA ZAŁAMANIA SZKŁA ZA POMOCĄ SPEKTROMETRU.

Teoria światła i barwy

Kolekcja Symfonia kolorów

Wykład 17: Optyka falowa cz.1.

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

Podejście obiektowe - podstawowe pojęcia

Podstawy Processingu. Diana Domańska. Uniwersytet Śląski

TEMAT : KLASY DZIEDZICZENIE

Transkrypt:

OpenGL oświetlenie Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Katedra Cybernetyki i Robotyki Wydziału Elektroniki Politechnika Wrocławska Kurs: Copyright c 2017 Bogdan Kreczmer Niniejszy dokument zawiera materiały do wykładu dotyczącego programowania obiektowego. Jest on udostępniony pod warunkiem wykorzystania wyłącznie do własnych prywatnych potrzeb i może on być kopiowany wyłącznie w całości, razem z niniejszą stroną tytułową.

Niniejsza prezentacja została wykonana przy użyciu systemu składu L A TEX oraz stylu beamer, którego autorem jest Till Tantau. Strona domowa projektu Beamer: http://latex-beamer.sourceforge.net

1 Oświetlenie obiektów w OpenGL

Rodzaje źródeł światła Źródło światła może być punktowe. Jednak z takim źródłem stowarzyszone jest oświetlenie dookólne, które jest wynikiem wielokrotnych odbić światła od różnych powierzchni. Po wielu odbiciach światło to traci swoją pierwotną kierunkowość. W wyniku czego nie można określić jego pierwotnego pochodzenia. Światło to jednak znika po wyłączeniu jego pierwotnego źródła. Istnieje również ogólne rozproszone światło, które nie jest związane z żadnym źródłem.

Model oświetlenia Oświetlenie obiektów w OpenGL Model oświetlenia obejmuje 4 składowe, które wyznaczane są niezależnie, a następnie sumowane. Tymi składowymi są następujące typy oświetlenia: dookólne (ang. ambient) pochodzi z wielokrotnych odbić, które uniemożliwiają wyznaczenie jego pierwotnego źródła. Gdy tego typu oświetlenie pada na powierzchnię, odbijane jest we wszystkich kierunkach w jednakowym stopniu. rozproszone (ang. diffuse) światło docierające z jednego określonego kierunku. Ta składowa daje intensywniejsze oświetlenie, gdy światło pada na wprost na powierzchnię, niż pod pewnym kątem. Jednak od powierzchni odbija się w jednakowy sposób we wszystkich kierunkach. zwierciadlane (ang. specular) światło pochodzi je jednego określone kierunku. Po odbiciu od powierzchni ma tendencję rozchodzić się, w kierunku jednym kierunku. Powierzchnie mogą mieć różne współczynnika dla tego komponent. Metal może mieć bardzo wysoki współczynnik. Natomiast sukno może mieć współczynnik bliski zeru. Wartość tego współczynnika można interpretować jako połyskliwość.

Spektrum Oświetlenie obiektów w OpenGL Pomimo ustalonej charakterystyki widmowej źródła światła, składowe oświetlenia dookólnego, rozproszonego i zwierciadlanego mogą być różne. Przykład: Jeśli jesteśmy w pokoju, którego ściany są zielone i jest ono oświetlone światłem białym, to składowa oświetlenia dookólnego będzie miała silniejszą składową zieloną. Dla każdej składowej oświetlania można indywidualnie ustawić komponenty RGB.

Kolory materiałów Oświetlenie obiektów w OpenGL Materiały mogą mieć różne komponenty spektralne dla dla składowych światła abient, diffuse i specular. Współczynniki tych komponentów decydują w jakim stopniu komponenty spektralne poszczególnych składowych światła zostaną odbite. Dodatkowo materiały mają składową emisyjną (ang. emissive), która symuluje światło wydobywające się z danej powierzchni. Składowa ta pozwala zwiększyć intensywność koloru obiektu. Nie wpływa na nią żadne zewnętrzne oświetlenie, jak też nie daje ono żadnego dodatkowego oświetlenia otoczenia. Wyznaczanie światła odbitego (L r, L g, L b ) = (S r M r, S g M g, S b M b ) Intensywność światła pochodzącego z kilku źródeł lub odbić podlega sumowaniu (L r, L g, L b ) = (L 1,r + L 2,r, L 1,g + L 2,g, L 1,b + L 2,b )

Tworzenie oświetlenia Zdefiniuj normalne wektory dla każdego wierzchołka wszystkich obiektów. Wektory definiują orientację obiektu względem źródła światła. Stwórz, wyselekcjonuj i ustaw w odpowiedniej pozycji jedno lub więcej źródeł światła. Stwórz i wybierz model oświetlenia, który zdefiniuje poziom globalnego dookólnego oświetlenia i lokalizację punktu obserwacji (aby umożliwić wyliczenie efektu oświetlenia). Zdefiniuj własności materiałów obiektów znajdujących się na scenie.

Tworzenie oświetlenia przykład v o i d i n i t ( v o i d ) G L f l o a t m a t s p e c u l a r [ ] = 1. 0, 1. 0, 1. 0, 1. 0 ; GLfloat mat shininess [ ] = 50.0 ; G L f l o a t l i g h t p o s i t i o n [ ] = 1. 0, 1. 0, 1. 0, 0. 0 ; g l C l e a r C o l o r ( 0. 0, 0. 0, 0. 0, 0. 0 ) ; glshademodel (GL SMOOTH ) ; g l M a t e r i a l f v (GL FRONT, GL SPECULAR, m a t s p e c u l a r ) ; g l M a t e r i a l f v (GL FRONT, GL SHININESS, m a t s h i n i n e s s ) ; g l L i g h t f v ( GL LIGHT0, GL POSITION, l i g h t p o s i t i o n ) ; glenable ( GL LIGHTING ) ; g l E n a b l e ( GL LIGHT0 ) ; glenable (GL DEPTH TEST ) ; v o i d d i s p l a y ( v o i d ) g l C l e a r ( GL COLOR BUFFER BIT GL DEPTH BUFFER BIT ) ; g l u t S o l i d S p h e r e ( 1. 0, 20, 1 6 ) ; g l F l u s h ( ) ;

Tworzenie oświetlenia Wektory normalne v o i d i n i t ( v o i d ) v o i d d i s p l a y ( v o i d ) g l C l e a r ( GL COLOR BUFFER BIT GL DEPTH BUFFER BIT ) ; g l u t S o l i d S p h e r e ( 1. 0, 20, 1 6 ) ; g l F l u s h ( ) ; Zdefiniuj normalne wektory dla każdego wierzchołka wszystkich obiektów. Wektory definiują orientację obiektu względem źródła światła. Stwórz, wyselekcjonuj i ustaw w odpowiedniej pozycji jedno lub więcej źródeł światła. Stwórz i wybierz model oświetlenia, który zdefiniuje poziom globalnego dookólnego oświetlenia i lokalizację punktu obserwacji (aby umożliwić wyliczenie efektu oświetlenia). Zdefiniuj własności materiałów obiektów znajdujących się na scenie.

Tworzenie oświetlenia Wektory normalne v o i d i n i t ( v o i d ) v o i d d i s p l a y ( v o i d ) g l C l e a r ( GL COLOR BUFFER BIT GL DEPTH BUFFER BIT ) ; g l u t S o l i d S p h e r e ( 1. 0, 20, 1 6 ) ; g l F l u s h ( ) ; Zdefiniuj normalne wektory dla każdego wierzchołka wszystkich obiektów. Wektory definiują orientację obiektu względem źródła światła. GLUT The OpenGL Utility Toolkit Niezależny od platformy toolkit umożliwiający pisanie programów wykorzystujących OpenGL. Implementuje prosty interfejs aplikacji dla okienkowych programów. Przewidziany jest do pisania małych lub średnich aplikacji.

Tworzenie oświetlenia Źródło światła v o i d i n i t ( v o i d ) G L f l o a t l i g h t p o s i t i o n [ ] = 1. 0, 1. 0, 1. 0, 0. 0 ; g l L i g h t f v ( GL LIGHT0, GL POSITION, l i g h t p o s i t i o n ) ; glenable ( GL LIGHTING ) ; g l E n a b l e ( GL LIGHT0 ) ; Zdefiniuj normalne wektory dla każdego wierzchołka wszystkich obiektów. Wektory definiują orientację obiektu względem źródła światła. Stwórz, wyselekcjonuj i ustaw w odpowiedniej pozycji jedno lub więcej źródeł światła. Stwórz i wybierz model oświetlenia, który zdefiniuje poziom globalnego dookólnego oświetlenia i lokalizację punktu obserwacji (aby umożliwić wyliczenie efektu oświetlenia). Zdefiniuj własności materiałów obiektów znajdujących się na scenie.

Tworzenie oświetlenia Źródło światła v o i d i n i t ( v o i d ) G L f l o a t l i g h t p o s i t i o n [ ] = 1. 0, 1. 0, 1. 0, 0. 0 ; g l L i g h t f v ( GL LIGHT0, GL POSITION, l i g h t p o s i t i o n ) ; glenable ( GL LIGHTING ) ; g l E n a b l e ( GL LIGHT0 ) ; Stwórz, wyselekcjonuj i ustaw w odpowiedniej pozycji jedno lub więcej źródeł światła. Użyte zostało tylko jedno źródło światła, które domyślnie ma kolor biały. W ogólnym przypadku może być 8 źródeł o dowolnych barwach. Domyślnie pozostałe źródła mają kolor światła czarny. Należy pamiętać, że włączanie kolejnych źródeł zwiększa też ilość obliczeń. glenable(gl LIGHTING) przygotowuje OpenGL do wykonania obliczeń oświetlenia.

Tworzenie oświetlenia Model oświetlenia v o i d i n i t ( v o i d ) G L f l o a t l i g h t p o s i t i o n [ ] = 1. 0, 1. 0, 1. 0, 0. 0 ; g l L i g h t f v ( GL LIGHT0, GL POSITION, l i g h t p o s i t i o n ) ; glenable ( GL LIGHTING ) ; g l E n a b l e ( GL LIGHT0 ) ; Zdefiniuj normalne wektory dla każdego wierzchołka wszystkich obiektów. Wektory definiują orientację obiektu względem źródła światła. Stwórz, wyselekcjonuj i ustaw w odpowiedniej pozycji jedno lub więcej źródeł światła. Stwórz i wybierz model oświetlenia, który zdefiniuje poziom globalnego dookólnego oświetlenia i lokalizację punktu obserwacji (aby umożliwić wyliczenie efektu oświetlenia). Zdefiniuj własności materiałów obiektów znajdujących się na scenie.

Tworzenie oświetlenia Model oświetlenia v o i d i n i t ( v o i d ) G L f l o a t l i g h t p o s i t i o n [ ] = 1. 0, 1. 0, 1. 0, 0. 0 ; g l L i g h t f v ( GL LIGHT0, GL POSITION, l i g h t p o s i t i o n ) ; glenable ( GL LIGHTING ) ; g l E n a b l e ( GL LIGHT0 ) ; Stwórz i wybierz model oświetlenia, który zdefiniuje poziom globalnego dookólnego oświetlenia i lokalizację punktu obserwacji (aby umożliwić wyliczenie efektu oświetlenia). Model oświetlenia definiowany jest przez funkcję gllightmodel*(). W tym przykładzie zostało zdefiniowane tylko oświetlenie dookólne. Ogólnie model oświetlenia definiuje, czy oświetlenie ma być liczone dla frontu powierzchni i jej tyłu, czy źródło światła znajduje się w nieskończoności, czy też w określonej odległości. W przykładzie obliczenia są wykonywane tylko dla frontu, a źródło znajduje się w nieskończoności.

Tworzenie oświetlenia Własności materiału v o i d i n i t ( v o i d ) GLfloat m a t s p e c u l a r [ ] = 1. 0, 1. 0, 1. 0, 1.0 ; / RGBA / GLfloat mat shininess [ ] = 50.0 ; g l M a t e r i a l f v (GL FRONT, GL SPECULAR, m a t s p e c u l a r ) ; g l M a t e r i a l f v (GL FRONT, GL SHININESS, m a t s h i n i n e s s ) ; Zdefiniuj normalne wektory dla każdego wierzchołka wszystkich obiektów. Wektory definiują orientację obiektu względem źródła światła. Stwórz, wyselekcjonuj i ustaw w odpowiedniej pozycji jedno lub więcej źródeł światła. Stwórz i wybierz model oświetlenia, który zdefiniuje poziom globalnego dookólnego oświetlenia i lokalizację punktu obserwacji (aby umożliwić wyliczenie efektu oświetlenia). Zdefiniuj własności materiałów obiektów znajdujących się na scenie.

Tworzenie oświetlenia Własności materiału v o i d i n i t ( v o i d ) GLfloat m a t s p e c u l a r [ ] = 1. 0, 1. 0, 1. 0, 1.0 ; / RGBA / GLfloat mat shininess [ ] = 50.0 ; g l M a t e r i a l f v (GL FRONT, GL SPECULAR, m a t s p e c u l a r ) ; g l M a t e r i a l f v (GL FRONT, GL SHININESS, m a t s h i n i n e s s ) ; Zdefiniuj własności materiałów obiektów znajdujących się na scenie. Rodzaj materiału definiuje sposób odbicia światła. Ponieważ interakcja różnych sposób odbicia światła jest bardzo złożona, dobór właściwych parametrów jest sztuką samą w sobie. Ogólnie można określić dla powierzchni można określić takie parametry jak: ambient, diffuse oraz specular; niezależnie dla każdej z barw RGB. W prezentowanym przykładzie tylko dwie ostatnie własności zostały ustawione.

Tworzenie oświetlenia Własności materiału Prototypy void gllightif(glenum light, GLenum pname, TYPEparam); void gllightifv(glenum light, GLenum pname, TYPE *param); Nazwa parametru Domyślna wartość Znaczenie GL AMBIENT (0.0, 0.0, 0.0, 1.0) RGBA (intensywność światła) GL DIFFUSE (1.0, 1.0, 1.0, 1.0) RGBA (intensywność światła) GL SPECULAR (1.0, 1.0, 1.0, 1.0) RGBA (intensywność światła) GL POSITION (0.0, 0.0, 1.0, 0.0) (x, y, z, w) (pozycja światła) GL SPOT DIRECTION (0.0, 0.0, -1.0) (x, y, z) (kierunek snopu światła) GL SPOT EXPONENT 0.0 współczynnik eksponenty GL SPOT CUTOFF 180.0 ograniczenie snopu światła GL CONSTANT ATTENUATION 1.0 Stała zanikania GL LINEAR ATTENUATION 0.0 Współczynnik liniowego zanikania GL QUADRATIC ATTENUATION 0.0 Współczynnik zanikania z kwadratem odległości

Koniec prezentacji Dziękuję za uwagę