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

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

Plan wykładu. Akcelerator 3D Potok graficzny

Filtrowanie tekstur. Kinga Laurowska

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

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

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

Architektura Komputerów

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

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

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

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

Architektura systemów komputerowych Ćwiczenie 3

Grafika komputerowa Tekstury

Automatyczne tworzenie trójwymiarowego planu pomieszczenia z zastosowaniem metod stereowizyjnych

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

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

Trójwymiarowa grafika komputerowa rzutowanie

Grafika komputerowa. Dla DSI II

OpenGL Światło (cieniowanie)

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

Grafika komputerowa. Dr inż. Michał Kruk

Przewodnik po soczewkach

GRAFIKA RASTROWA. WYKŁAD 1 Wprowadzenie do grafiki rastrowej. Jacek Wiślicki Katedra Informatyki Stosowanej

Efekty dodatkowe w rasteryzacji

Przekształcanie wykresów.

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

Oświetlenie obiektów 3D

1. Prymitywy graficzne

OpenGL Światło (cieniowanie)

Cyfrowe przetwarzanie obrazów i sygnałów Wykład 12 AiR III

IRONCAD. TriBall IRONCAD Narzędzie pozycjonujące

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

Fotografia cyfrowa obsługa programu GIMP

Podstawy 3D Studio MAX

GRAFIKA WEKTOROWA. WYKŁAD 1 Wprowadzenie do grafiki wektorowej. Jacek Wiślicki Katedra Informatyki Stosowanej

Implementacja filtru Canny ego

Gry komputerowe: efekty specjalne cz. 2

Waldemar Izdebski - Wykłady z przedmiotu SIT / Mapa zasadnicza 30

2 Przygotował: mgr inż. Maciej Lasota

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

Podstawy Informatyki Wykład V

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

INFORMATYKA WSTĘP DO GRAFIKI RASTROWEJ

GRK 4. dr Wojciech Palubicki

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

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

Architektura Procesorów Graficznych

Teksturowanie (ang. texture mapping)

Architektura Komputerów

GRAFIKA RASTROWA GRAFIKA RASTROWA

Podstawy grafiki komputerowej

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

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

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Grafika 3D program POV-Ray - 1 -

Grafika rastrowa (bitmapa)-

Π 1 O Π 3 Π Rzutowanie prostokątne Wiadomości wstępne

Zadania domowe. Ćwiczenie 2. Rysowanie obiektów 2-D przy pomocy tworów pierwotnych biblioteki graficznej OpenGL

Autodesk 3D Studio MAX Teksturowanie modeli 3D

Transformacje. dr Radosław Matusik. radmat

GRAFIKA. Rodzaje grafiki i odpowiadające im edytory

Przetwarzanie grafiki rastrowej na wektorową

Rozpoznawanie obrazów na przykładzie rozpoznawania twarzy

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

CZĘŚĆ A 18 pkt. 3. Które z poniższych brył A, B, C, D przedstawiają bryłę zaznaczoną kolorem szarym?

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

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

Grafika 3D program POV-Ray

Test na koniec nauki w klasie trzeciej gimnazjum

Materiały dla studentów pierwszego semestru studiów podyplomowych Grafika komputerowa i techniki multimedialne rok akademicki 2011/2012 semestr zimowy

Polecenie ŚWIATPUNKT - ŚWIATŁO PUNKTOWE

Podstawy grafiki komputerowej. Teoria obrazu.

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

Ćwiczenie nr 8 - Modyfikacje części, tworzenie brył złożonych

Plan wykładu. Wykład 3. Rzutowanie prostokątne, widoki, przekroje, kłady. Rzutowanie prostokątne - geneza. Rzutowanie prostokątne - geneza

Grafika komputerowa. Oko posiada pręciki (100 mln) dla detekcji składowych luminancji i 3 rodzaje czopków (9 mln) do detekcji koloru Żółty

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

Obraz jako funkcja Przekształcenia geometryczne

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

Zasady rzutowania prostokątnego. metodą europejską. Opracował: Robert Urbanik Zespół Szkół Mechanicznych w Opolu. Zasady rzutowania prostokątnego

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

STEREOMETRIA CZYLI GEOMETRIA W 3 WYMIARACH

RENDERING W CZASIE RZECZYWISTYM. Michał Radziszewski

Górnicki Mateusz 17681

CorelDRAW. 1. Rysunek rastrowy a wektorowy. 2. Opis okna programu

