SYNTEZA OBRAZU. Rendering obrazu 3D



Podobne dokumenty
Efekty dodatkowe w rasteryzacji

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

Rendering obrazu 3D. Rendering. Synteza i obróbka obrazu

Oświetlenie obiektów 3D

Transformacje obiektów 3D

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

GRK 4. dr Wojciech Palubicki

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

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

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

Plan wykładu. Akcelerator 3D Potok graficzny

Trójwymiarowa grafika komputerowa rzutowanie

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

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

Filtrowanie tekstur. Kinga Laurowska

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

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

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

Architektura Komputerów

Transformacje. dr Radosław Matusik. radmat

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

Gry komputerowe: efekty specjalne cz. 2

Architektura systemów komputerowych Ćwiczenie 3

1. Prymitywy graficzne

GRK 5. dr Wojciech Palubicki

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

Ćwiczenia nr 4. TEMATYKA: Rzutowanie

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

Grafika komputerowa. Dr inż. Michał Kruk

Wykład 4. Rendering (1) Informacje podstawowe

GRK 5. dr Wojciech Palubicki

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

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

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

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

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

Grafika komputerowa Tekstury

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

Grafika komputerowa Wykład 10 Modelowanie oświetlenia

Obraz jako funkcja Przekształcenia geometryczne

Zjawisko widzenia obrazów

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

Podstawy grafiki komputerowej

Analiza obrazów - sprawozdanie nr 2

Teksturowanie (ang. texture mapping)

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Karty graficzne możemy podzielić na:

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

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

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

2 Przygotował: mgr inż. Maciej Lasota

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

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

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

Z ostatniego wzoru i zależności (3.20) można obliczyć n6. Otrzymujemy (3.23) 3.5. Transformacje geometryczne

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

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

Architektura Procesorów Graficznych

Przetwarzanie obrazów rastrowych macierzą konwolucji

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

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

Obrót wokół początku układu współrzędnych o kąt φ można wyrazić w postaci macierzowej następująco

Autodesk 3D Studio MAX Teksturowanie modeli 3D

Cieniowanie. Mirosław Głowacki

Kalibracja kamery. Kalibracja kamery

Synteza i obróbka obrazu. Algorytmy oświetlenia globalnego

HDR. Obrazy o rozszerzonym zakresie dynamiki

GRK 2. dr Wojciech Palubicki

a. Czym różni się sposób liczenia odbicia zwierciadlanego zaproponowany przez Phonga od zaproponowanego przez Blinna?

Interferencja. Dyfrakcja.

Synteza i obróbka obrazu HDR. Obrazy o rozszerzonym zakresie dynamiki

Techniki animacji komputerowej

Karta graficzna karta rozszerzeo odpowiedzialna generowanie sygnału graficznego dla ekranu monitora. Podstawowym zadaniem karty graficznej jest

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

Skrócona instrukcja obsługi darmowego programu do grafiki 3D. Anim8or. Wykonał: Rafał Wojszczyk

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

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

Przykładowe pytania na teście teoretycznym

Śledzenie promieni w grafice komputerowej

WSTĘP DO GRAFIKI KOMPUTEROWEJ

Zaawansowana Grafika Komputerowa

Przekształcenia geometryczne w grafice komputerowej. Marek Badura

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

Grafika 3D program POV-Ray - 1 -

RYSUNEK TECHNICZNY BUDOWLANY RZUTOWANIE PROSTOKĄTNE

OpenGL Światło (cieniowanie)

WPROWADZENIE DO GRAFIKI KOMPUTEROWEJ

OpenGL i wprowadzenie do programowania gier

Grafika komputerowa Wykład 4 Geometria przestrzenna

Julia 4D - raytracing

OpenGL Światło (cieniowanie)

GRAFIKA KOMPUTEROWA. Rozwiązania sprzętowe i programowe. Przyspieszanie sprzętowe. Synteza i obróbka obrazu

Algorytmy oświetlenia globalnego

gdzie (4.20) (4.21) 4.3. Rzut równoległy

Grafika komputerowa i wizualizacja

Grafika komputerowa. Zajęcia IX

Zamiana reprezentacji wektorowej na rastrową - rasteryzacja

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

Architektura Komputerów

Aleksandra Zając. Raport. Blender. Pokemon: Eevee

Transkrypt:

Synteza dźwięku i obrazu SYNTEZA OBRAZU Rendering obrazu 3D Rendering Proces tworzenia dwuwymiarowego obrazu (np. na ekranie) na podstawie trójwymiarowego opisu nazywa się renderingiem. Na podstawie informacji wejściowych: geometrii sceny 3D (opisu obiektów i ich połoŝenia na scenie), połoŝenia i charakteru źródeł światła, połoŝenia i kierunku patrzenia kamery (obserwatora) Podczas renderingu tworzony jest dwuwymiarowy obraz zdjęcie sceny.

