Animacja Komputerowa. Interpolacja Aleksander Denisiuk Polsko-Japońska Akademia Technik Komputerowych Wydział Informatyki w Gdańsku ul. Brzegi 55 80-045 Gdańsk denisjuk@pja.edu.pl 1/47
Interpolacja Najnowsza wersja tego dokumentu dostępna jest pod adresem http://users.pja.edu.pl/~denisjuk/ 2/47
interpolacji 3/47
interpolacji interpolacji Danesąwartościparametrówwklatkachkluczowych współrzędne położenia, kąt nachylenia, obrót ręki robota, etc Określićwartościwklatkachpośrednich rozpędzanie i spowalnianie, ciągłość 4/47
Interpolacja a aproksymacja interpolacji Interpolacja:krzyweprzechodządokładnieprzezpunkty krzywe sklejane, interpolacja Hermite a Aproksymacja:danesąpunktykontrolne krzywe Béziera, B-sklejane 5/47
Złożoność funkcji interpolacji Wielomianytrzeciegostopnia można podawać położenia i prędkości punktów końcowych Wielomianyniższegostopnia nie mają punktów przegięcie krzywe są płaskie Wielomianywyższegostopnia nie dają istotnych korzyści są bardziej skomplikowane obliczeniowo 6/47
Ciągłość interpolacji Ciągłośćzerowegorzędu Ciągłośćpierwszegorzędu:ciągłykierunekstycznej (prędkość) Ciągłośćdrugiegorzędu:ciągłakrzywizna(przyśpieszenie) 7/47
Globalna i lokalna kontrola kształtu interpolacji Kontrolalokalna zmiana jednego punktu ma wpływ na ograniczoną część Kontrolaglobalna splajnycatmulla-roma,sklejaneparabole,b-spline zmiana jednego punktu ma wpływ na całą krzywą interpolacjalagrange a 8/47
ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów 9/47
ruchem punktu wzdłuż krzywej ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów OkreślonajestfunkcjainterpolacyjnaP(u) R 3 równomierna zmiana parametru u nie oznacza ruchu ze stałą prędkością parametryzacjałukowas=s(u),length(u 1,u 2 ) 10/47
Obliczanie analityczne ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów length(u 1,u 2 )= u 1 u 1 u 1 u 1 (dx(u) du ) 2+ ( dy(u) du P(u) du= ) 2+ ( ) dz(u) 2du du krzywa kubiczna płaska krzywa kwadratowa 11/47
Przybliżone obliczanie ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów Danesąwęzłyu 0 u 1 u n ObliczamyP(u 0 ),...,P(u n ) Tablicaodległości: G(0)=0, G(1)=dist(P 0,P 1 ), G(2)=G(1)+dist(P 1,P 2 ), etc Dlaoszacowaniadługościużywanajestinterpolacjaliniowa length(u 1,u 2 ) G(u 2 ) G(u 1 ) 12/47
Przykład ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów i u G 0 0,00 0,000 1 0,05 0,080 2 0,10 0,150 3 0,15 0,230 4 0,20 0,320 5 0,25 0,400 6 0,30 0,500 7 0,35 0,600 8 0,40 0,720 9 0,45 0,800 10 0,50 0,860 i u G 11 0,55 0,900 12 0,60 0,150 13 0,65 0,920 14 0,70 0,932 15 0,75 0,944 16 0,80 0,959 17 0,85 0,972 18 0,90 0,984 19 0,95 0,998 20 1,00 1,000 s(0,73) 0,953 u(0,75) 0,41875 13/47
Błędy obliczeniowe ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów Gęstszetablicowanie Interpolacjawyższegorzędu Adaptacja ( P(0) P( ) 1 P(0) P(1) + P 2 ( 1 P(1) ) <ε 2) 14/47
Całkowanie numeryczne ruchem Obliczanie długości łuku KwadraturaGaussa 1 Dowolnyprzedział Adaptacja 1 f(u)du i w i f(i) Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów 15/47
Rozwiązywanie równań ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów length(u 0,u)=s MetodaNewtonaf(t)=0 Metodasiecznych Wyszukiwaniebinarne t n+1 =t n f(t n) f (t n ) 16/47
prędkością ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów s(t),gdziet czas Ruchzestałąprędkością s(t) jest funkcją liniową ease-in/ease-out P(u(s(t))) Funkcjaodległościpowinnabyćmonotoniczna Funkcjaodległościpowinnabyćciągła Normalizacja:s [0,1],t [0,1] 17/47
sint ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów s(t)=ease(t)= sin (πt π 2)+1 2 18/47
Fragmenty funkcji sinusoidalnej ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów ease(t)= ( 2k 1 πf sin ( πt 2k 1 π ) ) 2 +1, dlat<k ( )/ 1 2k1 π +t k 1 f, dlak 1 t<k ( 2 2k1 π +k 2 k 1 + 2(1 k 2) π sin ( π(t k 2 ) 2(1 k 2 )) )/ f, dlak 2 t gdzief=2k 1 /π+k 2 k 1 +2(1 k 2 )/π. 2 π 2 1.0 k ------------------ 2 π 2 k 2 k 1 k 1 --------- π 2 k 1 k 2 1.0 19/47
Wielomian trzeciego stopnia ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów ease(t)= 2t 3 +3t 2 Stycznewkońcachprzedziału[0,1]sąpoziome brakprzedziałuzestałąprędkością 20/47
Stałe przyśpieszenie ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów a + dla0<t<t 1, a(t)= 0 dlat 1 <t<t 2, a dlat 2 <t<1. t v 0 t 1 dla0<t<t 1, v(t)= v 0 dlat 1 <t<t 2, ) v 0 (1 t t 2 1 t 2 dlat 2 <t<1. s(t)= t v 2 0 2t 1 dla0<t<t 1, t v 12 0 +v 0 (t t 1 ) dlat 1 <t<t 2, t v 2 1 02 +v 0 (t t 1 )+v 0 (1 1 t t 2 21 t 2 )(t t 1 ) dlat 2 <t<1. 21/47
Dopasowanie do danej prędkości ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów velocity 5.0 1.0 0.0 0.0 1.0 time User specified velocities velocity 5.0 1.0 0.0 0.0 1.0 time User specified velocities 5.0 1.0 velocity 5.0 1.0 0.0 velocity 0.0 1.0 Possible solution to enforce total distance covered equal to one 0.0 time 0.0 1.0 Possible solution to enforce total distance covered (signed area under the curve) equal to one time 22/47
Przykłady funkcji odległości ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów s s t t a) starts and ends abruptly b) backs up s s t t c) stalls d) smoothly starts and stops s s t e) starts part way along the curve and f) waits awhile before starting and gets to the end before t=1.0 doesn t get all the way to the end t 23/47
Warunki na ruch ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów (t i,s i,v i,a i ) s s t s s t t 24/47
Dopasowanie do par położenie-czas ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów P1 time = 0 P2 time = 10 P3 time = 35 Warunki(P i,t i ),i=1,...,j. KrzyweB-sklejaneP(t)= n+1 UkładP=NB B=N 1 P Regularyzacja N T P=N T NB B=(N T N) 1 N T P l=1 P4 time=50 P5 time=55 P6 time = 60 B l N l,k (t),2 k n+1 j 25/47
Interpolacja kwaternionów ruchem Obliczanie długości łuku Metody numeryczne prędkością Rozpędzanie i zatrzymanie Ogólne funkcje odległości Interpolacja kwaternionów Linowa:q(u)=(1 u)q 0 +uq 1 Łukowa(slerp):q(u)= sin(1 u)θ sinθ q 1 + sinuθ InterpolacjakrzywymiBéziera sinθ q 2 w algorytmie de Casteljau użyć slerp 26/47
Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni 27/47
Ruch po ścieżce Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni Danyjesttorruchuobiektu(kamery),sparametryzowany długością łuku oraz funkcja przesunięcia 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 Lokalnyukładwspółrzędnych(u,v,w)(prawoskrętny) PoczątekjestnaścieżceP(s) v Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni u POS w P(s) 29/47
Układ Freneta Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni JeanFrédéricFrenet,1847 w= P (s) P (s) u= P (s) P (s) P (s) P (s) v=u w 30/47
Układ Freneta, problemy Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni Braknaturalnegokierunku dogóry Punktyspłaszczenia(P (s)=0) interpolacja na odcinku v i u i w i uj v j w j Nieciągłośćwektorunormalnego(dwapółokręgi) Wektorstycznynieokreślakierunku,doktóregopodąża obiekt Wektorv(kierunek dogóry )możegwałtoniesięobracać 31/47
Układ Freneta, ważna informacja Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni Wektornormalnywskazujekierunekskrętu można pochylić obiekt w tę stronę bądź w przeciwnym kierunku(siła odśrodkowa) 32/47
Ruch kamery po ścieżce Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni Wybraćśrodekzainteresowania(COI)wustalonympinkcie sceny(w srodku jednego z obiektów) w=coi POS NiechośOyokreślakierunek dogóry u=w y v=u w 33/47
Kierunek patrzenia Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni KierunekdoCOI przechodzenie blisko COI może spowodować gwałtowne zmiany kierunku Punktynakrzywej Punktynainnejkrzywej Interpolowanepunktynascenie Kierunek dogóry : wpłaszczyźniewiy odchylony od tego kierunku 34/47
Wybór środka zainteresowania Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni PunktnakrzywejzwyprzdzeniemP(s+ s) 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średnieniekilkapunktówkrzywej za mało punktów(albo blisko siebie) efekt pozostaje za dużo punktów kamera będzie zbyt statyczna WprowadzeniedlaCOIfunkcjiC(s) Możnawprowadzićdlakierunku dogóry funkcjęu(s) w=c(s) P(s),u=w (U(s) P(s)),v=u w. 35/47
Wygładzanie ścieżki Jeżelikolejnepunktypochodzązpomiarów,tomożebyć potrzebne wygładzanie Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni 36/47
Interpolacja liniowa Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni p i =1 2 ( p i + p ) i 1+p i+1 2 = 1 4 p i 1+ 1 2 p i+ 1 4 p i+1 37/47
Interpolacja sześcienna Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni P(u) wielomianstopnia3,przechodącyprzezsąsiadujące punktyp(0)=p i 1,P( 1 4 )=p i 1,P( 3 4 )=p i+1,p(1)=p i+2 p i =1 2 ( ) P( 1 2 )+p 1 układ równań wzór Lanrange a wzór Newtona NakońcachprzedziałumożnaużyćparaboliP(0)=p ( ) 0, P( 2 3 )=p 2,P(1)=p 3,p 1 =1 2 P( 1 3 )+p 1 Pierwszypunktbezzmian można użyć krzywej drugiego stopnia: p 0 =p 3+3(p 1 p 2 ) 38/47
Interpolacja sześcienna, przykład y Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni x 39/47
Użycie splotu Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni p i =f(x i ) Splot:f g(x)= g(u) filtr, f(x+u)g(u)du g(u)du=1 Całkęmożnaobliczyćnumerycznie Wpunktachkońcowychfunkcjęmożnadowolnierozszerzyć 40/47
Przykłady filtrów 1/20 1/10 Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni 20 1/10 20 prostokątny,dachowy,gaussowski 10 41/47
Splot z filtrem dachowym Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni 1.0 v 1 v= 1 8 v 1+ 3 4 v 2+ 1 8 v 3 v 2 v 3 v 1 1/8 3/4 1/8 42/47
Aproksymacja krzywymi B-sklejanymi Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni MożnaużyćkrzywychB-sklejanych wynik gładka krzywa nie przechodzi przez dane węzły 43/47
Wyznaczenie śceżki na powierzchni Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni Danesądwapunktynapowierzchni Ścieżkanajkrótsza kosztowneobliczeniowo Ścieżkaprawienajkrótsza: płaszczyna łacząca końce ścieżki i możliwie prostopadła do powierzchni 44/47
Wyznaczenie śceżki na powierzchni Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni PowierzchniaparametryzowanaP=P(u,v) połaczyć w dziedzinie(u, v) końce ścieżki odcinkiem (łukiem) Skomplikowanymashztrójkątów algorytm zachłanny wyznaczenia ścieżki z krawędzi masha łączymybieżącypunktzkońcemodcinkiem wybieramykrawędź,któramanajmniejszykąt zodcinkiem obliczamy kosinusy 45/47
Ścieżka najszybszego spadku Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni A = N Y Y (Global up vector: y-axis) N (vector normal to surface) D = Y A 46/47
Ścieżki bezkolizyjne Ruch po ścieżce Zorientowanie wzdłuż ścieżki Kamera Wygładzanie Ścieżka na powierzchni Nieruchomeprzeszkody(alborozhomeowiadomychtorach) wyznaczenie punktów pośrednich przybliżenie przeszków prostymi obiektami(sfera, prostopadłóościan) Ruchomeprezszkody poszukiwanie możliwego przedłużenia ścieżki przed przeszkodą(algorytm zachłanny) ruch przeszkod jest pzewidywalny 47/47