Ćwiczenie 1 Automatyczna animacja ruchu

Definicja obrotu: Definicja elementów obrotu:

Przykładowe pytania na teście teoretycznym

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

Animacje z zastosowaniem suwaka i przycisku

Karty graficzne możemy podzielić na:

Animowana grafika 3D Laboratorium 1

Technologie Informacyjne

Antyaliasing w 1 milisekundę. Krzysztof Kluczek

Przekształcenia punktowe

Zaawansowana Grafika Komputerowa

RYSUNEK TECHNICZNY BUDOWLANY RZUTOWANIE PROSTOKĄTNE

1 LEKCJA. Definicja grafiki. Główne działy grafiki komputerowej. Programy graficzne: Grafika rastrowa. Grafika wektorowa. Grafika trójwymiarowa

Dodawanie grafiki i obiektów

Transkrypt:

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

Rendering Na przygotowane w fazie operacji geometrycznych złożone z trójkątów szkieletowe bryły akcelerator nakłada wypełnienie pustych przestrzeni wewnątrz wielokątów oraz symuluje światła padające na wielokąty Ten kolejny ciąg operacji w strumieniu graficznym 3D nosi nazwę renderingu

Rendering Rendering można podzielić na trzy główne procesy: teksturowanie oświetlanie i cieniowanie dodawanie efektów specjalnych

Teksturowanie Najważniejszym i najbardziej skomplikowanym etapem renderingu jest teksturowanie Zabieg ten polega na nakładaniu na trójwymiarowy szkielet płaskich obrazków nazywanych teksturami mających imitować spotykane w realnym świecie powierzchnie. Bogatym źródłem tekstur jest strona internetowa: https://www.textures.com/

Mapowanie tekstur Cały proces mapowania (nakładania) tekstur sprowadza się do odpowiedniego owijania brył teksturami. Problem polega na tym, iż wszystkie elementy trójwymiarowej sceny składają się z trójkątów o różnych rozmiarach. Tekstury należy więc dopasować do wielkości odpowiadającej poszczególnych trójkątów. Proces ten nazywa się wycinaniem (ang. clipping)

Wycinanie (clipping) Polega on na wyodrębnieniu trójkąta o żądanej wielkości z kwadratowej zazwyczaj tekstury W tym celu określane są współrzędne trzech punktów na teksturze, a następnie przyporządkowuje się je stosownym wierzchołkom teksturowanego trójkąta

Wycinanie (clipping) Kolejna operacja polega na nadawaniu pikselom trójkątów atrybutów odpowiadających ich położeniem atrybutów tekseli, czyli najmniejszych elementów tekstury.

Teksturowanie MIP mapping Próbkowanie punktowe Filtrowanie Korekcja perspektywy Mapowanie wybojów Alpha-blending

Teksturowanie - MIP mapping Ponieważ z pierwotnych tekstur, które mają ściśle określony rozmiar, np. 8 8 lub 64 64 piksele, prawie nigdy nie da się wyciąć odpowiedniego trójkąta ze względu na: rozmiar samego trójkąta, dopasowanie obrazu tekstury do położenia trójkąta w mapowanej przestrzeni Mając to na uwadze oraz aby zapobiec ciągłemu przeskalowywaniu tekstur opracowano mechanizm MIP mappingu (Multum in Parvo - wiele w niewielu)

Idea MIP mappingu

MIP mapping Przed renderowaniem sceny z każdej tekstury tworzonych jest kilka (zazwyczaj osiem) map tzw. MIP map. Mapy MIP to nic innego jak zmniejszone bitmapy utworzone na podstawie tekstury wzorcowej.

MIP mapping Każda kolejna mapa MIP jest czterokrotnie mniejsza od poprzedniej. Jeśli pierwsza miała rozmiar 256 256 pikseli, to następna będzie miała wielkość 128 128 punktów, kolejna 64 64 itd. Przy nakładaniu tekstury wybierana jest jedna lub dwie sąsiednie ze zbioru map MIP.

MIP mapping Do poteksturowania obiektu trójwymiarowego używa się tej tekstury, której rozdzielczość jest wystarczająca do reprezentowania obiektu obserwowanego z pewnej odległości. Właśnie od odległości zależy, która mipmapa zostanie wybrana. Im obiekt znajduje się dalej od obserwatora, tym mniejszą zajmuje powierzchnię i tym mniejsza tekstura jest potrzebna.

