Animowana grafika 3D Opracowanie: J. Kęsik kesik@cs.pollub.pl
Rzutowanie Równoległe Perspektywiczne
Rzutowanie równoległe Rzutowanie równoległe jest powszechnie używane w rysunku technicznym - umożliwienie odtworzenia (restytucji) punktu w przestrzeni na podstawie rysunku. dwa przypadki : proste rzutowania przecinają rzutnię pod kątem prostym (rzut pionowy/aksonometria prostokątna) proste rzutowania przecinają rzutnię pod kątem innym niż kąt prosty (rzut ukośny/aksonometria ukośna)
Rzutowanie równoległe
Rzutowanie równoległe rzut pionowy Proste przekształcenie współrzędnych punktu w przestrzeni (P) na punkt na rzutni (R) Xr=Xp Yr=Yp Zr=0
Rzutowanie równoległe rzut pionowy Rzuty odcinków równoległych do rzutni są tej samej długości co odcinki Rzuty odcinków prostopadłych do rzutni są punktami
Rzutowanie równoległe - rzut pionowy Źródło: http://mst.mimuw.edu.pl/lecture.php?lecture=gk1&part=ch5
Rzutowanie równoległe rzut ukośny Przekształcenie współrzędnych punktu w przestrzeni na punkt na rzutni zależy od kąta przecięcia prostej rzutowania z rzutnią Dodatkowym parametrem jest kąt określający ustawienie prostej rzutowania w stosunku do rzutni
Rzutowanie równoległe rzut ukośny Kąt - pozycja na okręgu o środku w punkcie przecięcia pionowej prostej rzutowania odchylenie od osi x)
Rzutowanie równoległe rzut ukośny x p = xl cos y p = yl cos L = zl 1 = z 1 tgα Kąt - pozycja na okręgu o środku w punkcie przecięcia pionowej prostej rzutowania odchylenie od osi x)
Rzutowanie równoległe rzut ukośny wsp. jednorodne 1 0 0 0 0 1 sin cos 0 0 1 0 0 0 0 1 ), ( 1 1 1 L L L P p p p p p P z y x z y x ] 1 [ 1] [
Rzutowanie równoległe rzut ukośny Rzut sześcianu jednostkowego ustawionego równolegle do osi XYZ
Rzutowanie równoległe Podział aksonometrii ze względu na kierunek rzutowanych osi układu prostokątnego: izometria wszystkie osie układu prostokątnego w przestrzeni tworzą jednakowy kąt z rzutnią i ich obrazy ulegają jednakowemu skrótowi na rzutni powstaje obraz trzech osi tworzących pomiędzy sobą kąty po 120, często na rysunkach izometrycznych pomija się wpływ skrótu,
Rzutowanie równoległe Podział aksonometrii ze względu na kierunek rzutowanych osi układu prostokątnego: dimetria dwie z osi układu prostokątnego tworzą z rzutnią jednakowe kąty (najczęściej są do niej równoległe), anizometria (trimetria) - każda z osi układu prostokątnego tworzy z rzutnią inny kąt i podlega innemu skrótowi
Rzutowanie równoległe izometria
Rzutowanie równoległe dimetria
Rzutowanie równoległe trimetria
Rzutowanie perspektywiczne Linie projekcji schodzą się w jednym punkcie zwanym środkiem projekcji. Obrazy punktów wyznaczone są poprzez przecięcia linii projekcji z rzutnią
Rzutowanie perspektywiczne
Rzutowanie perspektywiczne Obiekty znajdujące się dalej dają mniejszy obraz na rzutni Linie równoległe w przestrzeni schodzą się w pewnym punkcie na rzutni punkt zbiegu znajduje się na linii horyzontu
Rzutowanie perspektywiczne
Rzutowanie perspektywiczne x y z p p p d x d d y d 0 z z
Rzutowanie perspektywiczne - ogólne Procedura rzutowania komplikuje się, kiedy rzutnia nie jest zgodna z płaszczyzną XY.
Rzutowanie perspektywiczne - ogólne Dwa układy współrzędnych: (x w, y w, z w ) UW świata (world coordinates) (x v, y v, z v ) - UW obserwatora (viewer coordinates, camera coordinates).
Rzutowanie perspektywiczne - ogólne Procedura dzieli się na dwa etapy: Przepisanie współrzędnych obiektu w układ obserwatora Wykonanie rzutowania na płaszczyznę x v y v (np. rzutowanie perspektywiczne)
Rzutowanie perspektywiczne - ogólne Przepisanie współrzędnych obiektu w układ obserwatora: [ x' y' z' 1] [ x y z 1] V V jest macierzą transformacji wynikającą ze złożenia odpowiednich transformacji elementarnych (iloczyn macierzy)
Rzutowanie perspektywiczne - ogólne Przepisanie współrzędnych obiektu w układ obserwatora: przesunięcie układu obserwatora do początku UW świata obrót układu obserwatora wokół osi x w, tak aby oś z v znalazła się na płaszczyźnie x w z w obrót układu obserwatora wokół y w, aby os z v pokryła się z z w obrót układu obserwatora z w, aby osie x v i y v pokryły się z x w i y w.
Rzutowanie perspektywiczne - ogólne Przepisanie współrzędnych obiektu w układ obserwatora: przesunięcie układu obserwatora do początku UW świata obrót układu obserwatora wokół osi x w, tak aby oś z v znalazła się na płaszczyźnie x w z w obrót układu obserwatora wokół y w, aby os z v pokryła się z z w obrót układu obserwatora z w, aby osie x v i y v pokryły się z x w i y w.
Rzutowanie perspektywiczne Podział na 3 rodzaje rzutowania (w zależności od liczby osi układu świata, które przecinają rzutnię): Jednozbieżne Dwuzbieżne Trójzbieżne
Rzutowanie Jednozbieżne Istnieje jeden punkt zbiegu dla danej sceny Rzutnia x v y v leży na płaszczyźnie x w y w Tylko oś z w przecina rzutnię
Rzutowanie Dwuzbieżne Istnieją dwa punkty zbiegu dla danej sceny, leżące na linii horyzontu Dwie osie układu x w y w z w przecinają rzutnię x v y v
Rzutowanie Trójzbieżne Istnieją trzy punkty zbiegu dla danej sceny Trzy osie układu x w y w z w przecinają rzutnię x v y v Odpowiednik obserwacji wierzchołka wysokiego obiektu z bliskiej odległości na ziemi. Ściany budynków zbiegają się w miarę oddalania od obserwatora ku środkowi widzianego obrazu.
Algorytmy widoczności Scena trójwymiarowa jest zbiorem figur w przestrzeni W zależności od położenia obserwatora widoczny jest inny obszar sceny. Jest on ograniczony bryłą widzenia (view frustum dla rzutowania perspektywicznego)
Algorytmy widoczności Bryła widzenia Dal (far plane) Bliż (near plane)
Algorytmy widoczności Zadanie określenia widoczności polega na znalezieniu (i ewentualnym wykonaniu obrazu) fragmentów figur (ścian) widocznych dla obserwatora Dwa główne rodzaje: Algorytmy przestrzeni danych wyznaczają reprezentację obszaru widocznego z danego położenia obserwatora, na podstawie ich wyników można wykonać wiele obrazów, o dowolnej rozdzielczości i ogniskowej
Algorytmy widoczności Dwa główne rodzaje: Algorytmy przestrzeni obrazu wynikiem jest obraz lub zbiór pikseli zmiana rozdzielczości obrazu wymaga ponownego wykonania algorytmu
Algorytmy widoczności Algorytmy przestrzeni danych Założenia: scena zdefiniowana jako zbiór ścian, płaskich wieloboków Każda ściana posiada swój kolor (odcień szarości) Ogólny szablon: 1. Uszeregowanie ścian w kolejności od najdalszej do najbliższej względem obserwatora 2. Projekcja sceny według ustalonego wcześniej porządku
Algorytmy widoczności Algorytmy przestrzeni danych Przeprowadzenie takiej analizy wymaga najczęściej porównania każdej ściany z każdą liczba porównań n ścian -> n 2
Algorytmy widoczności Algorytmy przestrzeni obrazu Podstawowymi zasadami są: 1. Wyznaczenie dla każdego piksela ekranu najbliższej ściany 2. Przyjęcie za kolor piksela koloru wyznaczonej ściany. Dla każdego piksela trzeba rozpatrzyć n ścian. Dla N pikseli ekranu -> nn porównań
Algorytmy przestrzeni obrazu Algorytm malarza Składa się z 2 etapów 1. Wstępne wyznaczenie kolejności ścian 2. Rysowanie ścian w kolejności od najdalszej
Algorytmy przestrzeni obrazu Algorytm malarza etap 1 Dla każdej ze ścian ze zbioru: S = {s 1, s 2, s 3,, s i,, s n } wyznaczamy maksymalną wartość współrzędnej z wierzchołka (głębokość) Porządkujemy ściany od wartości największej do najmniejszej Możliwe błędy i wystąpienia niejednoznaczności ta sama głębokość
Algorytmy przestrzeni obrazu Algorytm malarza etap 1 Możliwe błędne przypisania Dobrze Źle
Algorytmy przestrzeni obrazu Algorytm malarza poprawa uporządkowania Dla każdej pary wstępnie uporządkowanych ścian wykonuje się 5 testów Prawidłowy wynik któregoś z testów przerywa testowanie ściany nie są zamieniane miejscami
Algorytmy przestrzeni obrazu Algorytm malarza poprawa uporządkowania Test 1/5 współrzędne x Wynik jest pozytywny gdy przedziały [x' min, x' max ] oraz [x" min, x" max ] nie zachodzą na siebie
Algorytmy przestrzeni obrazu Algorytm malarza poprawa uporządkowania Test 2/5 współrzędne y Wynik jest pozytywny gdy przedziały [y' min, y' max ] oraz [y" min, y" max ] nie zachodzą na siebie.
Algorytmy przestrzeni obrazu Algorytm malarza poprawa uporządkowania Test 3/5 przecinanie z płaszczyzną drugiej ściany Wynik jest pozytywny jeśli dla wszystkich wierzchołków (x', y', z') ściany s' spełniona jest nierówność: A"x' + B"y' + C"z' + D" < 0 gdzie A", B", C", D" są współczynnikami płaszczyzny ściany s"
Algorytmy przestrzeni obrazu Algorytm malarza poprawa uporządkowania Test 4/5 przecinanie z płaszczyzną drugiej ściany Wynik jest pozytywny jeśli dla wszystkich wierzchołków (x", y", z") ściany s" spełniona jest nierówność: A'x" + B'y" + C'z" + D' < 0 gdzie A', B', C', D' są współczynnikami płaszczyzny, na której leży ściana s'
Algorytmy przestrzeni obrazu Algorytm malarza poprawa uporządkowania Test 5/5 sprawdzenie rozłączności rzutów ścian s' i s" na płaszczyznę xy Wynik jest pozytywny gdy rzuty ścian s' i s" na płaszczyznę xy nie stykają się
Algorytmy przestrzeni obrazu Algorytm malarza poprawa uporządkowania Gdy żaden z 5 testów nie jest pozytywny, zamienia się ściany miejscami i wykonuje testy ponownie W przypadku braku pozytywnych testów i tym razem, uznaje się taką parę za niemożliwą do uporządkowania
Algorytmy przestrzeni obrazu Algorytm malarza przypadki szczególne Konieczny podział ścian Uporządkowanie całej sceny może nie być możliwe nawet gdy poszczególne pary da się uporządkować
Algorytmy przestrzeni obrazu Algorytm malarza przypadki szczególne Uporządkowanie całej sceny może nie być możliwe nawet gdy poszczególne pary da się uporządkować
Algorytmy przestrzeni obrazu Algorytm bufora z Bufor Z (głębokości / głębi) - przechowuje współrzędną Z dla każdego piksela obrazu. Dla każdego piksela obrazu wykonywany jest algorytm testowania ścian przecinanych przez promień tego piksela
Algorytmy przestrzeni obrazu Algorytm bufora z
Algorytmy przestrzeni obrazu Algorytm bufora z Zalety: łatwa do realizacji sprzętowej, obecnie powszechnie stosowana przez producentów kart graficznych; nieprzezroczyste obiekty trójwymiarowe mogą być rasteryzowane w dowolnej kolejności. Wady: Duża zajętość pamięci Pojemność bufora Z (l. bitów) determinuje dokładność
Algorytmy przestrzeni obrazu Algorytm bufora z Wady: Pojemność bufora Z (l. bitów) determinuje dokładność Zbyt mała precyzja może powodować błędy niejednoznaczności wyświetlania wielokątów leżących na jednej płaszczyźnie (z fighting):