WEBESTEEM | BATTLE AREA | FORUM
art & design
webesteem magazine | numery archiwalne | nr 10 | grafika
art & design
art & design

Standardowe
ustawienia
stopni swobody powodują, że kości mogą się ruszać o dowolną ilość stopni w każdym kierunku.

3D

Animacja 3D (2)
Animowanie postaci - wstęp

 

Gdy rozpoczynałem pisanie tego cyklu artykułów – to, co macie przed sobą było materiałem na trzeci-czwarty tekst. Jednak dostałem kilka informacji, że dobrze by było powiedzieć też o trochę „wyższej szkole” animacji – czyli animacji człowieka. No cóż – ponieważ jest to długi tekst, myślę, że wystarczy materiału przynajmniej na trzy artykuły.

 

Zacznijmy od podstaw. Aby zrobić poruszającą się postać, potrzebujemy szkieletu. Stopień skomplikowania szkieletu zależy od stopnia komplikacji ruchu, który chcemy stworzyć, a przede wszystkim od liczby kończyn, które ma postać (wiadomo – bardziej namęczymy się z animacją ośmiornicy niż strusia;)

W naszym przykładzie zrobimy szkielet człowieka.

W większości pakietów 3D mamy w tej chwili predefiniowane szkielety, ale myślę, że zamiast iść na łatwiznę, lepiej usiąść i zrobić szkielet samemu – przynajmniej jeden. Pozwoli nam to lepiej zrozumieć mechanikę działania animacji postaci.

Aby stworzyć szkielet potrzebujemy kości. Tak w życiu, jak w programach 3D. Na szczęście, nie musimy robić tak skomplikowanego jak w naturze – ponad 200 kosci. Na potrzeby animacji możemy uprościć procedurę do kilku podstawowych.

Ale może najpierw zacznijmy od wytłumaczenia, czym są w ogóle kości w 3D.

Kości (bones) to modyfikatory pozwalające łączyć się w hierarchię i umożliwiające animowanie obiektów do nich “podłączonych”. Są to tzw. pomocniki, które nie są renderowane, natomiast umożliwiają nam pełną kontrolę nad obiektem.

Mówiąc o kościach, nie można nie wspomnieć o kinematyce. Wyróżniamy kinematykę prostą i odwrotną (IK). Czym się od siebie różnią? Przy zastosowaniu prostej – animowanie naszej kości powoduje, że skraca się ona i obraca nie wpływając na inne kości. Natomiast przy kinematyce odwrotnej, kość zachowuje kształt i poruszanie nią powoduje wpływanie na inne kości szkieletu w zakresach jakie im przypiszemy. Jak łatwo się zorientować, w animacji człowieka będziemy stosować kinematykę odwrotną, bo przecież zgięcie ręki w łokciu nie powoduje skrócenia się przedramienia.

No dobrze, wróćmy do naszego szkieletu postaci. Po przygotowaniu siatki humanoida – zaczynamy tworzyć szkielet. W naszym przykładzie odpuściłem sobie robienie siatki modelu, natomiast, dla utrudnienia sprawy, szkielet tworzę z boksów, które będą kośćmi. W przypadku używania standardowych kości, postępuje się w ten sam sposób jak poniżej – z tym, że hierarchia jest budowana praktycznie automatycznie.

Z czego będzie składał się nasz szkielet?

Z podstawowych części, jak goleń, udo, biodra, kręgosłup itd.

Teraz trochę wskazówek dla standardowej budowy postaci:

  • dobrze, gdy stopa składa się z dwóch kości – umożliwia to realistyczne zginanie w trakcie chodzenia; oczywiście, jeśli zamierzamy stworzyć postać bez butów – dla realizacji całości przydadzą się jeszcze palce u stopy
  • jak pewnie zauważyliście kręgosłup przypomina literę ”S” – aż tak skomplikowanego szkieletu w naszym przykładzie robić nie będziemy; natomiast dobrze, by składał się przynajmniej z trzech kości – zapewni to elastyczność postaci
  • barki warto stworzyć z dwóch niezależnych kości – spowoduje to, że ruch będzie bardziej realistyczny
  • pamiętać należy o pilnowaniu i ustawianiu środków obrotów dla kości “od strony” kości “matki”
  • noga to ręka, to nie żart; jeśli się przyjrzycie działaniu nogi i ręki – zauważycie, że w gruncie rzeczy działają identycznie, tylko w odwrotną stronę; aby ułatwić sobie życie, możemy skopiować kości nogi i wkleić je w miejsce ręki