Etapy renderingu Podstawowe etapy renderingu: przekształcenia (transformacje) sceny ustawienie źródeł światła rzutowanie na płaszczyznę usuwanie niewidocznych powierzchni obcinanie widoku przekształcenie widoku rasteryzacja obliczenie barwy kaŝdego piksela obrazu Rendering etap wstępny Renderowanie całego świata 3D nie jest potrzebne. Interesuje nas tylko to, co będzie widać na zdjęciu. Dlatego przed etapem rasteryzacji (oświetlanie, cieniowanie, itp.) wykonuje się: wyznaczanie widoku ustawiamy świat tak, jak widzi go obserwator, wyznaczanie powierzchni widocznych - wyrzucamy to co jest zasłonięte lub z tyłu, obcięcie widoku wyrzucamy to co nie zmieści się w kadrze

Przekształcenia sceny Układ współrzędnych obiektu (lokalny, local space) prywatny układ wsp. danego obiektu. Układ wsp. świata (sceny, world space) opisuje scenę, na której rozmieszczane są poszczególne obiekty. Układ wsp. widoku (obserwatora, view space) - związany z widzem oglądającym scenę. Przekształcenia sceny: local world dla kaŝdego obiektu (world tr.), world view dla całej sceny (view tr.) Przekształcenia sceny Współrzędne lokalne, świata i widoku

Przekształcenia geometryczne 2D Elementarne przekształcenia geometryczne modelu na płaszczyźnie (2D): translacja (przesunięcie) skalowanie obrót (rotacja) Opis punktu w układzie współrzędnych kartezjańskich: punkt (x,y) wektor P = [x y] zaczepiony w początku układu współrzędnych Translacja (przesunięcie) Translacja (translation) punktu (x,y) do punktu (x,y ): x = x + d x y = y + d y P = P + T x' x d = + y' y d x y

Skalowanie obiektu Skalowanie (scaling): x = s x x y = s y y x' sx = y' x s y y P = S P Skalowanie: jednorodne (s x = s y ) niejednorodne (s x s y ) Obrót obiektu Obrót (rotation) o kąt θ: x = x cos θ y sin θ y = x sin θ + y cos θ x' cosθ = y' sinθ sinθ x cosθ y P = R P

Składanie przekształceń Omówione przekształcenia mogą być dowolnie składane ze sobą. Przykład: obrót obiektu wokół punktu P =(x,y ): przesunięcie P do (,) obrót o kąt θ przesunięcie (,) z powrotem do P P = T(x,y ) R(θ) T(-x,-y ) P Składanie przekształceń Przykład 2: przesunięcie P do (,) skalowanie obrót przesunięcie (,) do P 2 Składanie przekształceń nie jest przemienne!

Macierzowa reprezentacja przekształceń Przekształcenia: translacja: P = P + T skalowanie: P = S P obrót: P = R P Chcemy zapisać wszystkie operacje w postaci mnoŝeń macierzy łatwiej składać przekształcenia ze sobą. UŜywa się współrzędnych jednorodnych. Macierzowa reprezentacja przekształceń 2D przesunięcie: skalowanie: obrót: = y x d d y x y x = y x s s y x y x = cos sin sin cos y x y x θ θ θ θ

Przekształcenia pochylające Przekształcenia pochylające (sheer): pochylenie wzdłuŝ osi x: P = SH x P pochylenie wzdłuŝ osi y: P = SH y P a, b współczynniki proporcjonalności = y x a y x = y x b y x Przekształcenia afiniczne Przekształcenia afiniczne: zachowują równoległość linii (linie, które były równoległe do siebie, pozostają równoległe po przekształceniu); nie muszą zachowywać odległości i kątów Wszystkie omówione przekształcenia: translacja, skalowanie, obrót, pochylanie są afiniczne. Przekształcenia, które nie są afiniczne, nazywa się czasami przekształceniami deformującymi.

Przekształcenia w trzech wymiarach Przekształcenia obiektów w trzech wymiarach opisywane są przez macierze przekształceń o wymiarach 4 x 4. Przekształcenia: translacja o (d x,d y,d z ) skalowanie o (s x,s y,s z ) obrót wokół osi x, y, z pochylenie na płaszczyźnie xy, xz, yz Składanie przekształceń 3D MnoŜenie macierzy przekształceń. Przykład:. Stan początkowy 2. Przesunięcie P do (,,) 3. Obrót P P 2 wokół osi y 4. Obrót P P 2 wokół osi x 5. Obrót P P 3 wokół osi z 2+3 4 5

Macierze przekształceń 3D Translacja Skalowanie Obrót: oś x oś y oś z z y x T T T z y x s s s cos sin sin cos θ θ θ θ cos sin sin cos θ θ θ θ cos sin sin cos θ θ θ θ Rzutowanie Rzutowanie (projection) - transformacja obiektów 3D w obiekty 2D; tworzenie płaskiego obrazu (zdjęcia) sceny 3D. Dwa zasadnicze rodzaje rzutów: rzut równoległy rzut perspektywiczny (ortographic projection), (perspective projection)

