Grafika komputerowa Tekstury

Podobne dokumenty
1. Prymitywy graficzne

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

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

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

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

Autodesk 3D Studio MAX Teksturowanie modeli 3D

GRK 4. dr Wojciech Palubicki

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

Oświetlenie obiektów 3D

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

Plan wykładu. Akcelerator 3D Potok graficzny

Wprowadzenie do rysowania w 3D. Praca w środowisku 3D

1. Oświetlenie Materiały i powierzchnie

Ćwiczenie 6. Transformacje skali szarości obrazów

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

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

10.3. Typowe zadania NMT W niniejszym rozdziale przedstawimy podstawowe zadania do jakich może być wykorzystany numerycznego modelu terenu.

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

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

Transformacje. dr Radosław Matusik. radmat

Teksturowanie (ang. texture mapping)

Gry komputerowe: efekty specjalne cz. 2

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

Grafika Komputerowa. Teksturowanie

Wprowadzenie do grafiki maszynowej. Wprowadenie do teksturowania

Pytania do spr / Własności figur (płaskich i przestrzennych) (waga: 0,5 lub 0,3)

GRK 5. dr Wojciech Palubicki

Laboratorium. Cyfrowe przetwarzanie sygnałów. Ćwiczenie 9. Przetwarzanie sygnałów wizyjnych. Politechnika Świętokrzyska.

Efekty dodatkowe w rasteryzacji

Systemy wirtualnej rzeczywistości. Podstawy grafiki 3D

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

Geometria. Rozwiązania niektórych zadań z listy 2

Przygotowanie danych do tyczenia dla obiektu: Osiedle domków jednorodzinnych.

GRK 5. dr Wojciech Palubicki

i = [ 0] j = [ 1] k = [ 0]

Grafika komputerowa Wykład 4 Geometria przestrzenna

Obraz jako funkcja Przekształcenia geometryczne

Prosta i płaszczyzna w przestrzeni

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

Diagnostyka obrazowa

Animowana grafika 3D Laboratorium 3

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

AUTOCAD MIERZENIE I PODZIAŁ

KGGiBM GRAFIKA INŻYNIERSKA Rok III, sem. VI, sem IV SN WILiŚ Rok akademicki 2011/2012

Baltie 3. Podręcznik do nauki programowania dla klas I III gimnazjum. Tadeusz Sołtys, Bohumír Soukup

Nadają się do automatycznego rysowania powierzchni, ponieważ może ich być dowolna ilość.

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

Podstawy grafiki komputerowej

22. CAŁKA KRZYWOLINIOWA SKIEROWANA

GRAFIKA KOMPUTEROWA 7: Kolory i cieniowanie

Algorytmy grafiki rastrowej. Mirosław Głowacki Wykład z Grafiki Komputerowej

2 Przygotował: mgr inż. Maciej Lasota

Maskowanie i selekcja

Ćwiczenia nr 7. TEMATYKA: Krzywe Bézier a

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

Dodatkowo klasa powinna mieć destruktor zwalniający pamięć.

Rysowanie punktów na powierzchni graficznej

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

1 Funkcje dwóch zmiennych podstawowe pojęcia

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

Rysowanie precyzyjne. Polecenie:

Następnie zdefiniujemy utworzony szkic jako blok, wybieramy zatem jak poniżej

OpenGL Światło (cieniowanie)

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

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

Przekształcenia geometryczne. Dorota Smorawa

OpenGL Światło (cieniowanie)

OpenGL przezroczystość

3 Przygotował: mgr inż. Maciej Lasota

Agnieszka Nowak Brzezińska

Ćwiczenia nr 4. TEMATYKA: Rzutowanie

54. Układy współrzędnych

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

Zastosowanie stereowizji do śledzenia trajektorii obiektów w przestrzeni 3D

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

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

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

Grafika komputerowa Wykład 8 Modelowanie obiektów graficznych cz. II

w jednym kwadrat ziemia powietrze równoboczny pięciobok

Rys. 1 Pole dyfrakcyjne obiektu wejściowego. Rys. 2 Obiekt quasi-periodyczny.

Opis ćwiczenia. Cel ćwiczenia Poznanie budowy i zrozumienie istoty pomiaru przyspieszenia ziemskiego za pomocą wahadła rewersyjnego Henry ego Katera.

Parametryzacja obrazu na potrzeby algorytmów decyzyjnych

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

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

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

Materiały. Dorota Smorawa

Filtrowanie tekstur. Kinga Laurowska

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

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

Mapowanie sześcienne otoczenia (cubic environment mapping)

Julia 4D - raytracing

cx cx 1,cx 2,cx 3,...,cx n. Przykład 4, 5