MIP Mapping Przykładowo: jeśli obiekt ma wymiary ok. 10x13 pikseli, to do jego poteksturowania wystarczy tekstura 16x16, a jeśli to ok. 54x40 to wystarcza tekstura 64x64 itd. W obu przykładach nie ma sensu skalować tekstury o najwyższej rozdzielczości (powiedzmy 256x256) bo i tak duża część pikseli nigdy nie będzie widoczna. W praktyce najczęściej nie jest wybierana jedna mipmapa, ale brane są dwie najbliższe i dokonywana jest interpolacja pobranych z nich atrybutów

MIP mapping Tekstura nałożona: bez MIP mappingu (z lewej) i z MIP mappingiem (z prawej)

MIP Mapping Zalety mipmappingu: Wstępne usuwanie zakłóceń skalowanych tekstur, co ma istotne znaczenie w grafice czasu rzeczywistego (gry komputerowe, symulatory lotu). Zwiększenie prędkości teksturowania, ponieważ przetwarzana jest o wiele mniejsza liczba tekseli. Wady: Zwiększenie wymagań pamięciowych o 1/3. Mipmapping jest implementowany sprzętowo w kartach grafiki.

Przykładowe MIP mapy

Próbkowanie punktowe Zastosowanie prostego MIP mappingu nie rozwiązuje w pełni problemu dopasowania tekstur do wielkości trójkątów Bardzo często przy teksturowaniu, pojedyncze teksele powielane są w różnych miejscach wielokąta Technika przyporządkowania każdemu pikselowi ekranu atrybutów jednego lub kilku tekseli to tzw. próbkowanie punktowe (ang. point sampling texturing) Często objawia się to efektem potocznie nazywanym pikselozą widoczne stają się jednokolorowe obszary pikseli, zwłaszcza gdy tekstura musi pokryć obszar znacząco większy niż ona sama

Filtrowanie tekstur Aby uniknąć pikselozy korzysta się z tzw. filtrowania tekstur Z reguły występują różne rodzaje zależności między pikselem, a tekselem (bądź zbiorem tekseli), które piksel reprezentuje na ekranie. Zależą one od położenia teksturowanej powierzchni w stosunku do obserwatora i w każdym przypadku potrzebne są różne formy filtrowania. Istnieje taka odległość obiektu od obserwatora, dla której rozmiar teksela kwadratowej tekstury (lub MIP mapy) mapowanej na kwadratowej powierzchni obiektu jest dokładnie równy rozmiarowi piksela ekranu.

Filtrowanie tekstur Jeśli obiekt znajdzie się w bliższej odległości obszar zajmowany uprzednio przez teksel staje się większy niż piksel ekranu i musi nastąpić odpowiednie skalowanie teksela proces zwany powiększaniem tekstury (ang. texture magnification). W dalszej odległości obszar taki jest jest mniejszy niż piksel ekranu, a więc jeden piksel obejmuje obszar wielu tekseli. W takim przypadku piksel przyjmuje kolor pochodzący od zbioru tekseli, których obszar obejmuje jest to tzw. minifikacja tekstury (ang. texture minification)

Filtrowanie tekstur Biblioteki graficzne (np. OpenGL) umożliwiają programiście ustawianie różnych opcji filtrów minifikacji i powiększania Nawet w przypadku, gdy piksele i teksle mają dokładnie taki sam rozmiar, niekoniecznie będą do siebie pasować Piksel może być źle wyrównany lub obrócony i obejmować części czterech sąsiednich tekseli. Dlatego nadal wymagana jest pewna forma filtrowania

Teksturowanie - filtrowanie Filtrowanie tekstur można dokonać na różne sposoby - do najważniejszych należą: interpolacja najbliższego sąsiada metoda najbliższego sąsiada z mipmappingiem liniowe filtrowanie mipmap filtrowanie dwuliniowe filtrowanie trójliniowe filtrowanie anizotropowe

Interpolacja najbliższego sąsiada Interpolacja najbliższego sąsiada jest najprostszą i najbardziej bezpośrednią metodą filtrowania Piksel przyjmuje kolor teksela, którego centrum leży najbliżej centrum piksela Choć proste, powoduje to dużą liczbę artefaktów: blokowanie" tekstury podczas powiększania pojawiają się duże kwadratowe obszary pikseli o tym samym kolorze, spowodowane gwałtownym skokiem, koloru, gdy centrum kolejnego piksela staje się bliższe centrum innego teksela. aliasing (schodkowanie) i migotanie podczas minifikacji

