"W pigułce" Riggowanie

 

 

Ilustracja1 :  Hand No Rigg (Click for HD)

 

Riggowanie to proces ożywiania postaci poprzez przypisanie do siatki kości posiadających takie zależności by animator mogl poruszać postać przypisując klucze jedynie do kilku kontrolerów. Ożywianie postaci to złożony proces przeważnie obejmuje cztery stanowiska : rysownika, modelarza, osoby riggujacej i animatora. Oznacza to ze projekt musi byc tak tworzony że zmiana lub brak jednego pracownika nie spowoduje przestoju w pracy. Modelarz tworzący postać, musi ją zrobić poprawnie anatomiczne w oparciu o szkice artysty tak by siatka miała poprawna topologie która będzie się odpowiednio odkształcała. Osoba tworząca rigg musi stworzyć takie kości i ich powiązania by każdy animator mógł za pomocą jak najmniejszej ilości kontrolerów intuicyjnie uzyskać dowolna pozę. Nie rigujemy wszystkich postaci tworzonych w animacjach ponieważ riggowanie to pracochłonny i długotrwały proces więc jeżeli jakaś postać występuje jedynie raz w danej animacji szybciej stworzy się animacje poszczególnymi kośćmi niż na tworzenie skomplikowanego riggu.

Reka przedstawiona na ilustracji 1 ma 16 głównych kości i każda zmiana ich położenia poprzez rotacje, spowoduje przypisane kluczy na krzywych rotacji X,Y,Z każdej kość co da nam 48 kluczy . Możemy sobie wyobrazić że zmiana takiej animacji i edycjia krzywych jest istnym koszmarem.

 

 

Ilustracja2 :  Hand with Rigg (Click for HD)

 

Na ilustracji 2 widzimy jak będzie wyglądała ta sama animacja jeżeli zrobimy ja za pomocą riggu który umożliwia wykonanie tych samych ruchów ale zamiast 16 kość przypisujemy klucze trzem kontrolerom,
Fingers_CTR Rot X,Y,Z,
Hand_CTR Loc X,Y,Z ,
Thumb_CTR Rot X,Y,Z Scale X.
Jak widzimy riggowanie nie tylko przyspiesza prace ograniczając animatorowi ilość obiektów które musi przestawić ale również w ogromny sposób redukuje ilość kluczy co wpływa na podgląd animacji Real-Time. Rigowanie jak i inne dziedziny grafiki3D ma niewiele stałych zasad lecz wiele wskazówek jak powinno się robić poprawne riggi.

 

 

FK - Forward Kinematics

 

FK - jest to zbiór równań kinematycznych które odpowiadają za obliczenie pozycji ostatniego elementu w łańcuchu, biorąc pod uwagę dane o położeniu każdego elementu łańcucha. Na animacji (Ilustracja 1) widzimy jak poruszając jedną kością manipulujemy łańcuchem 3 kości. Położenie ostatniej kości w łańcuchu jest wynikiem z równania do którego my sami musimy podać wartość. Układy FK stosujemy wszędzie tam gdzie chcemy mieć kontrole nad wszystkim i nad wszystkimi aspektami animacji czyli pozycja obiektów ich orientacja jak i skalowanie poszczególnych elementów łańcucha.

 

Constrains

 

Ograniczenia bo tak najlepiej można to przetłumaczyć są standardowymi sposobami na połączenie w całość układu FK. W animacji (Ilustracja 1) mamy Constraints odnoszące sie do rotacji naszego kontrolera. Jeżeli obiekt kopiuje 100% wartość z innego, oznacza to, że jest całkowicie od niego uzależniony ergo ograniczony, stąd Constraints. Liczba i różnorodność powiązań uzależniona jest od programu ale można wyodrębnić podstawowe występujące w większość:

 

Ilustracja3 :  Powiązanie FK jednego kontrolera i układu 3 kości

 

  • ograniczanie położenia
  • ograniczanie rotacji
  • ograniczanie skali
  • powiązanie typu "parent" pozwalające jednym Constraints ograniczyć wszystkie parametry.
  • ograniczenie "patrz na" obliczający rotacje względem położenia innego obiektu.
  • ograniczenie wyrażone matematyczne: 'obiekt1.rotX=(obiekt2.rotX/2,5)'

 