Przetwarzanie obrazów rastrowych macierzą konwolucji

czyli Arkuszy / Układów na podstawie modelu

Karty graficzne możemy podzielić na:

VII. WYKRESY Wprowadzenie

Przekształcanie wykresów.

czyli Arkuszy / Układów na podstawie modelu w zakładce MODEL

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

Utworzyliśmy właśnie fragment elementów, które będą imitować fotomanipulację kobietycyborga. W taki sposób prezentuje się nasz efekt:

Transkrypt:

. Tekstury Tekstury są dwuwymiarowymi obrazkami nakładanymi na obiekty lub ich części, w celu poprawienia realizmu rysowanych brył oraz dodatkowego określenia cech ich powierzchni np. przez nałożenie obrazka drewna lub marmuru. Tekstury mogą być również używane do różnego rodzaju efektów specjalnych i być np. mapami definiującymi wyboje na danej powierzchni (ang. bump mapping). W związku z tym, że tekstura jest najczęściej obiektem dwuwymiarowym, nałożenie jej na obiekt sprowadza się do przypisania każdemu wierzchołkowi, tworzącemu pojedynczą ściankę (trójkąt) bryły, odpowiednich współrzędnych obrazka. W przypadku nakładania tekstur na duże powierzchnie, których koniec znajduje się daleko od obserwatora, zachodzi konieczność nakładania tekstury z uwzględnieniem odległości, czyli tzw. teksturowania z korekcją perspektywy. Technika ta znakomicie poprawia wygląd rysowanych obiektów, jednak wymaga pewnych nakładów obliczeniowych. Procedura teksturowania polega na przyporządkowaniu każdemu z punktów, rysowanego wielokąta odpowiedniego punktu tekstury. Algorytm realizujący powyższe zadanie jest bardzo podobny do algorytmu cieniowania Gouraud a i pierwszą czynnością, jaką należy wykonać, jest przyporządkowanie każdemu wierzchołkowi, rysowanego trójkąta, odpowiedniego wierzchołka tekstury. Następnie należy interpolować współrzędne tekstury wzdłuż rysowanego trójkąta. Podczas rysowania poziomej linii również dokonujemy interpolacji współrzędnych tekstury, w tracie tej operacji często dochodzi do powiększenia lub zmniejszenia obrazka tak, aby w całości pokrył, rysowany trójkąt. W wyniku powiększania tekstury (ang. magnification) nakładanej na duży, położony blisko obserwatora, obiekt może dojść do sytuacji, w której pojedynczy piksel tekstury zostanie przyporządkowany kilku sąsiadującym ze sobą pikselom. Efektem tego jest obraz składający się z dużych wyraźnych kwadratów. Znowu w trakcie zmniejszania tekstury (ang. minification) może dojść do sytuacji, w której część z pikseli tekstury zostaje pominięta i nie zostaje naniesiona na ekran. W celu redukcji wspomnianych zjawisk wprowadzono kilka typu filtrów, stosowanych do poprawy wyglądu rysowanych tekstur. Poniżej przedstawiono algorytm realizujący teksturowanie.. Posortuj wierzchołki trójkąta względem ich współrzędnych (od najmniejszej do największej).. Oblicz przyrosty między wierzchołkami trójkąta na podstawie wzorów x x a) dx y y x3 x b) dx3 y x3 x c) dx3 y xt xt d) tx y y xt3 xt e) tx3 y xt3 xt f) tx3 y y 3 - -