Najbliższy sąsiad z mipmapping Ta metoda nadal używa interpreacji najbliższego sąsiada, ale dodaje mipmapping: najpierw jest wybierany najbliższy poziom MIPmapy zgodnie z odległością od obserwatora, następnie piksel przyjmuje kolor teksela, którego centrum leży najbliżej centrum piksela Metoda charakteryzuje się mniejszą liczbą artefaktów blokowanie podczas powiększania pozostaje, gdyż każdy powiększony texel nadal wygląda jak duży prostokąt

Liniowe filtrowanie mipmap Rzadziej używane. Polega na pobieraniu dwóch próbek metodą najbliższego sąsiada Próbki pochodzą z dwóch najbliższych mipmap odpowiednich dla danej odległości obiektu od obserwatora i ich liniowej interpolacji.

Filtrowanie dwuliniowe (ang. bilinear filtering) Polega na przyporządkowaniu każdemu punktowi teksturowanego trójkąta nie jednego koloru teksela, ale barwy otrzymanej w wyniku interpolacji czterech sąsiednich tekseli najbliższej mipmapy

Filtrowanie dwuliniowe Usuwa "blokowanie" tekseli podczas powiększania tekstury, ponieważ występuje gładki gradient zmiany koloru przy przejściu od jednego teksela do następnego.

Filtrowanie trójliniowe Bardziej zaawansowaną metodą jest filtrowanie trójliniowe (ang. trilinear filtering) polegające na tym, że do ujednolicania barwy stosuje się dwie kolejne mapy MIP Najpierw poddaje się interpolacji dwuliniowej mapę pierwszą, bezpośrednio mniejszą od rzeczywiście wymaganej - później drugą, bezpośrednio większą np. jeśli trójkąt wymaga wycinania z mapy o rozdzielczości 100 tekseli, to brane są pod uwagę mapy 64x64 i 128x128 Dopiero uśredniony wynik obu tych operacji (w sumie interpolujemy wartość ośmiu tekseli) nakłada się na mapowany trójkąt

Filtrowanie dwu i trójliniowe Różnica pomiędzy filtrowaniem dwuliniowym (po lewej), a trójliniowym (po prawej). Strzałkami oznaczono miejsca widocznych przejść pomiędzy poziomami szczegółowości mipmap.

Filtrowanie anizotropowe Filtrowanie to (ang. anisotropic filtering) jest najbardziej zaawansowaną metoda filtrowania wymagająca największej mocy obliczeniowej Bierze ona dodatkowo pod uwagę orientację przestrzenną tekstury względem obserwatora. Dzięki temu obszary, z których interpolowane są brakujące wartości, układają się w kształt elipsy, prostokąta lub rombu (długa oś wyznacza kierunek obserwacji)

Filtrowanie anizotropowe Filtrowanie anizotropowe przekształca kwadratowe tekstury tak, aby ich widok pod pewnym kątem w stosunku do obserwatora był on zgodny z widokiem obiektu rzeczywistego.

Filtrowanie anizotropowe Filtrowanie anizotropowe umożliwia zatem zachowanie oryginalnego kształtu tekstur również na obiektach znajdujących się pod pewnym kątem w stosunku do obserwatora

Teksturowanie - korekcja perspektywy Podczas odwzorowania często występują problemy z zachowaniem odpowiedniej perspektywy. Dotyczy to: dużych trójkątów z nałożonymi teksturami (np. ściany, sufity lub podłogi) znajdujących się niemal prostopadle do płaszczyzny ekranu Elementy sceny rozjeżdżają się, dając dziwne powykrzywiane wzory spowodowane załamywaniem się tekstur lub ich zanikaniem (np. w scenach z długim tunelem). Błąd ten wynika ze złej metody uwzględnienia położenia wielokąta w przestrzeni.

Teksturowanie - korekcja perspektywy W celu wyeliminowania tych niepożądanych efektów stosuje się algorytmy korekcji perspektywy (ang. perspective correction) Metoda ta polega na: stworzeniu wirtualnych punktów zbieżności w nieskończoności. następnie linie równoległe do osi układu współrzędnych muszą się zbiegać w tych punktach. dopiero wówczas akcelerator, zgodnie z zasadą rzutu perspektywicznego, nakłada tekstury już bez tych niechcianych deformacji.

Teksturowanie - korekcja perspektywy