Constraints Point/Loc

Ograniczenie polegające na kopiowaniu położenia czy to z pojedynczego czy też z kilku. Najczęstszym zastosowaniem tego typu ograniczenia jest budowanie podstawowego riggu ręki gdzie cała dłoń kopiuje lokacje nadgarstka pozwalając animatorowi na dowolne ustawienie jego rotacji. Gdyby cała ręka była zrobiona z jednego układu wtedy bardzo ścieżko było by uzyskać taką swobodę.

Constraints Orient/Rot

  • pierwszy obiekt - kontroler 20% + obiekt zero 80%;
  • drugi obiekt - kontroler 50% + obiekt zero 50%;
  • trzeci obiekt - kontroler 80% + obiekt zero 20%;

Jest to swego rodzaju wyjątek jeżeli chodzi o Constraints ponieważ nie działa on w pojedynkę!. Jeżeli chcemy ograniczyć rotację jakiegoś obiektu musimy przypisać mu dwa Constraints Orient/Rot jeden do obiektu który będzie kontrolerem a drugi do obiektu który będzie źródłem odniesienia. Jak się zastanowić jest to logiczne bo obiekty same się nie poruszają wiec jeżeli chcemy ograniczyć ruch który sami zadajemy musimy podać wartość "zerową". Na Ilustracji1 widzimy jak jedna kość porusza układem składającym się z trzech obiektów i możemy zauważyć, że każda następna kość układu podąża bardziej za naszym kontrolerem. Jest to możliwe tylko dlatego, że każdy obiekt układu ma przypisane dwa Constraints, jeden do kontrolera a drugi do niewidocznego na animacji nieruchomego obiektu którego rotacja we wszystkich osiach zawsze wynosi zero. Rozłożenie ograniczeń wygląda następująco:

Constraints Scale

Jak sama nazwa mówi to ograniczenie odpowiada za skalowanie naszego obiektu za pomocą kontrolera. Jeżeli chodzi o zastosowanie to w bardzo prosty sposób wykorzystując skalowanie możemy zriggować pojedynczy palec, mając już wszystkie palce, możemy zbudować kolejne połączenie tak aby każdy palec kopiował z jednego kontrolera różne wartość skali dzięki temu uzyskamy płynne ruchy wszystkich palców.

Constraints Parent

Parent jest to pierwszy obiekt w hierarchi i wszystkie obiekty poniżej dziedziczą jego położenie. Ograniczenie to pozwala nam na swobodne i płynne włączanie takiego ograniczenia lub też nie. Tego typu ograniczenie może być wykorzystane przy tworzeniu złożonego układu który raz będzie pozwalał nam sterować obiektem w trybie IK a po wyłączeniu Parent w trybie FK.

 

 

IK - Invers Kinematic

 