g) ty h) ty i) ty 3 3 yt yt y y yt3 yt y yt3 yt y y 3 3. y y; x x ; x x xt xt yt yt 4. Rysuj linię poziomą od punktu ( x do punktu ( x z interpolacją współrzędnych tekstury od (xd,yd ) do (xd,yd ); pamiętaj, aby sprawdzić czy x x (w razie potrzeby zamień kolejność punktów) 5. x x + dx x x + 6. dx3 7. xd xd + tx 8. xd xd + tx3 9. yd yd + ty 0. yd yd + t. y y +. Jeżeli y < y to skacz do punktu 4. 3. y y; x x ; x x xt xd yt yd 4. Rysuj linię poziomą od punktu ( x do punktu ( x z interpolacją współrzędnych tekstury od (xd,yd ) do (xd,yd ); pamiętaj, aby sprawdzić czy x x (w razie potrzeby zamień kolejność punktów) 5. x x + dx 6. x x + dx3 7. xd xd + tx 8. xd xd + tx3 9. yd yd + ty 0. yd yd + t. y y +. Jeżeli y < to skacz do punktu 0. Gdzie. Owinięcia Owinięcie określa sposób nałożenia tekstury na trójwymiarowy obiekt. Poniżej podane są wzory realizujące najczęściej stosowane typy teksturowania. Dla większej jasności przypominam, że wyznaczane współrzędne tu oraz tv są współrzędnymi tekstury. Wszystkie wzory podane są w trzech przypadkach opisujących teksturowanie odpowiednio: wzdłuż osi X, Y i Z. - -

owiniecie płaskie (planarne), względem osi: x) tu s z cz ; tv s y cy y) tu s x cx ; tv s z cz z) tu s x cx ; tv s x cx gdzie s x,s y, s z parametry określające współczynniki skalujące teksturę wzdłuż odpowiednich osi. Pamiętając, że współrzędne tekstury powinny być w przedziale od 0 do, odpowiednie skale można wyznaczyć na zasadzie s/(maksymalny rozmiar bryły, względem wybranej osi) owinięcie cylindryczne, względem osi: su z x) tu arctg ou ; tv sv x ov π su x y) tu arctg ou ; tv sv y ov π z su x z) tu arctg ou ; tv sv z ov π gdzie S u, S v parametry skalujące odpowiednie współrzędne tekstury, ou, ov współrzędne wyznaczające środek tekstury owinięcia sferyczne, względem osi: su z x) tu arctg ou π su x y) tu arctg ou π z s x v tv arctg ov π x y z + + s y v tv arctg ov π x y z + + su x z) tu arctg ou π s v tv arctg π x z + y + z ov gdzie S u, S v parametry skalujące odpowiednie współrzędne tekstury, ou, ov współrzędne wyznaczające środek tekstury. Adresowanie współrzędnych tekstur Współrzędne tekstur powinny zawierać się w przedziale od 0 do, jednak czasem wskutek źle wyznaczonego współczynnika skalującego lub celowego działania, koordynaty przekraczają dozwolony przedział. Zwykle w przypadku przekroczenia przez współrzędną tekstury u bądź v wartości bierze się pod uwagę jedynie ułamkową część liczby. Efektem tego jest cykliczne powtarzanie tekstury na danej powierzchni. Zjawisko to może być wykorzystane do różnego rodzaju technik teksturowania obiektów, w związku z czym w systemach ta- - 3 -

kich jak DirectX, czy OpenGL zdefiniowano kilka typów adresowania współrzędnych tekstur w przypadku przekroczenia wartości jeden. WRAP Tryb ten polega na powtarzaniu tekstury wzdłuż odpowiedniej współrzędnej za każdym razem gdy, dana współrzędna przekroczy całkowitą wielokrotność liczby jeden. Przykładowo jeżeli tekstura ma być nałożona na kwadrat i współrzędne tekstury zdefiniowano następująco (0,0),(0,)(,0) i (,) to efektem działania tego trybu adresowania będzie umieszczenie czterech obrazków na rysowanym kwadracie. Sytuacja taka prezentowana jest na ilustracji. MIRROR, W trybie tym, dla każdej współrzędnej, w momencie przekroczenia przez nią wartości jeden, następuje lustrzane odbicie tekstury, względem odpowiedniej osi U lub V. Dzieje się tak gdyż współrzędne po przekroczeniu pierwszej wielokrotności jeden cyklicznie zmieniają się od 0 do, następnie po przekroczeniu kolejnej wielokrotności jedynki od do zera i tak dalej. Taki sposób wyznaczania współrzędnych można przedstawić za pomocą krótkiego programu float ftestfmod(ceil(u),); if ftest ) u(u-floor(u)); else u-(u-floor(u)); Omawiany sposób adresowania jest szczególnie przydatny przy nakładaniu wszelkiego typu tekstur o nieregularnych wzorach (marmur itp.), dzięki niemu mamy pewność, że tekstury będą tworzyły jednolity wzór. Poniższa ilustracja jest prezentuje efekty działania tego trybu adresowania. CLAMP Tryb ten powoduje przycięcie odpowiednich współrzędnych do wartości z zakresu od 0 do. Efektem działania jest nałożenie obrazka tylko w miejscu gdzie współrzędne nie przekraczają podanego zakresu. W pozostałym obszarze współrzędne tekstur przyjmują zwykle wartość co daje efekt rozmazania brzegów tekstury wzdłuż odpowiednich osi U i V. Poniższa ilustracja prezentuje efekty tego trybu adresowania. - 4 -