Teksturowanie - korekcja perspektywy brak perspektywy po korekcji perspektywy po filtrowaniu dwuliniowym

Mapowanie wybojów Mapowanie wybojów powoduje złudzenie, że obiekt nie jest gładki, a chropowaty. Gdy na niego patrzymy zdaje nam się, że widzimy wypukłości, rysy czy rowki Z jednej strony wybój (wypukłość) będzie jasny, z drugiej ciemny. Należy pamiętać, że mapowanie wybojów to efekt manipulujący wyłącznie grą światła a nie wielokątami

Mapowanie wypukłości

Mapowanie wypukłości

Mapowanie wybojów i środowiska Metody mapowania wybojów można podzielić na: mapowanie wypukłości (bump mapping) tłoczenie wybojów (emboss bump mapping) środowiskowe mapowanie wybojów (Environment- Mapped Bump Mapping, EMBM) DOT 3 mapping i inne Mapowanie środowiska Multiteksturowanie Mapowanie trójwymiarowe

Mapowanie wypukłości W metodzie tej dla każdej tekstury tworzone są tzw. mapy wybojów (ang. bump maps). Są one płaskimi bitmapami, podobnie jak zwykłe tekstury, Jasność poszczególnych pikseli określa położenie (wysokość) tekseli nad płaszczyzną tekstury Mapa wybojów jest nakładana na pierwotną teksturę, Dzięki temu otrzymujemy dodatkową informację o usytuowaniu każdego teksela względem płaszczyzny tekstury.

Tworzenie mapy wybojów 1. Tekstura podstawowa 2. Desaturacja pozbawienie kolorów

Tworzenie mapy wybojów 3. Inwersja - odwrócenie kolorów 4. Zwiększenie intensywności czerni

Tłoczenie wybojów Sprawdza się ono dobrze wtedy, gdy na tekstury spoglądamy pod niewielkim kątem lub są one nakładane na poruszające się obiekty. Tłoczenie realizowane jest w trzech etapach w pierwszym z nich z mapy opisującej wygląd wypukłości (mapy wybojów) tworzone są dwa monochromatyczne obrazy. jeden zostanie wykorzystany do przedstawienia obszarów jaśniejszych, a drugi będzie odpowiadał za fragmenty zacienione

Tłoczenie wybojów w drugiej fazie obie bitmapy przesuwane są o kilka pikseli względem siebie (jedna do tyłu, druga do przodu) wzdłuż kierunku padającego światła ostatni z etapów polega na zlaniu rozsuniętych bitmap (przy wykorzystaniu omawianego w dalszej części prezentacji alpha-blendingu) z właściwą teksturą obiektu

Tłoczenie wybojów Od lewej: obiekt 3D obłożony zwykłą teksturą, obiekt 3D obłożony mapą wybojów, obiekt 3D obłożony mapą wybojów i teksturą

Torus z wgłębieniami funkcja wgłębień określona ręcznie

Truskawka z wgłębieniami funkcja wgłębień określona ręcznie

Jednoczesne teksturowanie, oświetlanie i mapowanie wybojów

Środowiskowe mapowane wybojów W bardziej zawansowanych metodach bump-mappingu dodatkowo wykorzystuje się tzw. mapy środowiska (ang. environment maps). Mapy środowiska zawierają w sobie informacje m.in. o refleksach na powierzchni przedmiotu od rozstawionych na generowanej scenie wielokolorowych: świateł lustrzanych, odbić i refleksów świetlnych, które pochodzą od innych przedmiotów otaczających obiekt

Środowiskowe mapowane wybojów Mapowanie środowiskowe w połączeniu z mapowaniem wybojów pozwala otrzymać zaawansowane efekty, takie jak falująca powierzchnia wody, w której odbijają się nadbrzeżne drzewa. Uzyskanie takich rezultatów możliwe jest dzięki nałożeniu w jednym przebiegu trzech bitmap: podstawowej tekstury, mapy wypukłości oraz mapy środowiska. Mapa wybojów nakładana jest na mapę środowiska, W wyniku tego powstaje zaburzona mapa środowiska (ang. perturbed environment map), Następnie mapa ta łączona jest ona z właściwą teksturą nakładaną na obiekt.

Środowiskowe mapowane wybojów II ćwiartka obraz szkieletowy I ćwiartka tekstura III ćwiartka mapa wybojów IV ćwiartka sumaryczna mapa w środowisku

Mapowanie środowiska

