Animacja Komputerowa. Interpolacja
Transkrypt
Animacja Komputerowa. Interpolacja
Animacja Komputerowa. Interpolacja Aleksander Denisiuk Polsko-Japońska Akademia Technik Komputerowych Wydział Informatyki w Gdańsku ul. Brzegi 55 80-045 Gdańsk [email protected] 1 / 47 Interpolacja Zagadnienie Interpolacji Sterowanie Ruchem Najnowsza wersja tego dokumentu dostępna jest pod adresem http://users.pja.edu.pl/~denisjuk/ Wykorzystanie Ścieżek 2 / 47 Zagadnienie Interpolacji Zagadnienie interpolacji Sterowanie Ruchem Wykorzystanie Ścieżek Zagadnienie Interpolacji 3 / 47 Zagadnienie interpolacji Zagadnienie Interpolacji Zagadnienie interpolacji Sterowanie Ruchem Wykorzystanie Ścieżek Dane są wartości parametrów w klatkach kluczowych współrzędne położenia, kąt nachylenia, obrót ręki robota, etc Określić wartości w klatkach pośrednich rozpędzanie i spowalnianie, ciągłość 4 / 47 Interpolacja a aproksymacja Zagadnienie Interpolacji Zagadnienie interpolacji Sterowanie Ruchem Wykorzystanie Ścieżek Interpolacja: krzywe przechodzą dokładnie przez punkty krzywe sklejane, interpolacja Hermite’a Aproksymacja: dane są punkty kontrolne krzywe Béziera, B-sklejane 5 / 47 Złożoność funkcji Zagadnienie Interpolacji Zagadnienie interpolacji Sterowanie Ruchem Wykorzystanie Ścieżek Wielomiany trzeciego stopnia Wielomiany niższego stopnia można podawać położenia i prędkości punktów końcowych nie mają punktów przegięcie krzywe są płaskie Wielomiany wyższego stopnia nie dają istotnych korzyści są bardziej skomplikowane obliczeniowo 6 / 47 Ciągłość Zagadnienie Interpolacji Zagadnienie interpolacji Sterowanie Ruchem Ciągłość zerowego rzędu Ciągłość pierwszego rzędu: ciągły kierunek stycznej (prędkość) Ciągłość drugiego rzędu: ciągła krzywizna (przyśpieszenie) Wykorzystanie Ścieżek 7 / 47 Globalna i lokalna kontrola kształtu Zagadnienie Interpolacji Zagadnienie interpolacji Kontrola lokalna Sterowanie Ruchem Wykorzystanie Ścieżek zmiana jednego punktu ma wpływ na ograniczoną część splajny Catmulla-Roma, sklejane parabole, B-spline Kontrola globalna zmiana jednego punktu ma wpływ na całą krzywą interpolacja Lagrange’a 8 / 47 Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku Metody numeryczne Sterowanie Ruchem Sterowanie prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów Wykorzystanie Ścieżek 9 / 47 Sterowanie ruchem punktu wzdłuż krzywej Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku Określona jest funkcja interpolacyjna P (u) ∈ R3 równomierna zmiana parametru u nie oznacza ruchu ze stałą prędkością parametryzacja łukowa s = s(u), length(u1 , u2 ) Metody numeryczne Sterowanie prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów Wykorzystanie Ścieżek 10 / 47 Obliczanie analityczne Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku Metody numeryczne Sterowanie prędkością length(u1 , u2 ) = r u 1 R u1 dx(u) 2 du + u R1 |Ṗ (u)| du = u1 dy(u) 2 du + dz(u) 2 du du krzywa kubiczna płaska krzywa kwadratowa Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów Wykorzystanie Ścieżek 11 / 47 Przybliżone obliczanie Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku Metody numeryczne Sterowanie prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Dane są węzły u0 ¬ u1 ¬ · · · ¬ un Obliczamy P (u0 ), . . . , P (un ) Tablica odległości: G(0) = 0, G(1) = dist(P0 , P1 ), G(2) = G(1) + dist(P1 , P2 ), etc Dla oszacowania długości używana jest interpolacja liniowa length(u1 , u2 ) ≈ G(u2 ) − G(u1 ) Interpolacja kwaternionów Wykorzystanie Ścieżek 12 / 47 Przykład Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku Metody numeryczne Sterowanie prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów Wykorzystanie Ścieżek i 0 1 2 3 4 5 6 7 8 9 10 u 0,00 0,05 0,10 0,15 0,20 0,25 0,30 0,35 0,40 0,45 0,50 G 0,000 0,080 0,150 0,230 0,320 0,400 0,500 0,600 0,720 0,800 0,860 i 11 12 13 14 15 16 17 18 19 20 u 0,55 0,60 0,65 0,70 0,75 0,80 0,85 0,90 0,95 1,00 G 0,900 0,150 0,920 0,932 0,944 0,959 0,972 0,984 0,998 1,000 s(0,73) ≈ 0, 953 u(0,75) ≈ 0, 41875 13 / 47 Błędy obliczeniowe Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku Metody numeryczne Sterowanie prędkością Gęstsze tablicowanie Interpolacja wyższego rzędu Adaptacja 1 1 kP (0) − P (1)k − kP (0) − P k + kP − P (1)k < ε 2 2 Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów Wykorzystanie Ścieżek 14 / 47 Całkowanie numeryczne Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku Kwadratura Gaussa R1 −1 Dowolny przedział Adaptacja f (u) du ≈ P wi f (i) i Metody numeryczne Sterowanie prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów Wykorzystanie Ścieżek 15 / 47 Rozwiązywanie równań Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku length(u0 , u) = s Metoda Newtona f (t) = 0 tn+1 f (tn ) = tn − ′ f (tn ) Metody numeryczne Sterowanie prędkością Rozpędzanie i zatrzymanie Metoda siecznych Wyszukiwanie binarne Ogólne funkcje odległości Interpolacja kwaternionów Wykorzystanie Ścieżek 16 / 47 Sterowanie prędkością Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku Metody numeryczne Sterowanie prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości s(t), gdzie t —czas Ruch ze stałą prędkością ease-in/ease-out s(t) jest funkcją liniową P (u(s(t))) Funkcja odległości powinna być monotoniczna Funkcja odległości powinna być ciągła Normalizacja: s ∈ [0, 1], t ∈ [0, 1] Interpolacja kwaternionów Wykorzystanie Ścieżek 17 / 47 sin t Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku s(t) = ease(t) = sin(πt− π2 )+1 2 Metody numeryczne Sterowanie prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów Wykorzystanie Ścieżek 18 / 47 Fragmenty funkcji sinusoidalnej Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku Metody numeryczne Sterowanie prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości ease(t) = 2k1 sin πf 2k1 π 2k1 π πt 2k1 − π2 + 1 , . + t − k1 dla t < k1 dla k1 ¬ t < k2 f, . π(t−k2 ) 2) f, + k2 − k1 + 2(1−k sin 2(1−k2 ) π gdzie f = 2k1 /π + k2 − k1 + 2(1 − k2 )/π. π⁄2 dla k2 ¬ t π⁄2 1.0 – k 2 -----------------π⁄2 Interpolacja kwaternionów Wykorzystanie Ścieżek k2 – k1 k1 --------π⁄2 k1 k2 1.0 19 / 47 Wielomian trzeciego stopnia Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku ease(t) = −2t3 + 3t2 Styczne w końcach przedziału [0, 1] są poziome brak przedziału ze stałą prędkością Metody numeryczne Sterowanie prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów Wykorzystanie Ścieżek 20 / 47 Stałe przyśpieszenie Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku Metody numeryczne a+ a(t) = 0 a − t v 0 t1 v(t) = Ogólne funkcje odległości Interpolacja kwaternionów Wykorzystanie Ścieżek 0 v 1 − 0 s(t) = dla 0 < t < t1 , dla t1 < t < t2 , v Sterowanie prędkością Rozpędzanie i zatrzymanie dla 0 < t < t1 , dla t1 < t < t2 , dla t2 < t < 1. t2 v 0 2t1 t−t2 1−t2 dla t2 < t < 1. dla 0 < t < t1 , dla t1 < t < t2 , v0 t21 + v0 (t − t1 ) t21 02 v + v0 (t − t1 ) + v0 1 − 1 t−t2 2 1−t2 (t − t1 ) dla t2 < t < 1. 21 / 47 Dopasowanie do danej prędkości Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku velocity velocity 5.0 5.0 1.0 1.0 0.0 0.0 1.0 0.0 Metody numeryczne time Ogólne funkcje odległości Interpolacja kwaternionów Wykorzystanie Ścieżek 0.0 1.0 Possible solution to enforce total distance covered equal to one User specified velocities Sterowanie prędkością Rozpędzanie i zatrzymanie time velocity velocity 5.0 5.0 1.0 1.0 0.0 0.0 1.0 0.0 User specified velocities time time 0.0 1.0 Possible solution to enforce total distance covered (signed area under the curve) equal to one 22 / 47 Przykłady funkcji odległości Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku s s t b) backs up t a) starts and ends abruptly Metody numeryczne Sterowanie prędkością Rozpędzanie i zatrzymanie s s Ogólne funkcje odległości t t Interpolacja kwaternionów c) stalls d) smoothly starts and stops Wykorzystanie Ścieżek s s t e) starts part way along the curve and gets to the end before t=1.0 t f) waits awhile before starting and doesn’t get all the way to the end 23 / 47 Warunki na ruch Zagadnienie Interpolacji (ti , si , vi , ai ) Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku s s Metody numeryczne Sterowanie prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów t t s s Wykorzystanie Ścieżek t velocity-distance-time constraints specified t resulting curve 24 / 47 Dopasowanie do par położenie-czas Zagadnienie Interpolacji P2 P1 P4 time = 10 time=50 Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku time = 0 P5 time=55 P3 P6 time = 35 time = 60 Metody numeryczne Sterowanie prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów Warunki (Pi , ti ), i = 1, . . . , j. Krzywe B-sklejane P (t) = Układ P = N B Wykorzystanie Ścieżek n+1 P Bl Nl,k (t), 2 ¬ k ¬ n + 1 ¬ j l=1 B = N −1 P Regularyzacja NT P = NT NB B = (N T N )−1 N T P 25 / 47 Interpolacja kwaternionów Zagadnienie Interpolacji Sterowanie Ruchem Sterowanie ruchem Obliczanie długości łuku Linowa: q(u) = (1 − u)q0 + uq1 Łukowa (slerp): q(u) = sin(1−u)θ sin θ q1 + Interpolacja krzywymi Béziera sin uθ sin θ q2 w algorytmie de Casteljau użyć slerp Metody numeryczne Sterowanie prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów Wykorzystanie Ścieżek 26 / 47 Zagadnienie Interpolacji Sterowanie Ruchem Wykorzystanie Ścieżek Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wykorzystanie Ścieżek Wygładzanie Ścieżka na powierzchni 27 / 47 Ruch po ścieżce Zagadnienie Interpolacji Sterowanie Ruchem Wykorzystanie Ścieżek Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Dany jest tor ruchu obiektu (kamery), sparametryzowany długością łuku oraz funkcja przesunięcia Wygładzanie Ścieżka na powierzchni ustalić zmianę położenia oraz zorientowania jeżeli punkty na torze pochodzą z pomiarów, trzeba tor wygładzić dodatkowo ścieżka może leżeć na powierzchni innego obiektu ścieżka bezkolizyjna 28 / 47 Zorientowanie wzdłuż ścieżki Zagadnienie Interpolacji Sterowanie Ruchem Lokalny układ współrzędnych (u, v, w) (prawoskrętny) Początek jest na ścieżce P (s) v Wykorzystanie Ścieżek Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera w u Wygładzanie Ścieżka na powierzchni P(s) S PO 29 / 47 Układ Freneta Zagadnienie Interpolacji Sterowanie Ruchem Wykorzystanie Ścieżek Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni Jean Frédéric Frenet, 1847 P ′ (s) w= ′ |P (s)| P ′′ (s) × P ′ (s) u = ′′ |P (s) × P ′ (s)| v =u×w 30 / 47 Układ Freneta, problemy Zagadnienie Interpolacji Sterowanie Ruchem Brak naturalnego kierunku „do góry” Punkty spłaszczenia (P ′′ (s) = 0) Wykorzystanie Ścieżek interpolacja na odcinku vi Ruch po ścieżce vj wi Zorientowanie wzdłuż ścieżki wj Kamera Wygładzanie ui Ścieżka na powierzchni uj Nieciągłość wektoru normalnego (dwa półokręgi) Wektor styczny nie określa kierunku, do którego podąża obiekt Wektor v (kierunek „do góry”) może gwałtonie się obracać 31 / 47 Układ Freneta, ważna informacja Zagadnienie Interpolacji Sterowanie Ruchem Wykorzystanie Ścieżek Wektor normalny wskazuje kierunek skrętu można pochylić obiekt w tę stronę bądź w przeciwnym kierunku (siła odśrodkowa) Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni 32 / 47 Ruch kamery po ścieżce Zagadnienie Interpolacji Sterowanie Ruchem Wykorzystanie Ścieżek Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Wybrać środek zainteresowania (COI) w ustalonym pinkcie sceny (w srodku jednego z obiektów) w = COI − POS Niech oś Oy określa kierunek „do góry” u=w×y v =u×w Ścieżka na powierzchni 33 / 47 Kierunek patrzenia Zagadnienie Interpolacji Sterowanie Ruchem Wykorzystanie Ścieżek Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni Kierunek do COI przechodzenie blisko COI może spowodować gwałtowne zmiany kierunku Punkty na krzywej Punkty na innej krzywej Interpolowane punkty na scenie Kierunek „do góry”: w płaszczyźnie w i y odchylony od tego kierunku 34 / 47 Wybór środka zainteresowania Zagadnienie Interpolacji Punkt na krzywej z wyprzdzeniem P (s + ∆s) Sterowanie Ruchem Wykorzystanie Ścieżek Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera wykorzystać parametryzację łukową na końcu ścieżki można użyć interpolacji z wektorem stycznym w końcowym punkcie chwiejąca się kamera uśrednienie kilka punktów krzywej Wygładzanie Ścieżka na powierzchni za mało punktów (albo blisko siebie) — efekt pozostaje za dużo punktów — kamera będzie zbyt statyczna Wprowadzenie dla COI funkcji C(s) Można wprowadzić dla kierunku „do góry” funkcję U (s) w = C(s) − P (s), u = w × (U (s) − P (s)), v = u × w. 35 / 47 Wygładzanie ścieżki Zagadnienie Interpolacji Sterowanie Ruchem Jeżeli kolejne punkty pochodzą z pomiarów, to może być potrzebne wygładzanie Wykorzystanie Ścieżek Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni 36 / 47 Interpolacja liniowa Zagadnienie Interpolacji Sterowanie Ruchem p′i = 1 2 pi + pi−1 +pi+1 2 = 41 pi−1 + 12 pi + 14 pi+1 Wykorzystanie Ścieżek Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni 37 / 47 Interpolacja sześcienna Zagadnienie Interpolacji Sterowanie Ruchem Wykorzystanie Ścieżek P (u) — wielomian stopnia 3, przechodący przez sąsiadujące punkty P (0) = pi−1 , P ( 41 ) = pi−1 , P ( 34 ) = pi+1 , P (1) = pi+2 p′i = Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni 1 2 P ( 12 ) + p1 układ równań wzór Lanrange’a wzór Newtona Na końcach przedziału możnaużyć paraboli P (0) = p0 , P ( 23 ) = p2 , P (1) = p3 , p′1 = 12 P ( 31 ) + p1 Pierwszy punkt bez zmian można użyć krzywej drugiego stopnia: p′0 = p3 + 3(p1 − p2 ) 38 / 47 Interpolacja sześcienna, przykład Zagadnienie Interpolacji y Sterowanie Ruchem Wykorzystanie Ścieżek Ruch po ścieżce Zorientowanie wzdłuż ścieżki x Kamera Wygładzanie Ścieżka na powierzchni 39 / 47 Użycie splotu Zagadnienie Interpolacji Sterowanie Ruchem Wykorzystanie Ścieżek Ruch po ścieżce pi = f (xi ) Splot: f ⋆ g(x) = R∞ f (x + u)g(u) du −∞ g(u) — filtr, ∞ R g(u) du = 1 −∞ Zorientowanie wzdłuż ścieżki Kamera Całkę można obliczyć numerycznie W punktach końcowych funkcję można dowolnie rozszerzyć Wygładzanie Ścieżka na powierzchni 40 / 47 Przykłady filtrów Zagadnienie Interpolacji Sterowanie Ruchem 1/10 1/20 Wykorzystanie Ścieżek 20 10 Ruch po ścieżce Zorientowanie wzdłuż ścieżki 1/10 Kamera Wygładzanie Ścieżka na powierzchni 20 prostokątny, dachowy, gaussowski 41 / 47 Splot z filtrem dachowym Zagadnienie Interpolacji Sterowanie Ruchem v2 1.0 v1 v3 v1 Wykorzystanie Ścieżek 1/8 3/4 1/8 Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera a) smoothing kernel superimposed v = 81 v1 + 43 v2 + 81 v3 Wygładzanie Ścieżka na powierzchni 42 / 47 Aproksymacja krzywymi B-sklejanymi Zagadnienie Interpolacji Sterowanie Ruchem Wykorzystanie Ścieżek Można użyć krzywych B-sklejanych wynik – gładka krzywa nie przechodzi przez dane węzły Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni 43 / 47 Wyznaczenie śceżki na powierzchni Zagadnienie Interpolacji Sterowanie Ruchem Wykorzystanie Ścieżek Ruch po ścieżce Zorientowanie wzdłuż ścieżki Dane są dwa punkty na powierzchni Ścieżka najkrótsza — kosztowne obliczeniowo Ścieżka prawie najkrótsza: płaszczyna łacząca końce ścieżki i możliwie prostopadła do powierzchni Kamera Wygładzanie Ścieżka na powierzchni 44 / 47 Wyznaczenie śceżki na powierzchni Zagadnienie Interpolacji Sterowanie Ruchem Wykorzystanie Ścieżek Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni Powierzchnia parametryzowana P = P (u, v) połaczyć w dziedzinie (u, v) końce ścieżki odcinkiem (łukiem) Skomplikowany mash z trójkątów algorytm zachłanny wyznaczenia ścieżki z krawędzi masha łączymy bieżący punkt z końcem odcinkiem wybieramy krawędź, która ma najmniejszy kąt z odcinkiem obliczamy kosinusy 45 / 47 Ścieżka najszybszego spadku Zagadnienie Interpolacji Y (Global “up” vector: y-axis) Sterowanie Ruchem N (vector normal to surface) Wykorzystanie Ścieżek Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni D = Y×A A = N×Y 46 / 47 Ścieżki bezkolizyjne Zagadnienie Interpolacji Nieruchome przeszkody (albo rozhome o wiadomych torach) Sterowanie Ruchem Wykorzystanie Ścieżek Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni wyznaczenie punktów pośrednich przybliżenie przeszków prostymi obiektami (sfera, prostopadłóościan) Ruchome prezszkody poszukiwanie możliwego przedłużenia ścieżki przed przeszkodą (algorytm zachłanny) ruch przeszkod jest pzewidywalny 47 / 47