Rzut równoległy Rzut równoległy nie zachowuje perspektywy, zachowuje kształt i rozmiar obiektów. Rodzaje rzutu równoległego (i przykłady): prostokątny ortogonalne: przedni, górny, boczny aksonometryczne: izometryczny ukośny Metoda stosowana raczej w projektowaniu CAD. Przy renderingu rzut równoległy jest prostszy, wystarczy pominąć współrzędne z. Rzut równoległy Trzy rzuty prostokątne: Rzut ukośny: Rzut izometryczny kierunek rzutowania tworzy jednakowe kąty ze wszystkimi osiami

Rzut izometryczny Rzut stosowany często w starszych grach komputerowych. Rzut perspektywiczny Rzut perspektywiczny odwzorowuje sposób widzenia człowieka (skrót perspektywiczny). Wielkość rzutu zmniejsza się przy wzroście odległości między środkiem rzutowania a obiektem. Zniekształcane są kształty i wymiary obiektów. Rodzaje: jednopunktowy dwupunktowy trzypunktowy

Bryła widzenia Bryła widzenia ograniczona jest: liniami od obserwatora do krawędzi widoku, przednią płaszczyzną obcinania, tylną płaszczyzną obcinania Elementy leŝące poza bryłą widzenia są na późniejszym etapie obcinane (clipping). Normalizacja współrzędnych Po dokonaniu rzutowania perspektywicznego, współrzędne punktów są często konwertowane do układu znormalizowanego, tak Ŝe punkty wewnątrz bryły widzenia przyjmują wartości: współrzędne x, y z zakresu [-, ] współrzędna z (głębokość) z zakresu [, ] z = : przednia płaszczyzna obcinania (najbliŝej obserwatora), z = : tylna płaszczyzna obcinania (najdalej od obserwatora)

Wyznaczanie powierzchni widocznych Przy renderingu, trójkąt będący bliŝej obserwatora musi zakryć trójkąt będący dalej (głębiej) w obrazie. Ponadto trójkąty mogą się przecinać i zasłaniać częściowo. NaleŜy zastosować algorytm wyznaczania powierzchni widocznych. W kartach graficznych najczęściej stosuje się dwa etapy wyznaczania: wstępnie usunięcie tylnych powierzchni, podczas rasteryzacji wyznaczenie zasłoniętych powierzchni za pomocą bufora głębokości (z-buffer). Usuwanie tylnych ścian MoŜna uprościć szukanie powierzchni widocznych poprzez eliminację wielokątów tylnych, które na pewno nie są widziane przez obserwatora. Ściany tylne wektory normalne skierowane od obserwatora są eliminowane Ściany przednie wektory normalne skierowane do obserwatora są zachowywane Operacja ta nazywa się backface culling.

Obcinanie Obcinanie (clipping) usuwa elementy obiektów leŝące poza bryłą widzenia. Rozpatrywane są kolejne trójkąty siatki. Trójkąt leŝy w całości wewnątrz bryły widzenia jest przepuszczany. Trójkąt leŝy w całości poza bryłą jest odrzucany. Trójkąt leŝy częściowo wewnątrz bryły jest dzielony na dwa, pozostaje tylko część zawarta wewnątrz bryły. Transformacja widoku Obliczone wartości pikseli będą zapisywane do bufora obrazu. Typowo renderowany obraz ma zająć cały obszar (cały bufor), ale moŝemy chcieć wykorzystać tylko fragment bufora (np. podzielić ekran lub zostawić miejsce na GUI). Transformacja widoku przetwarza współrzędne widoku na wsp. bufora. Obszar bufora wykorzystywany przez jeden obraz nazywa się viewport.

Rasteryzacja Mamy teraz zbiór pustych trójkątów leŝących na płaszczyźnie widoku. Rasteryzacja zajmuje się pokolorowaniem obrazu, czyli wyznaczeniem barwy kaŝdego piksela. Przeprowadzane są takie operacje jak: cieniowanie teksturowanie wyznaczanie zasłaniania (bufor głębokości) wyznaczanie cieni przezroczystość (alpha blending) wszelkie inne efekty specjalne Rasteryzacja Mamy teraz płaski obraz 2D, ale dla kaŝdego werteksa mamy informacje dotyczące sceny 3D: połoŝenie (x, y, z) kolor współrzędne tekstury (u, v) kierunek wektora normalnego Wektor normalny (normal vector) jednostkowy wektor prostopadły do płaszczyzny. Wektor normalny wierzchołka uśredniony z wektorów normalnych sąsiednich trójkątów.

Wektory normalne Wektory normalne trójkąta i werteksu Cieniowanie Cieniowanie (shading) ustalanie barwy powierzchni obiektu na podstawie: odległości od źródła światła kąta pomiędzy powierzchnią a kierunkiem promienia światła właściwości powierzchni

Cieniowanie Analogia do rysunków ołówkowych Źródła światła Wygląd końcowego obrazu będzie zaleŝał od rodzaju i połoŝenia źródeł światła. Dwa podstawowe typy źródła światła: światło otoczenia (ambient) - rozproszone, bezkierunkowe źródło światła (np. słoneczne) bezpośrednie (direct) źródło opisane przez: pozycję, kierunek, barwę Zwykle stosuje się kombinację źródła światła otoczenia oraz jednego lub więcej źródeł światła bezpośredniego.