BORDER Tryb ten jest bardzo podobny do poprzedniego. Jedyną różnicą jest to, że wszystkie wierzchołki, których współrzędne tekstur przekroczyły wartość są pokrywane określonym kolorem brzegowym.. Efekty specjalne realizowane przy pomocy tekstur. Mapowanie środowiska Na wstępnie wspomniałem, że tekstury mogą pełnić rolę map określających nierówności powierzchni itp. Teksturowanie może być również zastosowane do mapowania środowiska (ang. environment mapping), czyli inaczej mówią realizacji odbić. W zasadzie stosując cieniowanie Gouraud a jest to jedyny sposób uzyskania efektu odbijania się sceny w jednym lub wielu obiektach. Ogólna zasada tego algorytmu jest prosta i polega na narysowaniu (w pomocniczym buforze) sceny widzianej z pozycji określonego obiektu, a następnie pokrycie go tak przygotowaną teksturą. Generalnie można wyróżnić dwa typy mapowania środwiska: ) mapowanie środowiska sferyczne- owinięcie tego typu zakłada, że wokół teksturowanego obiektu rozpięta jest wyimaginowana sfera, której wewnętrzna powierzchnia zostaje odbita na obiekcie. Realizacja omawianej techniki jest niezwykle prosta i polega na transformacji wierzchołków, wraz z ich wektorami normalnymi, a następnie dla każdego wierzchołka wyznacza się współrzędne u i v tekstury w następujący sposób. N x u + 0,5 N y v 5 + 0, gdzie N x i N y są składowymi x i y wektora normalnego związanego z danym wierzchołkiem. Stosowanie tej techniki daje świetne efekty metalicznego wyglądu obiektów, niestety zastosowanie jej do uzyskania efektu odbicia wymaga odpowiedniego spreparowania tekstury. ) kubiczne mapowanie środowiska - ten typ owinięcia stanowi rozszerzenie poprzedniego i opiera się na założeniu, że obiekt otaczany jest przez sześcian, którego ścianki odbijają się na powierzchni bryły. Obraz na każdej z płaszczyzn sześcianu otrzymywany jest w wyniku rysowania sceny widzianej przez daną płaszczyznę. Stosowanie tej techniki wiąże się z poniesieniem stosunkowo dużych kosztów obliczeniowych (dla każdego obiektu,w którym odbijają się inne, należy narysować scenę sześciokrotnie). Z tego powodu należy rysować scenę jedynie na widocznych ściankach sześcianu. Współrzędne tekstury obliczane są na podstawie wektora odbicia wyznaczanego na podstawie wzoru RN z N-I I(0,0,) - 5 -

. Wyboje (ang. bump mapping) Efekt nierówności powierzchni jest łatwo zrealizować stosując model cieniowania Phong a. Podstawową ideą tego algorytmu jest zmodyfikowanie współrzędnych x i y interpolowanych wektorów normalnych. Dzięki temu część wektorów zwróci się w stronę światła, powodując lepsze oświetlenie określonych punktów, natomiast część pozostanie bez zmian lub ulegnie przyciemnieniu. Tego typu efekty pozwalają właśnie na stworzenie złudzenia wypukłych powierzchni obiektu. Wartości, które należy dodać do współrzędnych wektorów są przyrostami jasności definiowanymi przez odpowiednią teksturę (mapę nierówności powierzchni).i wyznaczane są w następujący sposób gx ( x, y) j( x+ j( x, y) gy ( x, y) j( x, y+ ) j( x, y ) gdzie j (x,y) jasność punktu o współrzędnych (x,y); gx przyrosty jasności względem osi x; gy przyrosty jasności względem osi y; Jak widać z powyższych wzorów przyrosty wyznaczane są dla każdego punktu wzdłuż osi pionu i poziomu, z tego powodu należy przygotować dwie tablice o rozmiarach dokładnie takich jak tekstura. W celu wyznaczenia właściwego punktu z tablic przyrostów można posłużyć się algorytmem teksturowania, tak jakbyśmy nakładali na obiekt typową teksturę z tym, że współrzędne punktu tekstury będą dla nas współrzędnymi wartości, jakie należy pobrać z obu tablic przyrostów. Dodatkowo należy pamiętać, że wektory są znormalizowane i w związku z tym przyrosty należy podzielić przez maksymalną ich wartość czyli 55 Rys. Torus cieniowany algorytmem Phong a z uwzględnieniem nierówności powierzchni. Do oświetlenia bryły użyto dwóch świateł. - 6 -

Zadania do wykonania w trakcie ćwiczeń Napisać procedurę mapującą obrazek o rozmiarach 56x56 na prostokątny obszar ekranu o dowolnych rozmiarach. Napisać program rysujący teksturowany sześcian (współrzędne tektury dla kolejnych wierzchołków określić ręcznie) Program z poprzedniego punktu rozbudować o funkcję wyznaczającą współrzędne tekstury (owinięcie płaskie) wzdłuż dowolnej osi. - 7 -