Transformacje obiektów 3D

Podobne dokumenty
Trójwymiarowa grafika komputerowa rzutowanie

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

2 Przygotował: mgr inż. Maciej Lasota

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

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

Wykład 4. Rendering (1) Informacje podstawowe

Ćwiczenia nr 4. TEMATYKA: Rzutowanie

GRK 2. dr Wojciech Palubicki

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

Oświetlenie obiektów 3D

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

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

Krystalochemia białek 2016/2017

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

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

GRK 4. dr Wojciech Palubicki

Przekształcenia geometryczne w grafice komputerowej. Marek Badura

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

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

Obraz jako funkcja Przekształcenia geometryczne

Grafika komputerowa Wykład 4 Geometria przestrzenna

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

Animowana grafika 3D Laboratorium 1

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

Mobilne Aplikacje Multimedialne

Układy współrzędnych GUW, LUW Polecenie LUW

GRAFIKA CZASU RZECZYWISTEGO Podstawy syntezy grafiki 3D i transformacji geometrycznych

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

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

Rzutowanie. dr Radosław Matusik. radmat

GEOMETRIA PRZESTRZENNA (STEREOMETRIA)

Przekształcenia geometryczne. Mirosław Głowacki Wydział Inżynierii Metali i Informatyki Przemysłowej

Systemy wirtualnej rzeczywistości. Podstawy grafiki 3D

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

Grafika 2D. Animacja Zmiany Kształtu. opracowanie: Jacek Kęsik

Tomasz Tobiasz PLAN WYNIKOWY (zakres podstawowy)

1. Prymitywy graficzne

Kryteria oceniania z matematyki Klasa III poziom podstawowy

Grafika komputerowa i wizualizacja. dr Wojciech Pałubicki

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

PODSTAWY RACHUNKU WEKTOROWEGO

Rzuty aksonometryczne służą do poglądowego przedstawiania przedmiotów.

Grafika 2D. Przekształcenia geometryczne 2D. opracowanie: Jacek Kęsik

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

płaskie rzuty geometryczne

1. Potęgi. Logarytmy. Funkcja wykładnicza

RYSUNEK TECHNICZNY BUDOWLANY RZUTOWANIE PROSTOKĄTNE

STEREOMETRIA CZYLI GEOMETRIA W 3 WYMIARACH

RYSUNEK TECHNICZNY BUDOWLANY RZUTOWANIE AKSONOMETRYCZNE

aksonometrie trójosiowe odmierzalne odwzorowania na płaszczyźnie

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

Podstawy grafiki komputerowej

IRONCAD. TriBall IRONCAD Narzędzie pozycjonujące

KRYTERIA OCEN Z MATEMATYKI DLA UCZNIÓW KL. II GIMNAZJUM

Elementy grafiki komputerowej. Elementy geometrii afinicznej

Stereometria bryły. Wielościany. Wielościany foremne

GEOMETRIA ANALITYCZNA W PRZESTRZENI

Definicja obrotu: Definicja elementów obrotu:

FIGURY I PRZEKSZTAŁCENIA GEOMETRYCZNE

Reprezentacja i analiza obszarów

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

str 1 WYMAGANIA EDUKACYJNE ( ) - matematyka - poziom podstawowy Dariusz Drabczyk

WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY Z MATEMATYKI W KLASIE IV

Wymagania kl. 3. Zakres podstawowy i rozszerzony

Programowanie Procesorów Graficznych

I. Potęgi. Logarytmy. Funkcja wykładnicza.

GEOMETRIA ANALITYCZNA W PRZESTRZENI

Przekształcenia geometryczne. Dorota Smorawa

WYMAGANIA EDUKACYJNE Z MATEMATYKI DLA KLASY TRZECIEJ NA ROK SZKOLNY 2011/2012 DO PROGRAMU MATEMATYKA Z PLUSEM

Ćwiczenie 9. Rzutowanie i wymiarowanie Strona 1 z 5

Rachunek wektorowy - wprowadzenie. dr inż. Romuald Kędzierski

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