Źródła światła bezpośredniego Podstawowe typy źródeł światła bezpośredniego: punktowe (point) promienie rozchodzą się równomiernie we wszystkich kierunkach z jednego punktu kierunkowe (directional) źródło punktowe umieszczone dostatecznie daleko od oświetlanych obiektów, tak Ŝe promienie są równoległe reflektor (spotlight) promienie są ograniczone przez stoŝek ( abaŝur ) Źródła światła bezpośredniego Punktowe Kierunkowe Reflektor

Źródła światła (c.d.) Źródła światła są teŝ określone przez: typ pozycję (punktowe i reflektory) kierunek (kierunkowe i reflektory) barwę zasadnicza barwa światła (ambient) barwa po odbiciu rozproszonym (diffuse) barwa odblasku (specular) współczynniki tłumienia Źródła światła Zjawiska związane ze światłem Zanikanie światła z odległością (np. odwrotnie kwadratowe) Odbicia światła (rozpraszające, kierunkowe) Parametry źródła światła barwa światła (temperatura) moc (zakres, tłumienie) pozycja, kierunek charakterystyka kierunkowa (reflektory)

Materiały Materiał pokrywa powierzchnię trójkąta i określa jak wpływa on na oświetlenie sceny. Właściwości materiału: odbicie światła otoczenia (bezkierunkowego) ambient reflection, odbicie światła bezpośredniego (promieni mających kierunek) diffuse reflection, emisja światła (emmision), odblaski na powierzchni (specular reflection) W praktyce określa się barwę i przezroczystość dla kaŝdej z właściwości materiału. Materiały przykład właściwości Barwa materiału (bez światła): ambient diffuse specular emmision

Prawo cosinusów Lamberta Cieniowanie wykorzystuje prawo Lamberta: intensywność odbitego światła jest wprost proporcjonalne do cosinusa kąta między kątem padania światła a wektorem normalnym do powierzchni odbijającej. f r r ( θ ) = max( cos θ,) = max( L n, ) L wektor jednostkowy padającego światła n wektor normalny Cieniowanie płaskie Cieniowanie płaskie (flat shading). Dla kaŝdego wielokąta siatki, jego barwa jest obliczana tylko raz i uŝywana do cieniowania całego wielokąta. Kolor wielokąta jest obliczany na podstawie: kąta między wektorem normalnym wielokąta a kierunkiem promienia światła, intensywnością światła barwą powierzchni barwą światła

Cieniowanie płaskie powierzchni szkieletu JeŜeli kaŝda ściana szkieletu (wielokąt) będzie cieniowana niezaleŝnie, widoczne są granice między ścianami (róŝna barwa sąsiednich wielokątów). Zwiększenie liczby wielokątów nie daje spodziewanego rezultatu (tzw. efekt pasm Macha właściwości receptorów oka). Cieniowanie płaskie z interpolacją Rozszerzenie metody cieniowania płaskiego: natęŝenie światła obliczane jest w kilku punktach wielokąta w pozostałych punktach wartość natęŝenia jest obliczana na drodze interpolacji Najprostsza metoda: wielokąt jest trójkątem obliczamy natęŝenie światła w wierzchołkach trójkąta (w werteksach) interpolujemy wartości natęŝenia dla pozostałych punktów

Cieniowanie Gourauda Cieniowanie Gourauda polega na interpolowaniu jasności albo interpolowaniu barwy. Eliminuje nieciągłości jasności sąsiednich wielokątów. Na podstawie wektorów normalnych dla kaŝdego werteksu obliczana jest barwa wierzchołków siatki. Interpolacja liniowa między wierzchołkami wzdłuŝ krawędzi między krawędziami Cieniowanie Gourauda Siatka złoŝona z 3 wielokątów (program µlathe) Cieniowanie płaskie Cieniowanie Gourauda Wadą algorytmu Gourauda są zniekształcenia w przypadku odblasków na powierzchni obiektu.

Cieniowanie Phonga Cieniowanie z interpolacją wektora normalnego. Interpoluje wektor normalny do powierzchni, nie jasność. Konieczna jest znajomość wektorów normalnych dla kaŝdego wierzchołka wielokąta Interpolacja wektora normalnego wzdłuŝ krawędzi Interpolacja wektora normalnego w wierszach między krawędziami Dla kaŝdego ze znalezionych wektorów normalnych stosuje się model oświetlenia Cieniowanie Phonga Cieniowanie Phonga daje lepsze rezultaty w porównaniu z cieniowaniem Gourauda pod względem odwzorowania odblasków na powierzchni obiektu (odbić zwierciadlanych). Znacznie większa złoŝoność konieczność obliczania wektora normalnego dla kaŝdego piksela.