Mapowanie środowiskowe Mapowanie środowiskowe pozwala na symulowanie odbić światła. Do oka obserwatora trafia tylko to, co zostanie odbite (nie pochłonięte) przez materiał, z jakiego zbudowany jest obiekt. Promień trafiający na scenę podlega szeregowi kolejnych odbić, za każdym razem tracąc część informacji. Jeśli promień zacznie się odbijać od różnych przedmiotów na scenie to straci cześć koloru do oka obserwatora trafi tylko niepochłonięta część widma. Promień utworzy element obrazu w wielu przypadkach będzie to obraz wielu obiektów. W wyniku tego do oka trafia obraz znamy z rzeczywistego świata - na obiektach sceny pojawiają się odbicia innych jej obiektów.

Mapowanie środowiskowe

Mapowanie środowiskowe Dla każdego obiektu sceny wszystkie inne stanowią środowisko. Oczywiście pojawianie się odbić będzie ściśle związane z rodzajem powierzchni, jaką posiada dany obiekt. Na podstawie odbić od obiektów trudno jest wnioskować o kształcie otaczającego świata. Ale przecież nie do końca o to chodzi należy jedynie zasugerować obserwatorowi, że: pewne obiekty są zbudowane z materiałów, które potrafią odbijać większość padającego na nie światła (metal, szkło, czy woda), inne odbijają niewiele światła, jeszcze inne pochłaniają całe promieniowanie są to przedmioty matowe.

Mapowanie środowiskowe Dokładna symulacja wszystkich odbić poszczególnych promieni padających na scenę jest zupełnie niemożliwa w rozsądnym czasie. Zamiast analizować wszystkie promienie aby nadać pikselom obiektu odpowiednie atrybuty należy: określić widok z miejsca położenia obiektu, utworzyć dla tego widoku pewną teksturę, dokonać przekształceń tej tekstury, nałożyć ją na obiekt w pewien specyficzny sposób. Metoda taka ma oczywiście pewne zalety i pewne wady. Zaletą niewątpliwie jest jej duża szybkość jak wiemy nakładanie wielu tekstur na obiekty jest wspomagane sprzętowo.

Mapowanie środowiskowe Większość obiektów odbijających nie jest płaska, więc mapa odzwierciedlająca środowisko nie musi być bardzo dokładna Wystarczy, że będzie mniej więcej prezentować to, co powinno być widoczne Oczywiście im obiekt większy, bardziej płaski i bardziej odbijający światło tym tekstura musi być dokładniejsza Podstawową wadą metody jest oczywiście ruch jeśli nagle przedmioty otaczające odbijający obiekt zaczną się poruszać, to mapa środowiska staje się nieadekwatna Ale istnieje wiele sposobów radzenia sobie z tym problemem dwie najczęściej stosowane to: mapowanie sferyczne metoda prostsza i aktualnie szerzej znana, choć powoli wypierana przez mapowanie sześcienne jest bardziej złożone, ale efektywniejsze

Mapowanie środowiska na niepłaskim obiekcie

Mapowanie sferyczne Tekstura (mapa) środowiska będzie reprezentować rzeczywistość otaczającą obiekt w pewien specyficzny sposób. Wyobraźmy sobie, że stoimy w miejscu obiektu robimy zdjęcia otaczającej nas rzeczywistości tak, aby można było wyłożyć nimi otaczającą nas kulę. Ktoś, kto wejdzie do środka takiej kuli będzie oglądał namiastkę rzeczywistości. Tak mniej więcej działa sferyczne mapowanie środowiska. Na obiekt rzutuje się teksturę wypełniającą wnętrze kuli otaczającej obiekt. Zamiast kuli tworzy się jednak specjalny rodzaju tekstury, która po odpowiednim dobraniu współrzędnych mapowania pozwoli się "nałożyć" na obiekt w sposób podobny do opisanego powyżej.

Mapowanie sferyczne W takim modelu można wyróżnić dwie istotne i zupełnie niezbędne do dalszego działania sprawy: pierwszą jest sposób tworzenia map środowiska. drugą jest sposób przyporządkowania współrzędnych mapy świata konkretnym współrzędnym obiektu. Zacznijmy od drugiego z problemów aby policzyć współrzędne na mapie środowiska potrzebne będą: współrzędne rozpatrywanego punktu obiektu w układzie współrzędnych świata normalne w tych wierzchołków.

