Grafika 2D Animacja Zmiany Kształtu opracowanie: Jacek Kęsik
Wykład przedstawia podstawy animacji zmiany kształtu - morfingu
Animacja zmiany kształtu Podstawowe pojęcia Zlewanie (Dissolving / cross-dissolving) łączenie dwóch obrazów poprzez płynne przejście - uśrednianie Wstawianie (tweening) proces sekwencyjnej interpolacji obrazów pośrednich między dwoma stanami kluczowymi w celu uzyskania wrażenia płynnego przejścia między nimi Deformowanie (warping) zniekształcanie obrazu uzależnione od obszaru tego obrazu, matematyczny odpowiednik nadruku na elastycznej powierzchni (rozciąganej i ściskanej w różnych miejscach) Przekształcanie (morphing) jest kombinacją powyższych
Na postawie pracy dr Stevena Seitza (University of Washington) http://www.cs.washington.edu/homes/seitz/
Czym jest morphing? Próba znalezienia stanu pośredniego pomiędzy dwoma obiektami NIE stan pośredni między dwoma obrazami obiektów tylko obraz obiektu pośredniego
Próba znalezienia stanu pośredniego pomiędzy dwoma obiektami Animacja wiąże się ze znalezieniem ważonych stanów pośrednich zależnych od czasu t Jak wygląda obiekt pośredni? Nie mamy pojęcia Ale możemy sfingować coś sensownego
Morphing jest kombinacją zlewania, wstawiania i deformowania Czasem wystarczy tylko zlewanie(uśrednianie) i wstawianie Obraz pośredni = (1-t)*Obraz 1 + t*obraz 2 Najczęściej 0 < t < 1
Jak znaleźć wartość pośrednią między P i Q? v = Q - P P Q Interpolacja liniowa dowolny punkt pośredni ap + bq, Zdefiniowany tylko gdy a+b = 1 więc ap+bq = ap+(1-a)q P + 0.5v = P + 0.5(Q P) = 0.5P + 0.5 Q P + 1.5v = P + 1.5(Q P) = -0.5P + 1.5 Q (ekstrapolacja) P i Q dowolne wartości: Punkty w 2D lub 3D Kolory RGB, HSV (3D) Całe obrazy (m-na-n D)
Metoda filmowa nazywana zlewanie / przenikanie Ale co gdy obrazy nie są dopasowane do siebie?
Najpierw dopasowanie potem przenikanie Dopasowanie wykorzystuje przekształcenie globalne (najczęściej rzut/przekrzywienie)
Co gdy obiekty różnią się kształtem? Przenikanie nie działa Globalne dopasowanie nie działa Ani żadna globalna transformacja (np. afiniczna)
Rozwiązanie: Dopasowywanie szczegółów Ogon do ogona, oko do oka... Wprowadzamy tym samym zniekształcenia lokalne (nie parametryczne)
Procedura morphingu dla każdego t, 1. Znajdź kształt pośredni każdego z obrazów Lokalne zniekształcenia 2. Interpoluj kolory pikseli z tych 2 obrazów pośrednich przenikanie
Konieczność zdefiniowana bardziej złożonego przekształcenia Przekształcenia globalne były funkcjami kilku parametrów Przekształcenia lokalne u(x,y) i v(x,y) mogą być zdefiniowane niezależnie dla każdej pozycji x,y! (każdego szczegółu) Gdy znamy zbiór wektorów przekształceń u,v możemy łatwo przekształcić każdy piksel (przekształcenie odwrotne + interpolacja)
Punkty kontrolne określają krzywe zniekształcenia Krzywe zapewniają gładkość zbioru wektorów przekształceń
Jak określić przekształcenie? Zdefiniować punkty kontrolne odpowiadających sobie krzywych Interpolacja reszty pozycji by uzyskać pełne przekształcenie Ale nie chcemy definiować całej siatki a tylko kilka punktów
Jak określić przekształcenie? Zdefiniować odpowiadające sobie punkty kontrolne Interpolacja reszty pozycji by uzyskać pełne przekształcenie Ale jak? Jak zdefiniować przejście od punktów kontrolnych do pikseli?
Rozwiązanie - siatka trójkątów 1. Oznaczenie odpowiadających sobie punktów w kluczowych obszarach obiektów
Rozwiązanie - siatka trójkątów 2. Zdefiniowanie siatki trójkątów, rozpiętej na tych punktach Ta sama siatka na obu obrazach Siatki określają odpowiadające sobie trójkąty na obrazach
Rozwiązanie - siatka trójkątów 3. Każdy trójkąt jest przekształcany osobno od wyglądu początkowego do końcowego Ale jak zbudować taką siatkę?
Podział otoczki wypukłej zestawu punktów na powierzchni na trójkąty jest nazywany Triangularyzacją. Punkty znajdują się tylko i wyłącznie w wierzchołkach trójkątów Istnieje wiele wyników triangularyzacji zestawu punktów
Algorytm triangularyzacji o złożoności O(n 3 ) Powtarzaj tak długo jak możliwe Wybierz 2 wierzchołki Jeśli linia je łącząca nie przecina poprzednich linii zapisz ją
Jakość triangularyzacji Niech (T) = ( 1, 2,.., 3t ) będzie wektorem kątów triangularyzacji T Triangularyzacja T 1 będzie lepsza od T 2 jeśli (T 1 ) > (T 2 ) leksykograficznie Najlepsza triangulacja maksymalizuje najmniejsze kąty (Delaunay triangulation) dobrze źle
Poprawianie triangularyzacji W każdym czworokącie wypukłym możliwe jest odwrócenie krawędzi wewnętrznej. Jeśli poprawia to lokalną jakość triangularyzacji, poprawia również jakość triangularyzacji globalnej Jeśli odwrócenie krawędzi poprawia triangularyzację, poprzednia krawędź jest nazywana nielegalną
Naiwny algorytm Delaunay Rozpocznij z dowolną triangularyzacją Odwracaj kolejno nielegalne krawędzie, tak długo jak występują Może pracować bardzo długo
algorytm Delaunay (Delone) Wykorzystuje podział płaszczyzny na komórki Woronoja (dla danego zbioru n punktów, dzieli się płaszczyznę na n obszarów, w taki sposób, że każdy punkt w dowolnym obszarze znajduje się bliżej określonego punktu ze zbioru n punktów niż do pozostałych n 1 punktów ) Łącząc punkty z sąsiadujących ze sobą obszarów uzyskujemy triangularyzację Delaunay Złożoność zredukowana do O(nlogn)
Wiemy już jak przekształcić jeden obiekt w drugi ale jak stworzyć animowaną sekwencję morfingu? 1. Utworzyć kształty pośrednie (interpolacja siatek) 2. Przekształcić do nich oba obrazy 3. Wykonać zlanie kolorów obu przekształconych obrazów
Obraz źródłowy Siatka źródłowa Siatka pośrednia Obraz pośredni 1 Obraz pośredni 2 Obraz połączony Siatka docelowa Obraz docelowy f 0 1 czas 0 n Przekształć obraz źródłowy zgodnie z siatką Morf = f P+(1-f)Q Przekształć obraz docelowy godnie z siatką
Dla siatki trójkątnej Uzyskanie siatki pośredniej w chwili t t = [0,1] Liniowa interpolacja dla każdej pary szczegółów np. (1-t)*p1+t*p0 dla odpowiedników p0 i p1
Ograniczenie dla morfingu 2D Możliwość wystąpienia złożenia trójkątów Pojawia się w przypadku zmiany kolejności punktów kontrolnych na obrazie Z reguły w przypadku próby wykonania przekształcenia pseudo 3D Działa poprawnie tylko z danymi 3D Za pomocą ekstrapolacji można osiągnąć ciekawe efekty - karykatury
Morfing można wykonać również na obrazach dynamicznie zmienianych
Morfing widoku view morphing Morfowaniu podlega pozycja wirtualnej kamery
Morfing widoku view morphing Metoda i efekt Kamery rejestrujące ten sam obiekt w tej samej chwili Tworzą zgrubną ścieżkę ruchu wokół obiektu Płynny ruch kamery wokół obiektu uzyskany dzięki morfowaniu pozycji wirtualnej kamery pomiędzy poszczególnymi rzeczywistymi kamerami w ścieżce
That s all folks