Iloczyn wektorowy. Autorzy: Michał Góra

Grafika 2D. Animacja Zmiany Kształtu. opracowanie: Jacek Kęsik

ZESPÓŁ SZKÓŁ W OBRZYCKU

SZa 98 strona 1 Rysunek techniczny

Kalibracja kamery. Kalibracja kamery

Przedmiotowe zasady oceniania i wymagania edukacyjne z matematyki dla klasy drugiej gimnazjum

Wymagania edukacyjne z matematyki Klasa III zakres podstawowy

3.3. dwie płaszczyzny równoległe do siebie α β Dwie płaszczyzny równoległe do siebie mają ślady równoległe do siebie

Temat: Transformacje 3D

GRK 3. Dr Wojciech Palubicki

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

Wymagania na poszczególne oceny w klasie II gimnazjum do programu nauczania MATEMATYKA NA CZASIE

Graniastosłupy mają dwie podstawy, a ich ściany boczne mają kształt prostokątów.

Manipulator OOO z systemem wizyjnym

Notacja Denavita-Hartenberga

Reprezentacja i analiza obszarów

WYMAGANIA EDUKACYJNE Z MATEMATYKI 2016/2017 (zakres podstawowy) klasa 3abc

Grafika inżynierska geometria wykreślna. 5a. Obroty i kłady. Rozwinięcie wielościanu.

VII. WYKRESY Wprowadzenie

RZUTOWANIE PROSTOKĄTNE

Wykonanie w 3ds max dowolnego samochodu

ROK SZKOLNY 2017/2018 WYMAGANIA EDUKACYJNE NA POSZCZEGÓLNE OCENY:

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

SZCZEGÓŁOWE WYMAGANIA EDUKACYJNE DLA KLAS 4-6 SP ROK SZKOLNY 2015/2016

Transformacje. dr Radosław Matusik. radmat

Ćwiczenie nr 2 - Rysowanie precyzyjne

Widoki WPROWADZENIE. Rzutowanie prostokątne - podział Rzuty prostokątne dzieli się na trzy rodzaje: widoki,.przekroje, kłady.

WYKŁAD 3 WYPEŁNIANIE OBSZARÓW. Plan wykładu: 1. Wypełnianie wieloboku

Transkrypt:

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

Lokalny układ współrzędnych Tworząc model obiektu, zapisujemy współrzędne wierzchołków siatki w układzie współrzędnych lokalnych (modelu, obiektu). Początek układu (,,) i orientacja mogą być wybrane dowolnie. Dla wygody, początek układu powinien być w środku obrotu i skalowania modelu.

Orientacja osi z Dygresja: układ współrzędnych może być prawoskrętny (right-handed) lub lewoskrętny (left-handed). Różnica kierunek współrzędnej z Wybór wpływa na znak z w macierzach przekształceń. OpenGL przyjmuje układ prawoskrętny. DirectX przyjmuje układ lewoskrętny.

Układ współrzędnych świata Świat 3D (world) wirtualna scena opisana w trzech wymiarach. Świat używa własnego układu współrzędnych. Każdy obiekt 3D jest umieszczany w świecie 3D w odpowiedniej pozycji, skali i pozie. Przekształcenie świata (world transform) - konwersja wsp. lokalnych na wsp. świata. Wszystkie wierzchołki jednego obiektu są przekształcane w taki sam sposób. Różne obiekty mają własne przekształcenia.

Układ współrzędnych świata Współrzędne lokalne i świata

Macierz przekształcenia Współrzędne jednorodne (homogenous coordinates) punktu w układzie świata: wektor 4-elementowy: (x, y, z, w) Osie ukł. wsp. świata są wyznaczone przez trzy wektory jednostkowe o długości : (x X, y X, z X ), (x Y, y Y, z Y ), (x Z, y Z, z Z ) Przesunięcie początku układu: (t X, t X, t Z ) Macierz przekształcenia układu: = L L L Z Z Z Z Y Y Y Y X X X X z y x t z y x t z y x t z y x w z y x