Problemy cieniowania z interpolacją Wszystkie metody cieniowania z interpolacją mają wspólne problemy: szkielet wielokątowy jest widoczny wprowadzane są zakłócenia perspektywiczne wynik zaleŝy od orientacji wielokąta (mniejsze zniekształcenia przy stosowaniu trójkątów) wektory normalne do wierzchołków nie zawsze reprezentują geometrię powierzchni Porównanie metod cieniowania brak Flat Gouraud Phong

Odwzorowanie szczegółów powierzchni Zastosowanie modeli cieniowania do siatki wielokątowej pozwala uzyskać tylko gładkie, jednolite powierzchnie. Najprostszy sposób odwzorowania szczegółów: uŝycie detali wielokątowych szczegóły obrazu reprezentowane za pomocą wielokątów. Jest to metoda bardzo nieefektywna. Najczęściej stosuje się pokrywanie powierzchni wielokątów obrazami bitowymi - teksturami. Tekstury Sama siatka wielokątowa + cieniowanie dają tylko informację o kształcie obiektu. Aby nadać obiektowi odpowiedni wygląd, w modelu 3D stosuje się tekstury (textures). Są to obrazy rastrowe (bitmap), które są nakładane na powierzchnię modelu 3D (na wielokąty siatki).

Tekstury Przykład - scena bez teksturowania (tylko cieniowanie) oraz z nałoŝeniem tekstur Tekstury Tekstura jako bitmapa oraz nałoŝona na siatkę wielokątową obiektu

Odwzorowanie tekstury Odwzorowanie tekstury ang. texture mapping Odniesienie współrzędnych tekstury (2D) do współrzędnych siatki wielokątowej (3D). Tekstura (texture) dwuwymiarowa mapa bitowa zawierająca pewien obraz. Teksel (texel) kaŝdy piksel tekstury. Mapa tekstury jest określona we własnym układzie współrzędnych (u, v). Konieczność przeznaczenia duŝego obszaru pamięci na przechowywanie tekstur. Odwzorowanie tekstury Współrzędne tekstury: oznaczane jako (u, v) unormowane do zakresu [; ] dla werteksa siatki podajemy współrzędne tekstury współrzędna z zakresu (; ) wycinamy fragment tekstury współrzędna większa niŝ tekstura jest powielana Często jedną teksturę nakłada się na grupę wielokątów.

Odwzorowanie tekstury Jak to działa: mamy współrzędne piksela znajdujemy współrzędne elementu siatki, który ma być narysowany znajdujemy współrzędne teksela tekstury nałoŝonej na rysowany wielokąt próbkujemy kolor tekstury we wskazanym miejscu kolorujemy piksel MIP mapping JeŜeli tekstura jest za mała jest ona powiększana ( pikseloza ). JeŜeli jest za duŝa konieczność zmniejszenia, utrata szczegółów. MIP mapping przechowywanych jest kilka (np. 8) wersji tekstury o róŝnych rozmiarach (rozdzielczościach). Rozmiar tekstury jest dobierany w zaleŝności od tego jak duŝą powierzchnię ma pokryć tekstura. Tekstury MIP mogą być przygotowane przez twórców lub generowane automatycznie.

MIP mapping Przykłady tekstur w róŝnych rozdzielczościach Tekstura powiększona (bez MIP) Filtrowanie tekstur Wyliczamy współrzędne teksela. Jaki pobieramy kolor dla piksela? Bezpośrednie pobranie koloru teksela nearest-point sampling jest najszybsze, ale powoduje artefakty, widoczne są pojedyncze piksele. Filtrowanie tekstury kolor piksela jest obliczany metodą uśrednienia koloru kilku sąsiednich tekseli. Powoduje to wygładzenie tekstury.

Filtrowanie tekstur Filtrowanie dwuliniowe (bilinear filtering) wyznaczanie wartości kaŝdego piksela przez uśrednienie wartości wyliczonego teksela oraz czterech sąsiednich tekseli. Filtrowanie trójliniowe (trilinear filtering) uśrednianie tekseli z dwóch tekstur (MIP-maps) o róŝnych rozdzielczościach Filtrowanie anizotropowe (anisotropic filtering) jak trójliniowe, ale uśrednia teksele z obszaru zaleŝnego od kąta nachylenia wielokąta i jego odległości Filtrowanie tekstur Przykład: tekstura o rozmiarze 64 x 64 pikseli. Obliczone współrzędne (u,v) = (,37;,79) point-sampling: wsp. tekstury = (23,68; 5,56) zaokrąglamy: (24; 5) pobieramy kolor z tego teksela filtrowanie dwuliniowe: początek tak samo uśredniamy teksele: (24; 5), (23; 5), (25; 5), (24; 5), (24; 52) kolorujemy piksel obliczoną wartością

Filtrowanie tekstur Przykład: brak filtrowania tekstur (point sampling) oraz tekstury filtrowane Filtracja anizotropowa Anizotropowy zaleŝny od kierunku. F. anizotropowa bierze pod uwagę kąt, pod którym widz patrzy na teksturowaną powierzchnię (róŝne skalowanie tekstury w kierunku u i v). Potrzebne są dodatkowe poziomy mip-mappingu. Znaczne zwiększenie złoŝoności więcej obliczeń, większe zuŝycie zasobów. F. trilinear F. anizotropowa

