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

Podobne dokumenty
Grafika komputerowa. Potok graficzny 3D. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny

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

Potok graficzny. System graficzny. Potok graficzny 3D. O$wietlenie globalne i lokalne. scena 3D algorytm graficzny obraz 2D. czasu rzeczywistego

Plan wykładu. Akcelerator 3D Potok graficzny

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

GRK 4. dr Wojciech Palubicki

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

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

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

GRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych

Oświetlenie obiektów 3D

OpenGL model oświetlenia

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

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

6 Przygotował: mgr inż. Maciej Lasota

Wykład 4. Rendering (1) Informacje podstawowe

Gry komputerowe: efekty specjalne cz. 2

OpenGL Światło (cieniowanie)

2 Przygotował: mgr inż. Maciej Lasota

Transformacje obiektów 3D

OpenGL Światło (cieniowanie)

Architektura Procesorów Graficznych

Zjawisko widzenia obrazów

GRAFIKA KOMPUTEROWA. Plan wykładu. 1. Początki grafiki komputerowej. 2. Grafika komputerowa a dziedziny pokrewne. 3. Omówienie programu przedmiotu

Grafika komputerowa i wizualizacja

Teksturowanie (ang. texture mapping)

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

Temat: Transformacje 3D

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

Materiały. Dorota Smorawa

Rzutowanie DOROTA SMORAWA

Załącznik KARTA PRZEDMIOTU. KARTA PRZEDMIOTU Wydział Automatyki, Elektroniki i Informatyki, Rok akademicki: 2009/2010 KOMPUTEROWA

0. OpenGL ma układ współrzędnych taki, że oś y jest skierowana (względem monitora) a) w dół b) w górę c) w lewo d) w prawo e) w kierunku do

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

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

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

Gry komputerowe, Informatyka N1, III Rok

Programowanie Procesorów Graficznych

Grafika komputerowa i wizualizacja. dr Wojciech Pałubicki

WPROWADZENIE DO GRAFIKI KOMPUTEROWEJ

GRK 5. dr Wojciech Palubicki

Bartosz Bazyluk SYNTEZA GRAFIKI 3D Grafika realistyczna i czasu rzeczywistego. Pojęcie sceny i kamery. Grafika Komputerowa, Informatyka, I Rok

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

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

PRZEWODNIK PO PRZEDMIOCIE

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

GRK 5. dr Wojciech Palubicki

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

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 6

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

Zaawansowana Grafika Komputerowa

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

Wprowadzenie. Artur Staszczyk Bartłomiej Filipek

Bartosz Bazyluk OpenGL Współczesne podejście do programowania grafiki Część II: Programy cieniujące (shadery)

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

GRK 2. dr Wojciech Palubicki

Transformacje. dr Radosław Matusik. radmat

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

Janusz Ganczarski. OpenGL Definiowanie sceny 3D

Synteza i obróbka obrazu. Tekstury. Opracowanie: dr inż. Grzegorz Szwoch Politechnika Gdańska Katedra Systemów Multimedialnych

Julia 4D - raytracing

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

Trójwymiarowa wizualizacja danych przestrzennych

Mieszanie kolorów. Dorota Smorawa

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

OpenGL przezroczystość

1. Podstawowe algorytmy techniki rastrowe a) dwa przecinające się odcinki mogą nie mieć wspólnego piksela (T) b) odcinek o współrzędnych końcowych

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

Co to jest OpenGL? Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5. OpenGL - Achitektura. OpenGL - zalety. olas@icis.pcz.

Grafika Komputerowa. Wykład 8. Przygotowanie do egzaminu. mgr inż. Michał Chwesiuk 1/32

Efekty dodatkowe w rasteryzacji

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

Oprogramowanie i wykorzystanie stacji roboczych. Wykład 5

Wprowadzenie do grafiki komputerowej

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

Prosty program- cpp. #include <GL/glut.h>

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

1. Czym jest rendering? a. Komputerowa analiza modelu danej sceny i utworzenie na jej podstawie obrazu 2D. b. Funkcja umożliwiająca kopiowanie obrazu

Rasteryzacja (ang. rasterization or scan-conversion) Grafika rastrowa. Rysowanie linii (1) Rysowanie piksela

Obraz cyfrowy. Radosław Mantiuk. Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny w Szczecinie