Współrzędne jednorodne Uproszczony przypadek: klasyczny układ kartezjański, wyznaczony przez wektory: (,,) (,,) (,,), brak przesunięcia (wspólny początek), ta sama orientacja układów. Przekształcenie przez macierz jednostkową: = L L L z y x w z y x

Translacja (translation) o wektor (t X, t X, t Z ) Macierz przekształcenia: Translacja (przesunięcie) + = Z Y X L L L t t t z y x z y x = L L L Z Y X z y x t t t w z y x

Skalowanie Skalowanie (scaling) o współczynniki skalowania: s X, s X, s Z Skalowanie: jednorodne (wszystkie współczynniki jednakowe) lub niejednorodne. Macierz przekształcenia: = L L L Z Y X z y x s s s w z y x

Obrót Obrót (rotation) o kąt θ (w radianach) W przestrzeni 3D możliwe są obroty wokół każdej z trzech osi (X, Y, Z). Inaczej: obrót wokół osi X to obrót na płaszczyźnie YZ. Osobna macierz przekształcenia dla każdego z obrotów.

Obrót Macierze przekształceń dla obrotu wokół każdej z osi X, Y, Z: R X = cos sin ( θ ) sin( θ ) ( θ ) cos( θ ) R Y = cos sin ( θ ) sin( θ ) ( θ ) cos( θ ) R Z = cos sin ( θ ) sin( θ ) ( θ ) cos( θ )

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 są afiniczne. Przekształcenia, które nie są afiniczne, nazywa się przekształceniami deformującymi.

Środek obrotu i skalowania UWAGA #! Obrót i skalowanie są wykonywane zawsze w stosunku do początku układu wsp.! Dlatego na etapie modelowania, warto ustawić początek układu lokalnego w środku obrotu/skalowania. W przeciwnym razie, musimy najpierw wyrównać układy za pomocą dodatkowej translacji.

Składanie przekształceń Zwykle wykonujemy na wierzchołku kilka przekształceń. Obliczamy jedną macierz przekształcenia jako iloczyn (macierzowy) składowych macierzy. Obliczoną macierz stosujemy osobno do każdego wierzchołka obiektu. Zalecana kolejność: skalowanie obroty (dowolna kolejność) przesunięcie zawsze na końcu!

Składanie przekształceń UWAGA #2! Kolejność macierzy przy mnożeniu: od prawej do lewej. Np. dla operacji (kolejno): S, R Y, T: p = S p p 2 = R Y p = R Y S p p 3 = T p 2 = (T R Y S) p p 3 = M W p M W = T R Y S

Składanie przekształceń UWAGA #3! Kolejność operacji ma znaczenie. Obrót i przesunięcie: Przesunięcie i obrót:

Układ współrzędnych widoku Możemy oglądać świat 3D z różnego miejsca i pod różnym kątem. Kamera (camera), także: obserwator, oko, widz punkt w ukł. wsp. świata, z którego obserwowany jest świat. Układ współrzędnych widoku (view): kamera jest w jego początku, orientacja osi wyznacza kierunek, w jakim patrzy kamera względem układu świata

Układ współrzędnych widoku Przykład opisu ukł. widoku NVU początek w ukł. świata: (c X, c X, c Z ) orientacja: trzy jednostkowe wektory: N: kierunek, w którym patrzy kamera (oś Z) V: kierunek w górę (oś Y) U: kierunek w prawo (oś X) nie musi być podany, można go obliczyć. Macierz transformacji widoku: = Z Y X Z Z Z Y Y Y X X X c c c N N N V V V U U U M V

Transformacja widoku Cały świat (wszystkie współrzędne świata wszystkich wierzchołków wszystkich obiektów) jest przekształcany za pomocą tej samej macierzy transformacji widoku. Macierz tr. widoku będzie zmieniać się gdy przesuniemy kamerę. Całkowita macierz przekształcenia: m. transformacji widoku * m. transf. świata p V = M V p W = M V M W p L