Filtrowanie tekstur Przykłady filtrowania tekstur: dwuliniowe trójliniowe anizotropowe Tekstury jako tło (pre-rendered background) W niektórych grach komputerowych jedynie obiekty na pierwszym tle są obiektami 3D, renderowanymi w czasie rzeczywistym. Tło (scenografia) jest mapą bitową, uzyskaną poprzez rendering na etapie produkcji gry. Upraszcza to rendering w czasie grania kosztem mniej realistycznej grafiki.

Skybox Skybox jest techniką stosowaną w grach komputerowych. Gracz i jego otoczenie poruszają się wewnątrz sześcianu, którego ściany są pokryte teksturą, np. obrazem nieba. Odwzorowanie nierówności powierzchni Tekstury są zawsze gładkie. NałoŜenie na obiekt tekstury przedstawiającej np. mur z cegły nie da realistycznego efektu. Kierunek oświetlenia przy tworzeniu tekstury jest inny niŝ w końcowej scenie. Mapowanie nierówności (bump mapping) technika pozwalająca uzyskać wraŝenie nierówności powierzchni poprzez symulację przesunięcia wybranych pikseli na osi z do przodu lub do tyłu przy pomocy mapy przesunięcia (mapy nierówności).

Odwzorowanie nierówności powierzchni Mapa nierówności tekstury: stopień szarości piksela odpowiada wypukłości piksela tekstury. Stosuje się dwa rodzaje map nierówności (height map): przesunięcie tekseli tekstury na osi z (przyciemnienie lub rozjaśnienie pikseli), modyfikacja wektorów normalnych do powierzchni Mapę nierówności nakłada się razem z teksturą na powierzchnię siatki wielokątowej. Bump mapping Dwie najczęstsze realizacja BM: prostsza (emboss BM) sumuje się teksturę z jej kopią, przesuniętą wg mapy nierówności i przyciemnioną; metoda stosowana np. w prostszych w grach; bardziej złoŝona, ale dokładniejsza modyfikuje się wektory normalne w kaŝdym z punktów, wg mapy nierówności, po czym oblicza się wpływ światła; metoda stosowana przy cieniowaniu Phonga oraz w algorytmach typu raytracing.

Bump maping przykład Torus bez odwzorowania powierzchni i z wykorzystaniem techniki bump mapping Bump maping przykład 2 Bez mapowania Mapa nierówności Wynik

Normal mapping Normal mapping, nazywane teŝ Dot3 bump mapping, to odmiana metody mapowania nierówności powierzchni: wektory normalne nie są modyfikowane, lecz zastępowane wektorami zapisanymi w mapie nierówności, mapa nierówności nie jest monochromatyczna, lecz zawiera informacje dla trzech kanałów RGB Bardziej dokładne odwzorowanie powierzchni; wymaga stosowania cieniowania Phonga. Normal mapping Za pomocą metody normal mapping moŝna uzyskać dokładniejszy wygląd obiektu za pomocą mniej złoŝonej siatki wielokątowej.

Displacement mapping Displacement mapping odwzorowanie przemieszczeń zamiast imitować nierówności, metoda tworzy prawdziwe nierówności: siatka trójkątów dzielona jest na mniejsze trójkąty siatka jest deformowana zgodnie z mapą przemieszczeń, na zdeformowaną siatkę nakładana jest tekstura, która układa się na wygiętej powierzchni. Musi być zastosowane na etapie przekształceń siatki, przed rasteryzacją! Parallax mapping Parallax mapping - jeden z najnowszych algorytmów odwzorowania nierówności. SłuŜy głównie do odwzorowania obiektów typu otwór po pocisku. Polega na nałoŝeniu na teksturę jej kopii, przekształconej przez funkcję zaleŝną od informacji zapisanej w mapie wysokości i od kierunku obserwacji. Inne nazwy: Photonic Mapping, Offset Mapping, Virtual Displacement Mapping

Odbicia pomiędzy obiektami Dla zwiększenia realizmu modeluje się odbicie innych obiektów na powierzchni innego obiektu. Przykład: odbicie pokoju na powierzchni lustra lub szklanej kuli. Konieczność uwzględnienia deformacji. Algorytm tego typu nosi nazwę reflection mapping (mapowanie odbić) lub environment mapping (mapowanie środowiska). Mapowane środowisko traktowane jest jako dynamiczna tekstura, która jest obliczana w czasie rzeczywistym, a następnie nakładana na powierzchnię odbijającą. Environment mapping Dwie zasadnicze metody mapowania środowiska: mapowanie sferyczne (spherical EM) tekstura jest zdejmowana z kuli, która znajduje się nieskończenie daleko od obiektu, w którym się ona odbija ( rybie oko ) mapowanie kubiczne (cubic EM) obiekt znajduje się wewnątrz sześcianu pokrytego teksturą, piksel tekstury wyznaczany jest na podstawie przebiegu promieni

