Professional Documents
Culture Documents
POSTACI
POSTACI
MODELOWANIE POSTACI.
1
Rys 1a
Rys 1b
2
Rys 1c
Rys 1d
3
Rys 1 a, b, c, d, e. Wybrane sposoby modelowania siatek postaci
Istnieje jednak mimo tej różnorodności pewien zestaw zasad, których należy
przy modelowaniu przestrzegać. Musimy pamiętać o tym, że postaci z reguły (prawie
zawsze) tworzone w celu ich „ożywienia”. Właśnie na tym etapie pracy z naszymi
modelami okazuje się często, ze postać, mimo że doskonale się prezentuje, nie
nadaje się kompletnie do użycia. Po przypisaniu jej do szkieletu siatka nienaturalnie
się deformuje, co zmusza nas do jej poprawienia. Czym należy się wiec kierować?
Przede wszystkim siatka musi posiadać odpowiednią gęstość. Ograniczenie
ilości geometrii, która składa się na model, nie może spowodować błędów. W
miejscach zgięć postaci (stawy, przeguby) w miejscach, które będą miały symulować
na przykład rozciąganie materiału, należy umieścić odpowiednią ilość krawędzi. Po
ożywieniu postaci da to możliwość wykonywania nawet mocnych zgięć kończyn,
palców, wykonywania obrotów i innych. Jeżeli postać ma na przykład być ubrana w
sukienkę, habit, czy inne tego rodzaju ubranie, należy wziąć pod uwagę to, że w
trakcie ruchu taka powierzchnia „udająca” ubranie musi się rozciągać. Jeżeli rozciąga
się powierzchnia, to rozciągać będzie się również nałożona na nią tektura.
Przesadne ograniczenie geometrii w takich miejscach spowoduje więc obniżenie
wartości wizualnej modelu w ruchu.
4
Rys 2. Przykład poprawnie przygotowanej siatki postaci.
SZKIELET.
5
Rys 3a
6
fragmenty animacji szkieletu możemy zapisać, wczytać dla danego Bipeda oraz
składać je w dłuższe klipy.
7
- należy umieścić środek układu współrzędnych postaci (Pivot) u podstawy
siatki, a następnie wyrównać go do punktu 0 (0,0,0). Unikniemy w ten sposób
pomyłek, spowodowanych błędnym rozmieszczeniem fragmentów szkieletu w
przestrzeni, da to również możliwość odbicia kości względem osi głównego
układu współrzędnych sceny.
- kolejnym ułatwieniem jest włączenie dla siatki postaci opcji przezroczystości
(See-Thru) w menu właściwości obiektu (Properities), dzięki czemu będziemy
mogli dokładnie rozmieszczać poszczególne kości i łączenia,
- siatkę należy „zamrozić” (opcja Freeze Selected w menu bocznym, zakładka
Display), co zapobiegnie przypadkowym przesunięciom i deformacjom.
8
Rys. 4.1 Kości kręgosłupa
9
Kościom nadałem następujące nazwy:
Łańcuch zielony – KrKoscOgonowa, KrKoscOgonowaKontrol,
Łańcuch czerwony – KrKoscPlecyDol, KrKoscPlecySrodek, KrKoscPlecyGora,
KrKoscPlecyRamiona, KrKoscRamionaKontrol, KrKoscSzyja, KrKoscGlowa,
KrKoscGlowaKontrol.
Kości są elementami sztywnymi, nie podlegają w trakcie ruchu deformacjom,
dlatego należy użyć opcji zablokuj długość (Freeze Lenght) w zakładce właściwości
obiektu (Object Properties), narzędzia Bone Tool. Uchroni nas to od zmiany długości
kości w trakcie animacji.
Dla przywrócenia odpowiednich proporcji i skali kości, należy po jej edycji użyć
narzędzia resetowania (Reset Scale, Reset Scratch), dostępnego w tej samej
zakładce.
Metoda animowania postaci metodą kości wiąże się z nadawaniem każdemu z
fragmentów szkieletu dużej liczby klatek kluczowych, oraz precyzyjnym ustawianiem
postępujących po sobie faz ruchu. Biorąc pod uwagę ten czynnik, oraz to, że kości
szkieletu kręgosłupa znajdują się wewnątrz siatki postaci, postanowiłem stworzyć
obiekty pomocnicze w animacji, które będą znajdować się przed postacią, przez co
będzie łatwo je wybrać i operować ich położeniem i orientacją, a będzie to miało
bezpośredni wpływ na ruch odpowiednich kości.
Pierwszy kontroler (numer 1, nazwany KontrolCałaPostac, Rys. 4.2) umożliwia
operowanie całą postacią. Miał on dawać możliwość poruszenia całym szkieletem, a
więc w rezultacie i siatką. Rysunek 4.2 przedstawia strukturę stworzonych obiektów
pomocniczych.
10
Rys. 4.2. Obiekty pomocnicze
11
kości, obiektów kontrolnych ale również nadaniu poszczególnym łańcuchom
odpowiednich zależności. Należało również zadbać, by wybrane kości we właściwy
sposób współpracowały z przypisanymi obiektami kontrolnymi.
Na tym etapie pracy przydatnym okazał się mechanizm wymuszania, który
daje nam do dyspozycji środowisko 3d Max. Wymuszanie ma podobny charakter jak
łączenie (Select and Link) obiektów, opisane powyżej. Rodzic, w zależności od
wybranego rodzaju wymuszania, zmusza dziecko do naśladowania jego orientacji
(Orientation Constraint), położenia (Position Constraint), ścieżki (Path Constraint),
wymuszanie śledzenia (Look At Constraint) i innych. Istnieje oczywiście możliwość
przypisania jednemu obiektowi – dziecku kilku obiektów wymuszających, a stopień, w
jaki wpływają one na dziecko możemy regulować za pomocą odpowiednich wag
(tabelka Target/Weight).
Dzięki użyciu wymuszania śledzenia, mogłem z łatwością nadać kontrolerom
możliwość sterowania orientacją kości.
Mojemu szkieletowi nadałem następujące zależności:
- Kontroler bioder (2), steruje orientacją kości biodrowej (KrKoscOgonowa),
- Kontroler kręgosłupa (3), steruje orientacją KrKoscPlecyDol, a więc wpływa na
orientację całego kręgosłupa, oraz częściowo kością KrKoscPlecySrodek
(waga 66,5), KrKoscPlecyGora (waga 33,5)
- Kontroler ramion (4), wpływa na KrKoscPlecySrodek (waga 33,5),
KrKoscPlecyGora (waga 66,5), oraz całkowicie KrKoscRamiona,
- Kontroler głowy (5), steruje orientacją KrKoscGlowa (niebieska), oraz
częściowo KrKoscSzyja (waga 50),
- Dodatkowo kość KrKoscRamiona (czerwona) w pięćdziesięciu procentach
(waga 50), wymusza orientację kości KrKoscSzyja.
Połączenie kości i obiektów kontrolnych w opisany wyżej sposób, dało mi w
późniejszym etapie możliwość dość precyzyjnego sterowania orientacją
poszczególnych części kręgosłupa oraz w zadowalający sposób pozwoliło na
kontrolowanie siatki postaci w obszarze od bioder do głowy.
Aby zapobiec „łamaniu” się kręgosłupa na odcinku łączącym łańcuch
kręgosłupa z biodrowym, musiałem użyć dodatkowego obiektu pomocniczego (Point
Helper). Został on umieszczony u zbiegu wyżej wymienionych łańcuchów kości, oraz
połączony (Select and Link), do kontrolera głównego postaci (1). Jego użycie jako
dodatkowego obiektu wymuszającego orientację dolnej części kręgowej (waga 65),
rozwiązało problem zbyt ostrego zgięcia kręgosłupa.
Konsekwencją zbudowania kręgosłupa mojej postaci z trzech łańcuchów, była
konieczność nadania określenia między nimi tak, aby na przykład obrót kości
biodrowej wokół jej osi głównej ( oś x) wpływał również na obrót kości, znajdujących
się powyżej, co jest naturalne w kręgosłupie ludzkim.
12
Jak dowiedziałem się z wyszukanych kursów [28] ,częstym błędem
popełnianym przez budujących struktury kości ludzkich, jest rozpoczynanie łańcucha
ręki od kości ramienia. Jak się okazało, rozwiązaniem prawidłowym z punktu
widzenia zarówno anatomii, jak i późniejszych procesów przypisania skóry i animacji,
jest rozpoczęcie tegoż łańcucha od kości obojczyka. Dzięki temu łańcuch ręki nie
pozostaje „zawieszony” w przestrzeni, a animacja postaci z tak zbudowanym
łańcuchem nabiera dodatkowych walorów naturalności. Należy bowiem zauważyć, iż
niewiele ruchów, wykonywanych przez ramię ludzkie, nie wiąże się z choćby
minimalnym przesunięciem lub obrotem kości obojczyka. Stworzenie prawidłowej
struktury ułatwiło odwzorowanie tej zależności w trakcie animacji.
Pierwszy łańcuch, który wygenerowałem, składał się jedynie z trzech kości
(Rys. 4.3) – obojczyka, ramienia, przedramienia, oraz zakończenia łańcucha,
umiejscowionego na wysokości nadgarstka. Ważne jest, aby kości te w jak
największym stopniu pokrywały się z poszczególnymi fragmentami siatki, imitującej
fragmenty ciała ludzkiego, natomiast łączenia kości wypadały w miejscach stawów.
Jest to ważne dla poprawności nakładania skóry i późniejszych deformacji siatki.
13
Rys. 4.4. Uzupełniony łańcuch kości ręki.
Dla lepszej organizacji pracy, kolejnym kościom zostały nadane odpowiednie nazwy:
1. PObojczyk
2. PRamie
3. PBiceps
4. PPrzedramie1
5. PPrzedramie2
6. PPrzedramie3
7. PDłoń
Zakończeniom kości nadałem nazwy: PRamieKontrol, PPrzedramieKontrol,
PDłońKontrolGórny, oraz PDłońKontrol. Tak stworzone kości zostały uzupełnione
obiektami kontrolnymi:
- A. KontrolRamieP - steruje obrotem przedramienia i dłoni,
- B. KontrolDłońP - steruje ruchem łańcucha od obojczyka, aż po samą dłoń.
14
- KontrolDłońP z KontrolCalaPostac – chciałem, aby ruch kontrolerem całej
postaci oraz obracanie nim, wpływało również na ruch dłoni,
- PRamie z PBiceps – ludzki szkielet nie dale możliwości obracania samym
ramieniem wokół głównej osi, ale obrót bicepsa wpływa na delikatny obrót
ramienia,
- PPrzedramie1, PPrzedramie2 z PPrzedramie3 – prawidłowa struktura, dla
obrotu całego przedramienia,
- PDłoń z PPrzedramie1Kontrol – zapewnia jednoczesny obrót przedramienia i
dłoni.
Używając opisanych powyżej mechanizmów śledzenia, wymusiłem następujące
zależności:
- PDłońKontrolGórny obserwuje orientację KontrolDłońP (narzędzie
OrientationConstraint), dzięki czemu obrót KontrolDłońP wymusza obrót całej
dłoni,
- PPrzedramie3 „obserwuje” PPrzedramie1 (LookAtConstraint), jako górny
punkt węzłowy (Upnode), wybrałem dla PPrzedramie3 Dłoń. Ten zabieg
sprawił, że dolna kość przedramienia porusza się w zgodnej osi z
PPprzedramie1, pozostaje w hierarchii podczas obrotów, ale obraca się
również wokół głównej osi wraz z obrotem kontrolera dłoni.
- PPrzedramie2 obserwuje orientację (OrientationConstraint) PPrzedramie1 i
PPrzedramie3, dzięki czemu wraz z obrotem dłoni porusza się całe
przedramię, ale w nierównym stopniu. Stopniowo zmierzając ku górze, kości
obracają się o mniejszy kąt, w stosunku do rotacji dłoni. Jest to zgodne z
punktu widzenia naśladowania naturalnego zachowania ręki ludzkiej.
15
Rys. 4.5. Okienko wprowadzania kodu skryptów, środowiska 3ds MAX
16
TWORZENIE SZKIELETU DŁONI
Szkielet nogi i stopy w dużej mierze przypomina ten zbudowany dla ręki.
Biorąc pod uwagę cel jaki stawiałem mojemu bohaterowi, zbędnym okazało się
budowanie osobnych łańcuchów kości dla poszczególnych palców stopy, co jedynie
mogło w moim mniemaniu utrudnić późniejszą animację. Ograniczyłem się więc do
jednej kości, odpowiadającej wszystkim palcom stopy (Rys. 4.7).
17
Rys. 4.7. Łańcuch kości nogi
Ponieważ cała noga wraz ze stopą składała się z jednego łańcucha kości,
nie trzeba było używać wymuszania do kontroli obrotów i położenia. Wbudowany
mechanizm zarządzania ruchem kości środowiska 3ds MAX wypełnił to zadanie.
Pozostało jedynie nazwać kolejne kości łańcucha i przyłączyć odpowiednie
kontrolery.
Nazewnictwo kości, podążając od górnej części łańcucha:
- PUdo,
- PŁydka,
- PStopaKostka,
- PStopaŚrodstopie,
- PStopaPalce,
- PStopaKontrol.
Nazewnictwo i funkcjonalność obiektów kontrolnych:
- KontrolNogaP – rodzic kości PUdo, a więc wpływa na jej położenie i
orientację, a w konsekwencji również na obrót i pozycję całej nogi,
- KontrolKolanoP – wymusza obrót kości PŁydka i całego dalszego łańcucha w
kierunku stopy,
- KontrolKostkaP – kontroluje obrót PStopaKostka i całej stopy, połowicznie
wpływa na obrót PStopaPalce, PStopaKontrol. Jest to poprawne z punktu
widzenia anatomii takiego ruchu, jak na przykład stawanie na palcach stopy.
- KontrolPalceP – wymusza orientację dwóch ostatnich kości łańcucha nogi
PStopaPalce, PStopaKontrol.
UZUPEŁNIENIE SZKIELTU
18
Rys. 4.8. Kompletny szkielet postaci
19
Rys. 4.9. Finalny szkielet postaci
20
obserwacji obiektu punktowego wymuszającego również rozciągnięcie
(HelperKlataP), związana z punktem węzłowym (KoscPlecySrodek)
ustalającym przypięcie końca dodanej kości.
UdoNapinaczP, UdoNapinaczPKontrol - napinają siatkę w okolicy pachwiny, górnej
części uda. Również wykorzystuje obiekt pomocniczy (HelperUdoNapinaczP), punkt
przytrzymujący (KrKoscOgonowa), oraz mechanizmy wymuszania.
21
nałożone zostały pewne odgórne ograniczenia uniemożliwiające wykonanie
nienaturalnych ruchów, a kolejne pozy nadajemy zgodnie z hierarchią dziecko -
rodzic. Przykładowo – położenie i orientacja łańcucha ręki obliczane jest na
podstawie przesunięcia i obrotu dłoni. Daje to możliwość bardzo szybkiego
animowania pewnych sekwencji ruchu jak na przykład chód, czy rodzaje ataków
ręcznych. Użycie opcji Snap zapobiega przesuwaniu obiektów między sobą, na
przykład przesuwaniu nogi po powierzchni podłogi.
Rys. 4.11. Przykład siatki głowy postaci wraz z widocznym fragmentem systemu kości i
obiektami kontrolnymi
OŻYWIANIE POSTACI
22
Do przypisania siatce szkieletu będziemy używać dwóch modyfikatorów:
23
W trybie wierzchołków modyfikatora mamy do dyspozycji następujące opcje:
- zakładka Vertex - Link Assingment – określa na jakim poziomie
selekcji/przyporządkowania wierzchołków będziemy pracować. Kolor
czerwony oznacza „miękkie” przypisanie, kolor zielony sztywne, kolor niebieski
przypisanie z wagą zerową.
- Blending Beetween Links – określa maxymalną ilość kości, do których może
zostać przypięty pojedynczy wierzchołek. Preferowana wartość to N-Links,
określający nieskończoną liczbę możliwych przypisań, jednak czasami, kiedy
zależy nam na ograniczeniu tej liczby, możemy zastosować inną wartość.
- Vertex Operations – zakładka zawiera operacje, jakie możemy wykonywać na
wierzchołkach wybranej siatki. Do dyspozycji mamy selekcję (Select) na
poziomie określonym w zakładce Vertex – Link Assingment, lub na podstawie
przypisania (Link Assingment). Zaznaczenie opcji Assign to Link pozwala na
wybór kości, do której przyłączymy zaznaczone wcześniej wierzchołki,
Remowe from Link – oznacza odpięcie selekcji od wybranej kości.
Wykorzystanie tych opcji pozwala nadać poszczególnym wierzchołkom
odpowiednie wagi. Jeśli jednak okaże się, że siatka nie jest jeszcze
odpowiednio przypięta, możemy wykonać korekty używając bardziej
zaawansowanych opcji, jak blokowanie przypisania dla grupy wybranych
wierzchołków (Lock Assignment), i nadać im wagi ręcznie, używając tabeli
wag dostępnej pod przyciskiem Type - in – Weights. Jest to mechanizm
szczególnie przydatny przy wykonywaniu miękkich zagięć siatki, na przykład
zgięć rękawów lub innych. Aby ułatwić sobie pracę, cześć wierzchołków
możemy zaznaczyć i ukryć (Hide).
Jak wcześniej wspomniałem, każdej kości, używanej przez nas do ożywienia
postaci, również tym, składającym się na Biped, odpowiada jej koperta. Koperta
obejmuje swoim zasięgiem zespół wierzchołków, które z nią sąsiadują,
Wierzchołkom tym nadawane są automatyczne wagi, a zasada ich działania jest
identyczna, jak w przypadku nadawania ręcznego.
Zastosowanie Physiqua pozwala wykonać korektę tego przypisania, za pomocą
dostępnych narzędzi.
24
Rys 6. Panel modyfikatora Physique dla trybu kopert
25
- Zakładka Display pozwala na personalizację wizualną sposobu wyświetlania
kopert i ich parametrów przez program.
Pozostałe poziomy zagnieżdżenia i ich funkcjonalność pozostawiam Państwu do
poznania we własnym zakresie.
26
Rys. 7. Panel modyfikatora Skin.
27
liście. Oczywiście możliwe jest zaznaczenie wszystkich kości szkieletu i kliknięcie
opcji Add, jednak nie jest to rozwiązanie w pełni prawidłowe. Szkielet zawiera
bowiem znaczną ilość kości, których nie będziemy używać jako modyfikujących
siatkę. Są to głównie zakończenia kości. Tak więc lepiej poświęcić na dodawanie
kości nieco więcej czasu i uwagi, aby ustrzec się potencjalnych błędów i poprawek.
Często popełnianym błędem jest pozostawienie na tym etapie tzw. Bone Fins. To
pomocnicze elementy kości, pozwalające zarysować obszar ich oddziaływania.
Jednak na tym etapie tworzenia postaci powodują powstanie dodatkowych kopert,
okalających każdy z takich obiektów pomocniczych, co utrudnia potem pracę.
Dodanie kości do listy powoduje, że dla każdej z nich tworzona jest koperta.
Kolory od czerwonego, przez żółty, po niebieski, oznaczają kolejno malejące wagi
wpływu. Wierzchołek oznaczony na czerwono będzie śledził dokładnie położenie i
ruch danej kości, natomiast niebieski jedynie częściowo. Automatycznie generowane
koperty nie dają jednak zadowalającego rezultatu już przy pierwszej próbie ruchu
którąkolwiek częścią szkieletu. Okazuje się, że część siatki reaguje zbyt „nerwowo”,
inna część dla odmiany pozostaje nienaruszona, co skutkuje całkowitą deformacją
siatki. Należy więc manualnie ustalić odpowiednie obszary i wagi.
Rozpoczynamy od modyfikacji obszarów działania poszczególnych kopert.
Dla zachowania pełnej symetrii modyfikujemy jedynie koperty po wybranej stronie
postaci, następnie odbijamy je lustrzanie dzięki wbudowanym narzędziom. Takie
postępowanie pozwala również zaoszczędzić sporo czasu.
Chwytając za odpowiednie punkty kopert dopasowujemy ich rozmiar i kształt
tak, aby modyfikowały żądany fragment siatki (Rys. 8). Dążymy do jak
najdokładniejszego pokrycia siatki postaci kolejnymi kopertami. Oczywiście pola
oddziaływania kopert mogą się na siebie nakładać częściowo, co odpowiada sytuacji,
gdy ruch dwóch lub więcej kości ma wpływ na deformację siatki w pewnym obszarze.
28
przypadkach użyć narzędzia Include/Exclude Selected Verts, dostępnego w
obszarze Parametrs, Weight Properities, Modyfikatora Skin. Zaznaczając kość i
następnie odpowiednie wierzchołki, możemy włączyć lub wyłączyć je z działania
danej koperty.
Na tym etapie porządkowania wag należy wykonać próbę polegającą na
zaanimowaniu kilku przykładowych ruchów, jakie wykonywać będzie miała nasza
postać. Jest to o tyle ważne, że pozwala dostrzec pozostałe błędy rozmieszczenia
wag wierzchołków i wykonanie ostatnich korekt. Podmalowywanie wag (Paint
Weights), to metoda wizualnie prezentująca proces modyfikacji. Po wybraniu
odpowiedniego promienia (ile wierzchołków będzie obejmować działanie narzędzia)
oraz siły (o jaką wartość zmieni się dana waga wierzchołka), tam, gdzie dostrzegamy
błędy możemy wykonać szybkie korekty, które natychmiast widoczne są na ekranie.
Do bardziej zaawansowanych metod należy ustalanie wag punktów ręcznie, przy
użyciu tablicy wierzchołków (Weight Table). Możemy tutaj, po odszukaniu
odpowiedniego wierzchołka nadać mu liczbową wartość, określającą stopień
przyporządkowania. Jest to jednak rozwiązanie dość kłopotliwe i pracochłonne.
Trzeba zwrócić uwagę, że wagi modyfikowane w ten sposób nie poddają się odbiciu,
a więc należy na tym etapie działać już na obu stronach postaci.
Źródła:
www.3dtotal.com - wybrane tutoriale
„Wybrane zagadnienia animacji postaci” praca magisterska, Marcin Jarzyna, 2006
„Tworzenie mimiki twarzy”, praca magisterska, Rafał Redel, 2006
3ds MAX 8 User Reference,
29