Autodesk 3D Studio MAX Teksturowanie modeli 3D

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

Wybrane aspekty teorii grafiki komputerowej - dążenie do wizualnego realizmu. Mirosław Głowacki

1. Prymitywy graficzne

Synteza i obróbka obrazu. Modelowanie obiektów 3D

GRK 3. Dr Wojciech Palubicki

Sphere tracing: integracja z klasycznymi metodami symulacji i renderingu

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

Grafika trójwymiarowa. Grafika trójwymiarowa. Pojęcie kamery. Źródła światła - przykłady. Rzutowanie trójwymiarowych obiektów. Grafika trójwymiarowa

OpenGL i wprowadzenie do programowania gier

Bartosz Bazyluk Wprowadzenie Organizacja i tematyka zajęć, warunki zaliczenia.

Technologie Informacyjne

GRAFIKA CZASU RZECZYWISTEGO Wprowadzenie do OpenGL

Przegląd architektury PlayStation 3

Wstęp Podstawy Pierwszy program Definiowanie sceny 3D Przekształcenia geometryczne... 47

Grafika realistyczna. Oświetlenie globalne ang. global illumination. Radosław Mantiuk

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

Podstawy grafiki komputerowej

Transkrypt:

System graficzny scena 3D algorytm graficzny obraz 2D Potok graficzny 3D Radosław Mantiuk Dane wejściowe Algorytm tworzący obraz wyjściowy na podstawie sceny 3D Dane wyjściowe Wydział Informatyki Zachodniopomorski Uniwersytet Technologiczny System graficzny czasu rzeczywistego Oświetlenie lokalne Scena 3D Zbiór trójwymiarowych danych wejściowych wykorzystywanych do wygenerowania obrazu wyjściowego 2D. - Definicja geometrii obiektów 3D. - Definicja materiałów pokrywających obiekty. - Kolor powierzchni obiektów. - Tekstura. - Własności powierzchni. - Kamera. - Źródła światła. - Parametry środowiska (mgła, dym, itp.). OBIEKTY Scena 3D Scena 3D - Reprezentacje geometrii obiektów Reprezentacja obiektów geometrycznych - obiekty parametryczne opisane równaniami matematycznymi, - reprezentacja wielokątowa, - obiekty złożone, - reprezentacja fraktalna, - krzywe i powierzchnie, - obiekty CSG. KAMERA ŚWIATŁO Scena 3D - Modelowanie 3D Scena 3D - Reprezentacja wielokątowa (1) Trójkąt - obiekt podstawowy (współpłaszczyznowość wierzchołków trójkąta) Duża liczba identycznych obiektów: wykorzystanie tych samych algorytmów do przetwarzania wszystkich obiektów (architektura SIMD kart graficznych). Ograniczona dokładkość odwzorowania powierzchni krzywoliniowych (aproksymacje powierzchni krzywoliniowych). Duża liczba obiektów potrzebna do zbudowania prostego kształtu geom. (przykład kuli). 1

Scena 3D - Reprezentacja wielokątowa (2) Optymalizacja reprezentacji wielokątowej - unikanie powtórzeń definicji wierzchołków. Scena 3D - Reprezentacja hierarchiczna Obiekty złożone składają się z wielu obiektów podstawowych. Powtarzające się elementy reprezentowane są za pomocą transformacji geometrycznych. konfiguracja strip v10 konfiguracja fan v9 v8 konfiguracja mesh Courtesy of Andries van Dam OpenGL: Reprezentacja obiektów - trójkąty Definiowanie trójkąta (ang. triangle) oraz czworoboku (ang. quad). glbegin(gl_triangles); glend(); glvertex3f( 0.0f, +1.0f, 0.0f ); glvertex3f( -1.0f, 0.0f, 0.0f ); glvertex3f( +1.0f, -1.0f, 0.0f ); glbegin(gl_quads); glnormal3f( 0, 0, -1.0f ); gltexcoord2f( 1.0f, 1.0f ); glvertex3f( -0.5f, +0.5f, -0.5f ); gltexcoord2f( 0.0f, 1.0f ); glvertex3f( +0.5f, +0.5f, -0.5f ); gltexcoord2f( 0.0f, 0.0f ); glvertex3f( +0.5f, -0.5f, -0.5f ); gltexcoord2f( 1.0f, 0.0f ); glvertex3f( -0.5f, -0.5f, -0.5f ); glend(); glutsolidsphere() glutsolidcube(1) glscalef( 1.5f, 3.0f, 1.5f ); glutsolidcube(1); 2