Zaawansowane techniki mapowania EMBM Environment-Mapped Bump Mapping NałoŜenie na siebie: tekstury, mapy nierówności (bump map) mapy środowiska (environment map) Przykładowe efekty: odbicia w zafalowanej wodzie odbicia na powierzchni rozgrzanego asfaltu jezdni Zasłanianie obiektów RóŜne obiekty mogą się zasłaniać nawzajem. Chcemy narysować te fragmenty, które są widoczne (są najbliŝej obserwatora). Mamy informację o współrzędnej z wierzchołków siatki wielokątowej. Moglibyśmy wyznaczyć trójkąt, który jest bliŝej obserwatora i narysować go. Ale co zrobić gdy trójkąty przecinają się ze sobą?

Algorytm malarza Algorytm malarza (painter s algorithm) - naiwne podejście do problemu zasłaniania. Wszystkie obiekty są sortowane wg. połoŝenia na osi z. Obiekty są malowane w kolejności od połoŝonych najgłębiej do połoŝonych najbliŝej Algorytm nie radzi sobie z przecinającymi się płaszczyznami. Algorytm bufora głębokości (z-buffer) Potrzebne dwa obszary pamięci o takim samym rozmiarze: pamięć obrazu F wartość barwy bufor z wartość z dla kaŝdego piksela F Schemat działania: inicjalizacja bufora z (maksymalna głębokość) przeglądanie kolejnych trójkątów, piksele wiersz po wierszu jeŝeli współrzędna z punktu jest większa od zapisanej w buforze, bufor jest uaktualniany nową wartością, a piksel jest wpisywany do pamięci obrazu.

Algorytm bufora głębokości Ilustracja działania metody Algorytm bufora głębokości Przykład obrazu i bufora głębokości. Implementacja bufora z w kartach graficznych: sprzętowa, bufor 24-bitowy lub 32-bitowy (przy 6 bitach występują zniekształcenia).

Bufory głębokości z-buffer i w-buffer Bufor z (z-buffer) bazuje na unormowanych współrzędnych z. Rozkład tych współrzędnych jest nieliniowy większość przypada na początkowy zakres. MoŜe te powodować błędy w planach bliskich (przenikanie się obiektów). Bufor w (w-buffer) eliminuje te błędy kosztem większej złoŝoności obliczeniowej. Wykorzystuje współrzędne w obliczane podczas przekształcenia (rzutowania) perspektywicznego. Cienie obiektów Cienie dodają realizmu i pozwalają ustalić połoŝenie obiektów.

Shadow mapping Algorytm mapowania cieni (shadow mapping) działa w dwóch etapach: wyznaczenie mapy cieni - dokonuje się renderingu (bez wyznaczania koloru) z punktu widzenia źródła światła, zapisuje się wynik w mapie cieni; podczas właściwego renderingu (z punktu widzenia obserwatora) dokonuje się projekcji mapy cieni na obraz, barwa pikseli obrazu jest modyfikowana zgodnie z tą mapą. NaleŜy odróŝniać shadow mapping od cieniowania (shading). Shadow mapping Obraz bez cieni Wyznaczenie mapy cieni Projekcja mapy cieni Obraz z cieniami

Bryła cienia (shadow volume) Shadow volume (bryła cienia) to inna metoda tworzenia cieni. Jest bardziej dokładna, ale bardziej złoŝona. Wyznaczenie bryły cienia - za pomocą linii łączących źródło światła z werteksami wielokątów. Następnie wyznaczenie elementów sceny, które z punktu widzenia obserwatora leŝą wewnątrz bryły cienia. Bryła cienia (shadow volume) Implementacja praktyczna: renderowana jest scena tak, jakby cała była w cieniu; dla kaŝdego źródła światła tworzona jest maska, zapisywana w buforze maski (stencil buffer), maska ma otwory w miejscach, w których nie ma cienia; scena jest renderowana ponownie, ale z oświetleniem, w miejscach nie przykrytych przez maskę. Istnieją róŝne algorytmy róŝniące się metodą tworzenia maski (przyspieszenie obliczeń).

Bryła cienia Przykład: http://developer.nvidia.com/object/robust_shadow_volumes.html Przezroczystość (alpha blending) Powierzchnie mogą być przezroczyste lub półprzezroczyste (np. szkło) mogą częściowo przepuszczać światło. Obiekty zasłaniane mogą być więc częściowo widoczne. Powierzchnie przezroczyste obiekty za nimi są widoczne z ew. lekkim załamaniem promieni światła Powierzchnie półprzezroczyste promienie światła zmieniają kierunki (załamanie), obiekty z tyłu są rozmazane