IK - jest to zbiór równań kinematycznych które odpowiadają za obliczenie pozycji wszystkich elementów w łańcuchu biorąc pod uwagę dane o położeniu końca łańcucha. Orientacja/położenie naszych kości jest obliczana biorąc wartość z położenia kontrolera IK i wyjściowych wartość poszczególnych kości Oznacza to, że jeżeli jakaś kość układu była już obrócona w osi X to manipulując kontrolerem IK dana kość będzie kontynuowała swoją rotacje a nie będzie się cofała. Na animacji (Ilustracja 4) widzimy jak poruszając jednym kontrolerem poruszamy cały łańcuch aż do ostatniej kości na którą nie mamy wpływu jak w standardowym układzie kości, gdzie panuje hierarchia i kości mogą wpływać jedynie na te które są poniżej w drzewie hierarchii. Zależności te nazywamy Parent i Children kość układu która znajduje się na szczycie nazywana jest ROOT. Jeżeli ruszamy kością na samym początku układu wprawia ona w ruch wszystkie kości poniżej w drzewie hierarchii. Kontroler IK pozwala nam na odwrócenie tej hierarchii na wyznaczonym odcinku jednak nadal nie będziemy mogli za pomocą kontrolera IK poruszyć główną kością która jest na szczycie hierarchii ilustracja 4. Zaletą tego układu jest intuicyjna kontrola, wadą natomiast jest to że nie mamy wpływu na to w jaki sposób będą odkształcały się kości objęte łańcuchem IK, co powoduje konieczność tworzenia dodatkowych kontrolerów. Kolejna wada/zalety IK to fakt że przypisujemy do kontrolera klucze lokacji co oznacza że przestawiając położenie ROOT'a reszta układu będzie starała się podążać za kontrolerem IK który ma już przypisaną lokacje. Oczywiście można to rozwiązać przypisując ROOT'a i kontroler IK do kolejnego obiektu jako Children i wtedy oba obiekty będą poruszały się w lokalnym układzie Parenta. I jeżeli będziemy zmieniali pozycje całej animacji to będziemy po prostu przesuwali tego Parenta zazwyczaj nazywanego Master_CTR

 

IK Solvers

 

IK Solvers są to przygotowane algorytmy różniące się miedzy sobą sposobem determinowania i obliczania pozycji dla łańcucha IK. Rodzaje tych algorytmów i ich działanie jest w dużej mierze uzależnione od oprogramowania na którym je używamy. Programy takie jak 3ds Max, Maya, Blender mają IK solver typu Spline czyli łańcuch IK który może być sterowany krzywą Beziera wykorzystywany jako kręgosłup, ogon i inne łańcuchy posiadające bardzo dużo kości. Pomimo ze Solver nazywa sie tak samo i główna zasada jest zachowana to w/w programach działa on inaczej. W programach 3ds Max i Blender sami musimy stworzyć krzywą i dzięki temu kontrolować ilość punktów kontrolujących, gdy program Maya sam taką krzywą generuje. W 3ds Max po przypisaniu SolverIK Spline do łańcucha kości tworzone są automatycznie kontrolery przez co riggowanie ogona można zakończyć po 2 krokach - kości i krzywa. W programie Maya i Blender musimy poświecić dużo więcej czasu - kości(M,B), krzywa(B), selekcja punktów krzywej (M,B), tworzenie kontrolerów (M,B) , tworzenie hierarchii (M,B). Jak widzimy wynik 2 do 5 dla programu 3ds Max co nie oznacza ze tamte riggi będą działały gorzej ale sprawienie by działały tak samo zajmie trochę czasu i umiejętność. No ale to już pole dla popisów który jest większy i który lepszy a to zostawiam Wam do oceny.

 

Ilustracja4 :  Powiązanie IK

 

  • Solver IK HI
  • Solver IK HD
  • Solver IK Limb
  • Solver IK Spline
  • Solver IK SC
  • Solver IK RP

 

 

IK FK

 

Jak widzimy mamy szereg opcji i łańcuchów którymi możemy połączyć skomplikowane układy kości w proste riggi. Sposób i metoda jaka wybierzemy do tworzenia riggu zależy jedynie wyłącznie od nas i czasu jaki możemy na niego poświecić. Poniższa animacja przedstawia standardowy układ reki który składa sie z z dwóch osobnych układów IK i FK. Układy te łączy się standardowo poprzez kopiowanie lokacji nadgarstka IK do reki FK przez co mamy wrażenie jednego układu i kontroler IK jednocześnie porusza ramie i przenosi dłoń. Aby zmniejszyć liczbę kontrolerów tworzymy kolejny kontroler który jednoczesne odpowiada za lokacje nadgarstek IK i rotacje ręka FK. Palce natomiast to oddzielne układy IK które są sterowne za pomocą układu kości FK w którym Skala i Rotacja odpowiada za poruszanie kontrolera IK danego palca.

 

Ilustracja5 :  Hand IK

 

  • obojczyk - nadgarstek = IK
  • ręka = FK
  • palce = IK sterowane FK

 

Print This Post