Mapowanie sferyczne Głównym celem działań jest wyznaczenie wektora odbicia promienia (na rysunku promień niebieski). Normalną oznaczono kolorem czerwonym, a zielony wektor wskazuje kierunek przeciwny do położenia oka obserwatora (kamery). Promień odbity wyznaczy obszar na mapie środowiska, z którego należy pobrać atrybuty (kolor) wpływające na kolor wierzchołka (punktu).

Mapowanie sferyczne W ten sposób powstają obrazy innych obiektów sceny odbijane przez analizowany obiekt na górnym rysunku przedstawiono jedynie powierzchnię tego obiektu (reflector). Problem może się nieco skomplikować w przypadku obiektów przeźroczystych lub półprzeźroczystych W tym przypadku obraz będzie dodatkowo zdeformowany, co oczywiście należy uwzględnić w obliczeniach

Mapowanie sferyczne Najpierw należy utworzyć unormowany wvektor v ( v = 1) pomiędzy położeniem kamery a położeniem wierzchołka P obiektu. Na tej podstawie tworzymy wektor odbicia r = v 2 n v n, wykorzystując unormowany wektor normalny (n) do obiektu w miejscu rozpatrywanego wierzchołka. Wektor r jest symetryczny do odwróconego wektora v względem wektora normalnego. Posługując się wektorem r będzie można pobrać z mapy środowiska atrybuty punktu E, decydujące o kolorze refleksu w wierzchołku P.

Mapowanie sferyczne Powróćmy teraz do problemu pierwszego Wyobraźmy sobie sytuację jak na rysunku na sferę nałożony zostanie obraz całego otaczającego ją świata. Oczywiście środek sfery musi być umieszczony na scenie w położeniu analizowanego obiektu. Źródłem obrazu świata będzie sześć obrazów umieszczonych na ścianach sześcianu opisanego na sferze. Obrazy te zostaną uzyskane poprzez rendering sceny po usunięciu obiektu, który analizujemy. Kamera będzie się znajdować w środku sfery nakierowana kolejno na każdą ze ścian otaczającego ją sześcianu. Wszystkie sześć obrazów musi w miarę dobrze przylegać do siebie aby po zrzutowaniu na sferę nie było zakłóceń.

Mapowanie sferyczne Mapę sferyczną należy następnie spłaszczyć, tak, aby otrzymać teksturę środowiska. Rysunek pokazuje odwzorowanie obszarów sfery na płaskiej mapie środowiska. Dolny rysunek przedstawia przekrój sfery płaszczyzną zawierającą średnicę sfery i punkt obserwatora znajdujący się z prawej strony. Odcinki łączą białe punkty sfery z ich kolorowymi rzutami na płaszczyznę prostopadłą do płaszczyzny rysunku stanowiącą płaską mapę środowiska. Żółte punkty mapy odpowiadają prawej półkuli tzn. leżącej po stronie obserwatora, a czerwone lewej półkuli tej po stronie przeciwnej. Promień odbity od obiektu powinien trafiać w biały punkt i stamtąd pobrać element obrazu zamiast tego pobiera informację z odpowiadającego mu punktu płaskiej mapy tekstury środowiska

Mapowanie sferyczne Prawa część sfery zrzutowana jest więc do centrum mapy, a lewa do obszarów zewnętrznych. Przykładowa, wynikowa mapa (tekstura) środowiska jest przedstawiona na dolnym rysunku. W jej centralnej części (kolor żółty na górnym rysunku) znajduje się obraz przedniej półkuli, a na obrzeżu (kolor czerwony na górnym rysunku) obraz tylnej. Taka kołowa tekstura zostaje nałożona na obiekt (oczywiście niewidoczny na mapie środowiska)

Mapa środowiska

Mapowanie sferyczne W przypadku mapowania sferycznego obrazy przedmiotów na lśniącej powierzchni wyglądają dobrze do momentu, gdy ani obserwator, ani przedmiot nie zmieniają swojego położenia. W chwili gdy przedmiot nieznacznie się przemieści, wystarczy przesunąć punkt zaczepienia tekstury. Jeśli jednak przemieszenie jest zbyt duże, odbicia ulegają silnemu zniekształceniu i należy zmienić mapę środowiska Metodą pozbawioną tej wady jest mapowanie sześcienne

Mapowanie sześcienne Rozwiązanie powyższego problemu polega na nakładaniu na bryłę elementów nie jednej, ale sześciu tekstur.

Mapowanie sześcienne Tych sześć tekstur to obrazy: dolnej, górnej i czterech bocznych części otoczenia obiektu.