Przezroczystość bez załamań Nie uwzględniane są zjawiska związane z załamaniem promieni światła. Efekt nie jest realistyczny, ale często efekt jest bardziej uŝyteczny niŝ w metodzie z załamaniami. Przezroczystość interpolowana interpolacja liniowa barwy piksela obliczonej dla wielokąta zasłaniającego i zasłanianego, biorąc pod uwagę współczynnik przezroczystości. Przezroczystość filtrowana wielokąt traktowany jest jak filtr przezroczysty, który selektywnie przepuszcza róŝne długości fali Przezroczystość z załamaniem Uwzględnienie załamań promieni światła jest trudniejsze róŝnica linii widzenia geometrycznej i optycznej. Konieczność modelowania dyspersji róŝny kąt załamania dla fal o róŝnej długości fali. Modelowanie polega na obliczaniu wektora załamania promieni światła.

Efekty atmosferyczne Atmospheric effect modyfikacja oświetlenia spowodowana działaniem efektów takich jak: mgła dym ogień opary falowanie rozgrzanego powietrza deszcz zmętnienie lustra wody refleksy świetlne rozmycie ruchu Systemy cząsteczkowe Systemy cząsteczkowe (particle system) słuŝą do generowania efektów takich jak ogień, dym, chmury, iskry i inne trudne do uzyskania klasycznymi metodami renderingu. Definicja emitera pozycja, szybkość generowania cząsteczek, kierunek, czas Ŝycia, zmiany koloru, itp. Symulacja tworzenie kolejnych etapów rozwoju systemu Rendering rysowanie cząsteczek

Systemy cząsteczkowe KaŜda cząsteczka posiada parametry, np. pozycja kierunek (algorytm + losowy) stan (np. rodzaj, aktywność) czas Ŝycia (po którym cząsteczka ginie) Sama cząsteczka jest najczęściej niewielką teksturą (sprite), nakładaną na obraz w obliczonej pozycji (nie na siatkę obiektu!). Odwzorowanie mgły Efekt mgły (fog) symuluje widoczność obiektów w naturze: bliŝsze obiekty są bardziej wyraźne dalsze obiekty są bardziej przysłonięte przez mgłę. Brak efektu mgły Symulacja mgły

Odwzorowanie mgły Metody symulacji mgły: Fog Table (Pixel Fog) starsza metoda, obliczenia wykonywane są dla kaŝdego piksela przy pomocy informacji o głębi piksela zapisanej w buforze. Jest to efekt dodatkowy, nakładany na wynik rasteryzacji. Fog Vertex efekt mgły obliczany jest dla kaŝdego wierzchołka wielokąta, a następnie aproksymowany dla pikseli wielokąta, po czym jest on uwzględniany przy ustalaniu barwy piksela. Ta metoda jest częścią renderingu. Oświetlenie wolumetryczne Volumetric lighting Algorytm umoŝliwiający uzyskanie efektu promieni światła prześwitujących np. przez chmury lub przez okno. Strumień światła ze źródła jest traktowany jako przezroczysty stoŝek, posiadający pewną objętość. Obiekty znajdujące się wewnątrz tego stoŝka (dym, chmury, para wodna) mają moŝliwość przepuszczania światła.

Okluzja otoczenia Okluzja otoczenia (ambient occlusion) - zaciemnienie obszarów w zagłębieniach, kątach oraz pod i pomiędzy powierzchniami. Inne efekty Caustic promienie światła odbite lub załamane przez zakrzywioną powierzchnię, np. światło na wodzie.

Inne efekty Subsurface scattering efekt promieni świetlnych, które wnikają do obiektu, odbijają się kilkakrotnie, po czym opuszczają obiekt. Metoda pozwala symulować wygląd np. skóry człowieka czy przedmiotów z marmuru. Inne efekty Lens flare zjawisko odbicia światła w systemie soczewek. Motion blur rozmycie obiektów szybko poruszających się Głębia ostrości (depth of field) rozmycie obiektów znajdujących się poza pierwszym planem

Anti-aliasing Przy rasteryzacji stosuje się często anti-aliasing, który wygładza ukośne linie. Przy rasteryzacji rozmywa się krawędzie wielokątów siatki. Anti-aliasing jest często dokonywany sprzętowo. Bibliografia Microsoft: Dokumentacja DirectX 9.c Frank D. Luna: Introduction to 3D Game Programming with DirectX 9.c A Shader Approach. Wordware Publishing, 26 Wendy Jones: Beginning DirectX. Premier Press, 24 Jeremy Birn: Cyfrowe oświetlenie i rendering. Helion 27 J. Foley, A. van Dam, S. Feiner, J. Hughes, R. Phillips: Wprowadzenie do grafiki komputerowej. WNT, 2 Wikipedia: http://en.wikipedia.org/wiki/category:3d_computer_graphics Internet Materiały wyłącznie do uŝytku wewnętrznego dla studentów przedmiotu Synteza dźwięku i obrazu, prowadzonego przez Katedrę Systemów Multimedialnych Politechniki Gdańskiej. Wykorzystywanie do innych celów oraz publikowanie i rozpowszechnianie zabronione. This presentation is intended for internal use only, for students of Multimedia Systems Department, Gdansk University of Technology, attending the Sound and image synthesis course. Other uses, including publication and distribution, are strictly prohibited.