glrotatef( 10.0f, 0.0f, 1.0f, 0.0f ); glrotatef( 60.0f, 1.0f, 0.0f, 0.0f ); glscalef( 1.5f, 3.0f, 1.5f ); glutsolidcube(1); gltranslatef( 1.0f, 1.0f, 0.0f ); glrotatef( 10.0f, 0.0f, 1.0f, 0.0f ); glrotatef( 60.0f, 1.0f, 0.0f, 0.0f ); glscalef( 1.5f, 3.0f, 1.5f ); glutsolidcube(1); macierz transformacji obiektów x ' $ r # 11 s x r 12 r 13 t $ x # # # y ' # r # = 21 r 22 s y r 23 t y # # # z ' r 31 r 32 r 33 s z t # # z # "# 1 % " # 0 0 0 1 % " x y z 1 $ % OpenGL: Kolejność przekształceń M' = M * R * T glrotatef( 45.0f, 0.0f, 0.0f, 1.0f ); gltranslatef( 2.0f, 0.0f, 0.0f ); glutwirecube( 1 ); glmatrixmode( GL_MODELVIEW ); glloadidentity(); gltranslatef( 1.0f, 1.0f, 0.0f ); glrotatef( 10.0f, 0.0f, 1.0f, 0.0f ); glrotatef( 60.0f, 1.0f, 0.0f, 0.0f ); glscalef( 1.5f, 3.0f, 1.5f ); glutsolidcube(1); M' = M * T * R gltranslatef( 2.0f, 0.0f, 0.0f ); glrotatef( 45.0f, 0.0f, 0.0f, 1.0f ); glutwirecube( 1 ); OpenGL: hierarchia obiektów Kamera otworkowa (ang. pinhole camera) glrotatef( 20.0f, 0.0f, 1.0f, 0.0f ); glrotatef( 10.0f, 1.0f, 0.0f, 0.0f ); glscalef( 0.7f, 0.7f, 0.7f ); gltranslatef( 1.2f, 1.0f, 0.0f ); glutwiresphere( 1, 20, 20 ); glscalef( 0.7f, 0.7f, 0.7f ); gltranslatef( -1.2f, 1.0f, 0.0f ); glutwiresphere( 1, 20, 20 ); glscalef( 0.5f, 1.0f, 1.0f ); gltranslatef( 0.0f, -0.7f, 0.0f ); glutwirecube( 1 ); glscalef( 2.0f, 0.5f, 1.0f ); gltranslatef( 0.0f, -3.5f, 0.0f ); glutwirecube( 1 ); Kamera komputerowa symuluje kamerę otworkową z nieskończenie małym otworem przesłony, bez soczewek. 3

Scena 3D: Definicja kamery Scena 3D: Field of View Definiuje jaka część przestrzeni trójwymiarowej będzie widoczna na wyjściowym obrazie 2D. Określa sposób rzutowania (prostokątne, perspektywiczne, itp.). lookp up kąt patrzenia (FOV) kąt patrzenia FOV (ang. Field of View) punkt położenia kamery punkt, na który patrzy kamera orientacja obrazu aspekt (ang. aspect ratio) powierzchnie obcinające (ang. clipping planes) fovy eyep Courtesy of Andries van Dam Courtesy of Andries van Dam OpenGL: Kamera Scena 3D: Źródła światła (1) macierz projekcji (GL_PROJECTION) Emisja fali elektromagnetycznej w zakresie widzialnym. glmatrixmode(gl_projection); glloadidentity(); gluperspective( fovy, aspect, znear, zfar ); glulookat( eyepx, eyepy, eyepz, lookpx, lookpy, lookpz, upx, upy, upz ); Y up gluperspective( 50, 1, 1, 1000); glulookat( 0, 0, 7, 0, 0, 0, 0, 1, 0 ); lookp światło punktowe światło kierunkowe światło stożkowe (point light) (distant light) (spot light) X zfar eyep znear Z Scena 3D: Źródła światła (2) OpenGL: Punktowe źródła światła Naturalne źródła światła - generowanie miękkich cieni (ang. soft shadows). glenable( GL_NORMALIZE ); // włączenie automatycznej normalizacji wektorów po skalowaniu float g_lightpos[4] = { 0.0f, 0.0f, 2.0f, 1.0f }; gllightfv(gl_light1, GL_POSITION, g_lightpos); światło liniowe światło powierzchniowe (linear light) (area light) GLfloat color[] = { 1.0f, 1.0f, 1.0f }; gllightfv(gl_light1, GL_AMBIENT, color); gllightfv(gl_light1, GL_DIFFUSE, color); gllightfv(gl_light1, GL_EMISSION, color); gllightfv(gl_light1, GL_SPECULAR, color); glenable(gl_light1); glenable(gl_lighting); 4