Mapowanie sześcienne Atrybuty obrazu są pobierane z jednej z sześciu tekstur tej na którą trafia promień odbity od obiektu. O tym, która to będzie tekstura decyduje położenie obserwatora (kamery) oraz normalna do powierzchni obiektu

Mapowanie sześcienne tył dół przód lewy Czajniczek z mapą środowiska prawy góra

Mapowanie sześcienne

Mapowanie sześcienne zdeformowana kropla z mapą środowiska

Mapowanie sześcienne Główne zalety metody: Po pierwsze - łatwość tworzenia mapy świata - sześć tekstur projekcyjnych przedstawiających aktualny stan sceny. Po drugie - niezależność od położenia kamery. Po trzecie szybkość obliczenia jakie trzeba wykonać dla mapowania sferycznego są o wiele bardziej skomplikowane i czasochłonne. Po czwarte - brak zakłóceń mapa sferyczna mogła zawierać różne zniekształcenia i artefakty. Po piąte, ostatnie i najważniejsze - mapa reprezentująca środowisko zawiera dokładnie to, co dzieje się na scenie.

Multiteksturowanie Podczas teksturowania, w większości przypadków na jeden obiekt nakładanych jest kilka różnych bitmap. Im więcej mapowanych jest tekstur, tym potrzeba większej mocy obliczeniowej akceleratora. Przeciętnie szybki procesor graficzny przeznaczony do użytku domowego umożliwia mapowanie do kilkudziesięciu gigatekseli w ciągu jednej sekundy. Tę podaną wartość nazywa się współczynnikiem fillrate i określa ona teoretyczną szybkość procesu wypełniania wielokątów przez procesor graficzny.

Mapowanie trójwymiarowe Specyfikacja OpenGL 1.2 i pakiet Microsoft DirectX od wersji 8.0 uwzględniają obsługę tekstur 3D Obrazy tego typu, nazywanych często warstwowymi lub wolumetrycznymi, od długiego już czasu korzystają lekarze wykonujący komputerową tomografię Nowa technika oznacza przede wszystkim, iż tekstury przestają wyłącznie okrywać powierzchnię przedmiotów, ale wnikają do ich wnętrza. W przypadku tekstur 3D proces obliczeniowy jest wyjątkowo prosty. Aby obejrzeć wnętrze bryły należy części tekseli (wokseli) nadać atrybut przezroczystości. Można wtedy zobaczyć wszystkie najdrobniejsze detale, gdyż budowa i faktura wnętrza zawarte są w mapie wolumetrycznej.

Mapowanie trójwymiarowe

Mapowanie trójwymiarowe Również w przypadku tekstur volumetrycznych stosowana jest technika MIP mappingu Objętość trójwymiarowych tekstur jest jednak wyjątkowo duża. Np. 32-bitowa dwuwymiarowa tekstura o wymiarach 16 16 pikseli ma objętość 1024 bajtów. Po dodaniu trzeciego wymiaru (16 16 16 punktów) rozrasta się jednak do 16 384 bajtów! Tak znaczne pojemności przetwarzanych obiektów wymagają od systemu olbrzymiej przepustowości magistrali pamięci i stosowania algorytmów kompresji tekstur

Alpha-blending Aby określić stopień przezroczystości tekstury wykorzystywany jest tzw. kanał alfa i technika nazywana alpha-blendingiem Kanał alfa jest parametrem określającym stopień przezroczystości (właściwie nieprzezroczystości) tekstury. Przyjmuje on wartości od zera (obiekt zupełnie transparentny) do 255 (powierzchnia nieprzezroczysta) Jeśli nałożona zostanie tekstura z kanałem alfa równym zero, nic się nie zmieni na rysunku, tekstura będzie niewidoczna Jeżeli wartość kanału wynosi np. 128 (rysunek z prawej), wówczas obłożony nią obiekt będzie półprzezroczysty, a znajdujące się za nim przedmioty będą przezeń widoczne.

Kule i szachownica

Alpha-blending Wartość kanału alfa jest jednym z czterech parametrów tekstury wszystkie nowe akceleratory obsługują 32 bitowy kolor. Jak wiadomo do przedstawienia pełnej palety barw wystarczą 24 bity brakujące 8 bitów to właśnie kanał alfa. Tekstury 32-bitowe nazywane są RGBA - trzy kolory składowe oraz kanał alfa.

Alpha-blending z mapowaniem środowiska