Niedawno temu dostałem zapytanie o pomoc przy przełączaniu animacji z FK na IK. To przypomniało mi, że wpis o metodach animacji czekał na napisanie już kilka lat.
Dlatego nie ma co dalej zwlekać. Nauczmy się szybko i sprawnie przełączać kontrolki FK <-> IK.
FK? IK? Że co?
Za tym wszystkim stoi niezła matematyka i sposób w jaki komputer rozumie pojęcie ruchu.
Ale jako animatorzy nie musimy na szczęście tego wiedzieć. Wystarczy nam totalna podstawa.
FK i IK to metoda animacji łańcuchów kości. Takim łańcuchem mogą być kości składające się na rękę lub kręgosłup. Czyli… metoda animacji poszczególnych części ciała lub obiektów.
FK to Forward Kinematic, czyli animacja według hierarchii. Czyli poruszając główną kością poruszamy kości pod nią przylegające. Na przykład kręgosłup czy ogon.
IK to Inverse Kinematic, czyli animacja odwrotna do hierarchii (w dużym uproszczeniu). Poruszając tak zwanym efektorem definiujemy ruch kości w górę hierarchii. Na przykład noga.
Na przykładzie powyżej FK oznaczyłem na niebiesko, a IK na czerwono. Wykonuję tu dwa proste ruchy. Pierwszy to podciągnięcie najmniejszej kości do góry. Drugi to po prostu opuszczenie największej (pierwszej w łańcuchu) kości.
Przy pierwszym ruchu w FK musiałem nieźle się nagimnastykować żeby podnieść najmniejszą kość w linii prostej. W IK to po prostu przeciągnięcie po jednej osi translacji. W FK mamy TYLKO ROTACJE, więc musiałem zgiąć kości tak, by ruch szedł po linii prostej.
W drugim ruchu zaś sprawa się komplikuje. W FK poruszając pierwszą kość z hierarchii wszystkie kości idą za nią automatycznie. W IK ostatnia kość w hierarchii poruszy się tylko wtedy, gdy sam nią poruszę.
FK i IK nie mają wad. Po prostu mają różne zastosowania i przed rozpoczęciem animacji trzeba wiedzieć którą metodę zastosujemy. Najlepiej pomyślmy o tym podczas planowania naszej animacji.
Dla przykładu wyobraźmy sobie, że animacja powyżej to łańcuch kości nogi, a postać właśnie kuca. W IK to tylko jeden ruch. W FK będziemy męczyć się godzinami żeby stopa została na powierzchni podłogi.
Tutaj mały fun fact: W 1995 roku, gdy światło dzienne ujrzało Toy Story, nie było jeszcze IK. Animatorzy musieli właśnie ręcznie poprzez rotacje w kościach nogi ustawiać stopy na podłodze.
Dlatego w filmie mamy mało kadrów z widocznymi stopami na ziemi podczas ruchu. A jak już są to wprawne oko dojrzy ślizgi i przeniki z podłogą.
Na przykładzie
Na potrzeby przykładu stworzyłem szybką animację uderzenia ręką o stół. Wybaczcie błędy i niedoróbki. Skupiamy się tylko na metodzie.
Powyżej znajdziecie animację tylko na FK. I oczywiście mogę to doszlifować i dopilnować, że ręka zostanie jednak w stałym kontakcie ze stołem, ale… jest to doskonała okazja żeby w trakcie kontaktu przepiąć się na IK i niech matematyka odwali resztę roboty.
Przepinamy ruch na IK
Każdy rig jest inaczej zbudowany. Przełącznik IK – FK ręki najprawdopodobniej znajdziemy albo na głównej kontrolce postaci albo… w okolicach nadgarstka lub ramienia. Najprawdopodobniej będzie to po prostu zmiana atrybutu „IK/FK” z 0 na 1.
I dokładnie to robię na klatkę przed kontaktem dłoni ze stołem. Ruch uderzenia dokończę już na IK. Czyli klatkę wcześniej ustawiam (stawiam klucz) na FK. W następnej klatce zmieniam atrybut na IK.
W tym rigu kontrolki FK reprezentowane są kółkami, a IK sześcianami. Po przełączeniu metody animacji ręka wyprostowuje się. Dzieje się tak, ponieważ kontrolka IK jest ustawiona w domyślnej pozycji. Spokojnie, wszystko jest ok!
Ten wpis jest po to, żeby nauczyć się szybkiego sposobu upozowania kontrolki IK w miejsce w którym znalazłaby się kontrolka FK.
Sposób automatyczny
Do niektórych rigów mamy dołączony zestaw skryptów do pomocy podczas animacji. W nich znajdziemy proste przełączniki IK/FK z automatycznym przepozowaniem kontrolek.
Na przykład Malcolm od AnimSchool ma tę opcję. Żyć nie umierać!
Są też zewnętrzne skrypty, które mogą, ale nie muszą zadziałać z naszym rigiem.
Sposób półautomatyczny
Czyli mój ulubiony! Nie potrzebuję żadnych dodatkowych skryptów oprócz jednego, który i tak mam zainstalowany. TAK! Mowa o aTools, o którym miliony razy już mówiłem. A właściwie to AnimBot – nowym projekcie autora aTools. Po prostu przepisuje wszystko od nowa dodając nowe opcje. Niesamowita sprawa!
Ok. Do szybkiego przepozowania IK użyję narzędzia Xform World Space. Służy ona do kopiowania położenia obiektu w world space. W aTools też jest ta opcja. Nazywa się Fake Constrain i działa trochę inaczej.
W klatce z widoczną kontrolką FK zaznaczam kontrolkę od dłoni i klikam na ikonkę:
Następnie przechodzę klatkę dalej (z IK) i zaznaczam kontrolkę IK. Teraz przytrzymuję klawisz CTRL i ponownie wciskam ikonkę Xform World Space (lub prawy klik i Paste XformWorld Space). Kontrolka IK powinna wskoczyć w odpowiednie miejsce.
Sposób manualny
Czyli bez wykorzystania zewnętrznych skryptów. Tego używałem przed erą aTools/AnimBot.
Wykorzystamy do tego Ghosting – czyli taki Majkowy onion skin.
Podczas przełączania FK/IK patrzę, które kontrolki zostają widoczne – czyli nie są zależne od przełączania metody animacji.
Jak widać na przykładzie wyżej jest ich kilka. Wybrałem fioletowe kółko z kreską.
Zaznaczam je i przechodzę do Visualize -> Ghost Selected [].
Następnie w ustawieniach zmieniam Type of Ghosting na Custom Frame Steps i polach „przed” „po” wpisuję 1.
Chcę dokładnie mieć ghosting tylko klatek obok. W prosty sposób zobaczę gdzie kontrolka znajdzie się w następnej klatce.
I to tyle. Klikam Ghost!
Teraz to już tylko kwestia przepozowania kontrolki IK w taki sposób, aby ta kontrolka która nie znika pokryła się z widocznym ghostingiem.
Ufff.. brzmi skomplikowanie, ale to serio proste. Dopasowujemy kontrolkę IK do ghostingu.
Tutaj zrobiłem to w dużym uproszczeniu. Zaznaczam „kółko z patykiem” (ono jest widoczne w FK i IK), włączam Ghosting i przepozowuję kontrolkę IK.
Dokończenie animacji IK
Bez względu na to jaki sposób wybierzemy trzeba dokończyć naszą animację.
Na razie podczas przełączenia z FK na IK nasza ręka na dwie klatki będzie w tym samym miejscu. Trzeba dokończyć uderzenie. Dlatego w pierwszej klatce widocznego IK przepozowuję rękę tak, by już leżała na stole. Na koniec jeszcze kilka małych mikro ruchów i animacja skończona.
W praktyce wykonanie tego przejścia z FK na IK z użyciem AnimBota zajęło mi maksymalnie minutę. Oczywiście trzeba pamiętać także o przepozowaniu barku oraz łokcia. Ale to już pierdulety!
Z kontrolkami tak to wygląda:
Podsumowując
Takie przejście możemy robić w dowolnym miejscu. Nie musi to być moment uderzenia. Przejście z IK na FK (odwrotnie jak tutaj tłumaczyłem) możemy wykorzystać gdy np.: postać spada z klifu. Takie przełączenie zrobimy w momencie oderwania stopy od gruntu. Resztę już będziemy animować wygodnie na FK.
Grunt to wiedzieć kiedy i jakiej metody animacji użyć. Samo przejście to tylko kwestia spędzonego czasu.
Powodzenia!