OpenGL: Kierunkowe źródła światła OpenGL: Źródła światła typu spot glenable( GL_NORMALIZE ); // włączenie automatycznej normalizacji wektorów po skalowaniu glenable( GL_NORMALIZE ); // włączenie automatycznej normalizacji wektorów po skalowaniu float g_lightdir[4] = { 0.0f, 0.0f, -1.0f, 0.0f }; gllightfv(gl_light1, GL_POSITION, g_lightpos); float g_lightpos[4] = { 0.0f, 0.0f, 2.0f, 1.0f }; gllightfv(gl_light1, GL_POSITION, g_lightpos); GLfloat color[] = { 1.0f, 1.0f, 1.0f }; gllightfv(gl_light1, GL_AMBIENT, color); gllightfv(gl_light1, GL_DIFFUSE, color); gllightfv(gl_light1, GL_EMISSION, color); gllightfv(gl_light1, GL_SPECULAR, color); glenable(gl_light1); GLfloat color[] = { 1.0f, 1.0f, 1.0f }; gllightfv(gl_light1, GL_AMBIENT, color); gllightfv(gl_light1, GL_DIFFUSE, color); gllightfv(gl_light1, GL_EMISSION, color); gllightfv(gl_light1, GL_SPECULAR, color); // dodatkowe parametry gllightf(gl_light0,gl_spot_cutoff,95.0); // kąt odcięcia pola świecenia gllightf(gl_light0,gl_spot_exponent,2.0); // współczynnik osłabienia gllightfv(gl_light0,gl_spot_direction,spotdir); // kierunek świecenia glenable(gl_lighting); glenable(gl_light1); glenable(gl_lighting); Scena 3D: Materiał OpenGL: Materiał Dla materiałów definiuje się ich własności odbijania światła. float colw[4] = { 1.0f, 1.0f, 1.0f, 1.0f }; glmaterialfv( GL_FRONT, GL_SPECULAR, colw); glmaterialf( GL_FRONT, GL_SHININESS, 40.0f ); float col[4] = { 0.01f, 0.6f, 0.01f, 1.0f }; glmaterialfv( GL_FRONT, GL_DIFFUSE, col); ambient diffuse specular ambinet + diffuse float cola[4] = { 0.01f, 0.2f, 0.01f, 1.0f }; glmaterialfv( GL_FRONT, GL_AMBIENT, cola); ambinet + diffuse + specular Scena 3D: Materiał - Rodzaje powierzchni Scena 3D: Materiał -Tekstury Własności powierzchni obiektów: - powierzchnie rozpraszające, - powierzchnie odbijające (lustrzane), - powierzchnie załamujące (przezroczyste). Teksturowanie powierzchni obiektów. " " " powierzchnia rozpraszająca (ambient + diffuse + specular) " powierzchnia odbijająca - kąt padania równy jest kątowi odbicia powierzchnia załamująca 5