Rzutowanie Rzutowanie (projection) polega tutaj na przekształceniu współrzędnych 3D na 2D. Obiekty ze świata 3D są rzutowane na płaszczyznę prostopadłą do osi kamery. Okno (viewport) fragment płaszczyzny rzutowania zawierający obiekty, które mają zmieścić się na obrazie. Jest wizjerem kamery.

Rzutowanie Dwa zasadnicze rodzaje rzutów: rzut równoległy (ortographic projection), rzut perspektywiczny (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: prostokątny (przedni, górny, boczny) ukośny izometryczny Metoda stosowana w projektowaniu CAD, nie używana w grach. Rzut równoległy jest prostszy, wystarczy pominąć współrzędne z.

Rzut równoległy Przykład: trzy rzuty prostokątne i rzut izometryczny

Rzut izometryczny Rzut stosowany często w starszych grach komputerowych 2D. Iluzja trzech wymiarów - brak perspektywy.

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 (kamerą) a obiektem. Zniekształcane są kształty i wymiary obiektów. Stosowany np. w grach komputerowych. Trudniejsze przekształcenia niż dla rzutu równoległego.

Bryła widzenia Bryła widzenia jest wyznaczona przez promienie prowadzone od kamery, przez krawędzie okna. Dla rzutu równoległego: prostopadłościan. Dla rzutu perspektywicznego: ostrosłup.

Bryła widzenia Bryła jest obcięta przez dwie płaszczyzny. Przednia płaszczyzna obcinania (front clipping plane) zabezpiecza przed błędami dzielenia przez i małe liczby. Tylna płaszczyzna obcinania (back clipping plane) eliminuje rysowanie zbyt odległych obiektów ( draw distance ) Powstaje ostrosłup ścięty frustum.

Pole widzenia Pole widzenia field of vision (FOV) jest kątem pionowym bryły widzenia. Kąt zależy od odległości okna od kamery: blisko kamery duży kąt, daleko od kamery mały kąt. FOV działa więc jak ogniskowa aparatu ustawia zoom kamery na świat 3D.

Przekształcenie perspektywiczne Macierz przekształcenia perspektywicznego: pole widzenia (FOV): α położenie płaszczyzn obcinania: z N, z F wsp. proporcji widoku (aspect ratio): a r = w / h ( ) ( ) + = 2 2 / tan 2 / tan F N F N F N F N r P z z z z z z z z a α α M

Dzielenie perspektywiczne Perspective divide podzielenie rzutowanych wartości (x, y, z) przez z. Jest wykonywane sprzętowo przez GPU. Aby nie stracić wartości z, skopiowaliśmy ją do w jest to współczynnik skali. Dostajemy zatem punkt: x y p =,, z z Po usunięciu składowej z =, dostajemy punkt na płaszczyźnie w układzie znormalizowanych współrzędnych.

Znormalizowane współrzędne urządzenia Po tych wszystkich operacjach, dostajemy współrzędne znormalizowane normalized device coordinates (NDC): x: od - (lewa krawędź okna) do + (prawa krawędź) y: od - (dolna krawędź) do + (górna krawędź) w: od - (przednia płaszczyzna obcinania) do + (tylna płaszczyzna obcinania)

Obcinanie Punkty wewnątrz bryły widzenia mają współrzędne z zakresu [-, ]. Tylko obiekty wewnątrz bryły widzenia mieszczą się w widoku (obrazie). Wszystkie trójkąty o wierzchołkach leżących poza bryłą widzenia są usuwane! Trójkąty leżące na krawędzi są przycinane (clipping).

Usuwanie tylnych powierzchni Tylne powierzchnie obiektów (odwrócone od kamery) są niewidoczne i nie muszą być brane pod uwagę. Usuwanie tylnych powierzchni (backface culling) operacja eliminacji trójkątów siatki obiektów, które są odwrócone od kamery. Operacja jest wykonywana przez system, ale należy ją aktywować. Zaleta: nie wykonujemy niepotrzebnych obliczeń i eliminujemy błędy.

Usuwanie tylnych powierzchni Co to znaczy przednia powierzchnia trójkąta? Nawinięcie (winding order) jest to kolejność, w jakiej podawane są wierzchołki trójkąta. Domyślnie: ściana przednia to ta, dla której werteksy są podane w kolejności odwrotnej do ruchu wskazówek zegara. Można to zmienić, ale trzeba zachować tę samą konwencję dla wszystkich trójkątów. Wniosek: kolejność definiowania werteksów ma znaczenie!

Usuwanie tylnych powierzchni Wektor normalny trójkąta wektor prostopadły do jego przedniej powierzchni. Obliczamy kąt między normalną trójkąta a kierunkiem osi z kamery. Jeśli kąt 9 stopni powierzchnia jest niewidoczna, może być usunięta.

Rasteryzacja Na widok po rzutowaniu nakładany jest raster siatka o rozmiarach odpowiadających docelowemu obrazowi (np. 92x8). Współrzędne NDC są przeliczane do układu współrzędnych okna (w pikselach). Każdy trójkąt w rastrze jest skanowany rząd po rzędzie (scanline conversion). Z każdego punktu siatki rastra jest pobierany fragment (DirectX używa terminu pixel). Dla każdego fragmentu obliczana jest barwa. Barwa jest przenoszona na piksel obrazu.

Rasteryzacja Przykład rasteryzacji trójkątów.

Rasteryzacja bufor głębokości Trójkąty na płaszczyźnie okna mogą się pokrywać, chociaż są w różnej odległości od kamery. Musimy pobrać fragment z trójkąta najbliższego kamerze (o najmniejszej z). Dlatego zachowaliśmy informację o głębokości w zmiennej w. Rasteryzer przegląda trójkąty po kolei. Jak znaleźć najbliższy kamerze?

Algorytm malarza Algorytm malarza (painter s algorithm) - naiwne podejście do problemu. Wszystkie trójkąty są sortowane według położenia na osi z. Trójkąty są rysowane w kolejności od najdalszego do najbliższego. Algorytm nie radzi sobie z przecinającymi się nawzajem trójkątami.

Algorytm bufora głębokości (z-buffer) Używamy dodatkowego obszaru pamięci bufora głębokości (z-buffer). Jest on inicjalizowany wartością (maksymalną). Dla każdego fragmentu, porównujemy jego wartość z (właściwie w) z zapisaną w buforze. Jeżeli bieżąca wartość jest większa pomijamy fragment (jest on dalej niż inny, wcześniej przetworzony). Jeżeli jest mniejsza przetwarzamy fragment i zapisujemy nową wartość z w buforze.

Algorytm bufora głębokości Ilustracja działania metody (tutaj: większa wartość to bliższa odległość).

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).

Podsumowanie () ETAP # przekształcenia wierzchołków (wykonuje: programista) Dla każdego z obiektów: obliczyć macierz przekształcenia świata M W (obroty, skalowanie, translacja) Dla wszystkich obiektów (dla świata): obliczyć macierz tr. widoku M V obliczyć m. rzutu perspektywicznego M P Zastosować do każdego wierzchołka: M = M P M V M W

Podsumowanie (2) ETAP #2 przygotowanie do rasteryzacji (wykonuje: system i GPU) Dzielenie perspektywiczne. Usunięcie trójkątów poza bryłą widzenia. Przycięcie trójkątów na krawędzi bryły. Usunięcie tylnych powierzchni.

Podsumowanie (3) ETAP #3 rasteryzacja (wykonuje: system i GPU, z jednym wyjątkiem) Nałożenie rastra i próbkowanie fragmentów. Interpolacja danych zapisanych w werteksach. Obliczenie barwy fragmentu (cieniowanie, teksturowanie, efekty specjalne, itp.) wykonuje programista! Obsługa bufora głębokości. Algorytmy antyaliasingu. Zapisanie barwy piksela w buforze obrazu.