Kiedy już stworzyliśmy nasz podstawowy szkielet, widzimy, że zupełnie nic nie działa! Dlaczego? Ponieważ nie ma ustalonej hierarchii.

Aby postać się nam dobrze animowała – musimy ustalić zależności między kośćmi.
Podstawą jest ustalenie “matki” – czyli najważniejszej kości, do której będą podłączone inne, i której animacja będzie wpływałą na cały szkielet. Z reguły “matka” jest w okolicach środka ciężkości postaci. W przypadku człowieka (jak chyba wszystkich humanoidów) “matką” będą biodra .

Aby zobaczyć, co do czego powinno być podłączone, najlepiej obserwować własne ciało. Na przykład, nie da się podnieść stopy bez zgięcia kolana; zatem połączenie będzie wyglądać tak: palce -> stopa -> goleń -> udo itd. Kompletną hierarchię możecie zobaczyć na rysunku poniżej.

Zbudowaliśmy szkielet, zrobiliśmy hierarchię i chcielibyśmy zacząć animować. Ale znów mały problem – nic nie działa jak powinno! Bo standardowe ustawienia stopni swobody powodują, że kości mogą się ruszać o dowolną ilość stopni w każdym kierunku – a tak w rzeczywistości nie jest.

Można to ustalać metodą prób i błędów, niemniej ja zawsze korzystam z określonych tabel, i tak dla człowieka, zakładając że oś ”Y” każdego złącza przebiega wzdłóż kości wygląda to tak:

KośćXYZ
ZakresZakresZakres
Biodranielimitowanenielimitowanenielimitowane
Lewa goleńOd -90 do 20nieaktywneOd 0 do 15
Lewe udoOd 0 do 125nieaktywnenieaktywne
Lewa stopaOd -100 do -60nieaktywnenieaktywne
Lewe palceOd -40 do 0nieaktywnenieaktywne
Prawa goleńOd -90 do 20nieaktywneOd -15 do 0
Prawe udoOd 0 do 125nieaktywnenieaktywne
Prawa stopaOd -100 do -60nieaktywnenieaktywne
Prawe palceOd -40 do 0nieaktywnenieaktywne
Lewy barknieaktywneOd -12 do 6Od -20 do 10
Lewe ramięOd -140 do 45nieaktywneOd 0 do 180
Lewe przedramięOd -135 do 0nieaktywnenieaktywne
Prawy barknieaktywneOd -6 do 12Od -20 do 10
Prawe ramięOd -140 do 45nieaktywneOd -180 do 0
Prawe przedramięOd -135 do 0nieaktywnenieaktywne
Kręgosłup 1Od -5 do 10nieaktywnenieaktywne
Kręgosłup 2Od -5 do 10nieaktywnenieaktywne
Kręgosłup 3Od -5 do 10nieaktywnenieaktywne
Szyjanielimitowanenielimitowanenielimitowane

Kiedy ustalimy te ograniczenia, jest już dużo lepiej. Jednak cały czas widzimy nieprawidłowości. Gdy np. ruszymy przedramieniem – kinematyka jest liczona do samych bioder, przez co ruszają się wszystkie kości po kolei. Aby to zlikwidować, musimy zastosować terminatory, które ograniczą działanie kinematyki tylko do obszarów, które nas interesują. Trzeba pamiętać, żeby terminatory ustawiać zawsze powyżej kości, która ma kończyć działanie kinematyki. Np. terminator dla rak będzie znajdował się w barku, a terminator dla nóg – w biodrze.

Aby dopiąć już końca w szkielecie – przyda się jeszcze ustawić obiekty pomocnicze (tzw. „dummy” lub „nule”). Będą one przydatne przy stosowaniu modyfikatorów fizyki dla zniekształceń siatki, jak również pomogą nam ustawić szkielet. Poza tym działają jako specyficzne terminatory i pozwalają ustawiać konkretne kości bez wpływu na kinematykę całego szkieletu. Obiekty takie powinno się ustawiać na końcach łańcuchów, jak i w miejscach połączeń kości. Umożliwi to tworzenie bardziej skomplikowanych i bardziej realistycznych ruchów.


To tyle, jeśli chodzi o prosty szkielet postaci. W następnej części opiszę, jak zanimować tak przygotowany szkielet – by ruch był płynny i w miarę realistyczny. A na razie, zapraszam do dyskusji na forum.

Paweł Szynkiewicz

art & design
webesteem magazine | nr 10 webesteem magazine is a part of webesteem.pl  |  copyright © 2001-2004 webesteem.pl  
art & design