Sceny 3D - Parametry środowiska Parametryzacja przestrzeni sceny. Potok graficzny czasu rzeczywistego Aplikacja Przetwarzanie geometrii Rasteryzacja Mgła Przetwarzanie geometrii Transformacjom poddawane są kolejne trójkąty znajdujące się na scenie. Transformacja modelu współrzędne lokalne modelu -> współrzędne globalne Transformacja modelu (ang. model transform) Transformacja widzenia (ang. view transform) Cieniowanie wierzchołków (ang. vertex shading) Rzutowanie (ang. projection) Obcinanie (ang. clipping) Mapowanie do współrzędnych rastrowych (ang. screen mapping) Obiekt znajduje się w początku układu globalnego (ang. model coordinates). glmatrixmode(gl_modelview); glloadidentity(); gltranslatef() glscalef() glrotatef() W wyniku transformacji jest przekształcany do położenia i kształtu docelowego (ang. world coordinates). Transformacja widzenia Transformacja obiektów do znormalizowanego układu współrzędnych. Cieniowanie wierzchołków Obliczanie koloru w wierzchołkach obiektów glmatrixmode(gl_projection); glloadidentity(); glulookat(); Y Rozwiązywanie równania oświetlenia uwzględniającego wzajemne oddziaływanie na siebie źródeł światła, obserwatora i materiałów obiektów. Dla każdego wierzchołka obliczany jest kolor RGB Równanie oświetlenia rozwiązywane jest osobno dla każdej składowej koloru. X i tot = i amb + N k (i diff " k=1 k + i spec ) Z Oś OY przechodzi przez punkt położenia kamery i środek obrazu. Góra obrazu skierowana jest w kierunku osi OY. 6

Rzutowanie perspektywiczne Rzutowanie prostokątne (równoległe) Ang. orthographic (parallel) projection - zachowanie proporcji obiektów - szybka implementacja - brak perspektywy glortho(); gluperspective( FOV, aspect, near, far); Clipping i culling Transformacja do współrzędnych ekranu Clipping usuwanie obiektów znajdujących się poza polem widzenia. x ' = x +1 2 " xres y ' = y +1 2 " yres Obliczenie współrzędnych rastrowych wierzchołków obiektów (0,0) Courtesy of Andries van Dam Culling - usuwanie obiektów zasłoniętych przez inne obiekty (np. ang. backface culling). (xres,yres) Rasteryzacja (ang. rasterization) Operacje wykonywane w przestrzeni rastrowej, prowadzące do obliczenia koloru RGB wszystkich pikseli wyjściowego obrazu rastrowego i umieszczenie ich we buforze ramki (ang. frame buffer). Wypełnianie trójkątów (ang. scan conversion) Określanie, które fragmenty trókątów należą do poszczególnych pikseli obrazu. Przygotowanie danych trójkątów (ang. triangle setup) Wypełnianie trójkątów (ang. scan conversion) Cieniowanie pikseli (ang. pixel shading) Łączenie danych (ang. merging) 7

Cieniowanie pikseli (ang. pixel shading) Obliczanie kolorów fragmentów trójkątów. Teksturowanie. Łączenie danych (ang. merging) Obliczenie koloru RGB pikseli na podstawie danych fragmentów poszczególnych trójkątów obejmujących ten piksel.# Umieszczenie danych w buforze kolorów/ramki (ang. frame buffer)# Obliczanie widoczności (bufor Z).# Obliczanie przezroczystości (kanał Alfa).# Mieszanie za pomocą bufora szablonu (ang. stencil buffer).# Wykorzystanie bufora akumulacyjnego (ang. accumulation buffer).# Wykorzystanie podwójnego buforowania (ang. double buffering).# fragment - zbiór danych, na podstawie których oblicza się kolor piksela Testowanie widoczności obiektów Bufor Z (ang. Z-buffer) Miejsce w pamięci osobne dla każdego piksela przeznaczone na zapamiętanie aktualnej wartości Z piksela. Wielkość bufora Z decyduje o precyzji testowania widoczności (obecnie stosuje się Z-bufory 32-bitowe). Potok graficzny Scena 3D wielokąty (położenie wierzchołków XYZ)) kolory (wektor RGB) wektory normalne (N) tekstury (współ. tektury (u,v)) Wykonywanie kolejnych operacji, dane wyjściowe z danej operacji są wejściem dla kolejnej. Potok akumuluje błędy. Zakres informacji nie powiększa się w kolejnych krokach potoku. bufor ramki (ang. frame buffer) Wartość bufora uaktualniana jest dla każdego piksela i każdego trójkąta. transformacja modelu (współ. lokalne do współ. globalnych) rzutowanie (macierz rzutowania) przejście do współ. rastrowych teksturowanie clipping cieniowanie Wartości z dla pikseli z wnętrza trójkąta są interpolowane na podstawie położenia wierzchołków trójkąta. pomijanie niewidocznych pikseli (bufor Z) Literatura 1. Tomas Akenine-Moller, Eric Haines, Naty Hoffman, Real-Time Rendering (3rd edition), A K Peters, 2008. 8