W naszym przykładzie anteny lub czułki postaci obcego powinny poruszać się dynamicznie i sprężysto wraz z każdym ruchem głowy. Oczywiście nasz przykład można również zastosować do kosmyków włosów, ogonów dinozaurów i wielu innych rzeczy.

W pliku roboczym "PSD_C4D_R12_IK_Dyn_Start.c4d" znajdziecie zaprojektowaną i pokrytą teksturą głowę obcego do współpracy.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna

Budowa rusztowania stawowego

Nasza głowa obcego składa się z poligonalnej geometrii głowy oraz dwóch obiektów kulistych na oczy. W dalszej części będziemy łączyć wszystkie obiekty hierarchicznie lub poprzez wagi z jointami, aby kompletna głowa mogła być animowana wraz z czułkami.

Zaczniemy od budowy rusztowania stawowego od pierwszego obiektu Joint dla głowy. Znajdziecie go w menu Character.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna.

Ponieważ głowa obcego znajduje się dokładnie w środku układu współrzędnych, staw głowy może pozostać na pozycji zerowej.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna

Nowo utworzony obiekt Joint jest od razu zaznaczony, a następnie aktywujcie narzędzie Joint Tool z menu Character. W oknie ustawień narzędzia Joint Tool dezaktywujemy tworzenie nadrzędnego Root Null Object. Sami stworzymy go później, aby lepiej zrozumieć, jaką rolę w ogóle pełni w rusztowaniu stawowym.

Aby móc pracować symetrycznie, rozwińcie sekcję Symetria i użyjcie opcji Rysuj na płaszczyźnie Świat-YZ. Na tej płaszczyźnie, odpowiednio w tej widoku, będziemy rysować jointy.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna.

Gdy narzędzie Joint Tool jest aktywne i przytrzymacie klawisz Ctrl podczas klikania w widok, jointy podległe głowicznemu jointowi zostaną utworzone automatycznie i symetrycznie.

Wybierzemy jeden z dwóch czułków i umieśćmy pierwszy podrzędny joint bezpośrednio przy nasadzie czułka na głowie. Joint dla drugiego czułka zostanie automatycznie umieszczony dzięki aktywowanej Symetrii.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna

Następnie, poprzez kliknięcie z przytrzymanym klawiszem Ctrl, stworzymy łańcuch jointów na pozycjach pokazanych na obrazie. Gdzie jest bardziej szczegółowy, jointy powinny być bliżej siebie. Nie oszczędzajmy na jointach, ponieważ tylko na tych punktach stawowych może w ogóle dojść do deformacji lub zagięcia geometrii.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna.

Po utworzeniu wszystkich jointów, w menedżerze obiektów znajdziemy hierarchię jointów przedstawioną na obrazie. Obiekt stawu głowy zawiera dwie łańcuchy jointów jako podrzędne obiekty - jeden dla każdego czułka.

Aby dostosować pozycję jointów także parami w widoku bocznym, wybierzmy parę jointów z menedżera obiektów i przesuńmy jointy wzdłuż swojej osi z w geometrii.

Nowa funkcja w wersji 12 - Dynamiczna kinematyka odwrotna.

W ten sposób konstrukcja stawowa do animacji czułek lub anten jest już zakończona. Niestety, nie ma ona jeszcze związku z naszą głową obcego, który pozwoliłby nam animować głowę.

Nowa funkcja w wersji 12 - Dynamiczna kinematyka odwrotna

Dzieje się to dopiero po połączeniu hierarchii jointów z geometrią. Aby to zrobić, zaznaczmy przez Menedżera Obiektów wszystkie obiekty Joint oraz obiekt Polygon geometrii obcego.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna

Połączenie hierarchii jointów z siatką poligonową odbywa się przez polecenie Wiązanie w menu Character>Polecenia.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna

Czym jest polecenie Wiązanie? Teraz obiekt Polygon geometrii obcego posiada teraz tag wagowy, w którego oknie ustawień znajdują się wszystkie obiekty Joint, które mogą wpływać na geometrię głowy obcego. Ta automatyczna wagowanie odnosi się do położenia jointów w stosunku do geometrii i stanowi dobry punkt wyjścia.

Nowa funkcjonalność w wersji 12 - Dynamiczna kinematyka odwrotna.

Ważenie jointów

Niemal idealne jest to ważenie, jednak zazwyczaj wymaga trochę poprawek. Aby poznać wagi sąsiadujące, najpierw dezaktywujmy funkcję siatki HyperNURBS przez Menedżera Obiektów. Narzędzie wagowe pokazuje wagi geometrii na niezagladzonej siatce poligonów. Dla ogólnego przeglądu, zacznijmy od zaznaczenia wszystkich obiektów Joint z geometrią w Menedżerze Obiektów.

Nowości w wersji 12 - Dynamiczna kinematyka odwrotna

Narzędzie Wagi znajdujemy w menu Character. Po jego aktywacji geometria głowy kosmity już nabiera koloru. Każde Joint posiada własny kolor, który wskazuje jego wpływ na geometrię.

Nowy w wersji 12 - dynamiczna kinematyka odwrotna.

Aby móc ocenić poszczególne Joints i ich wpływ na geometrię, wystarczy wybrać odpowiedni Joint w Managerze obiektów. Wszystkie obszary geometrii, które nie zostały objęte przez dany Joint, pozostają czarne.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna.

Na głównym Joincie zauważamy, że czubek nosa nie jest w 100% w kolorze Jointa. Dzięki narzędziu Wagi możemy zapobiec ewentualnym błędom deformacji, zwiększając wagę dla danego Jointa za pomocą pędzla Wagi.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna

Również na stykach z czułkami i antenami wpływ na geometrię głowy jest zbyt duży. Aby zmniejszyć przyłożone wagi, używamy narzędzia Wagi, przytrzymując klawisz Ctrl.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna.

Aby zakończyć pracę z wagami, zaleca się ponownie wybrać wszystkie Joints za pomocą Managera obiektów, ustawić kolor wag na Jednolity, i sprawdzić, czy cała geometria ma przypisaną wagę. Jak widać na obrazku, cała geometria kosmity jest biała, co oznacza, że każdy obszar geometrii jest obciążony wagą.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna.

Kuliste obiekty oczu nie zostały objęte wagami. Aby obiekty te również poruszały się podczas obrotu głowy, wystarczy przypisać je do głównego Jointa w Managerze obiektów. Teraz, gdy obraca się główny Joint, obiekty oczu podążają za kierunkiem głowy.

Nowość w wersji 12 - dynamiczna kinematyka odwrotna.

Nadszedł czas na praktyczną weryfikację struktury Jointów i przypisanych wag. Wybieramy Joint głowy i obracamy go za pomocą narzędzia Obracanie, wzdłuż osi y. Cała geometria kosmity powinna płynnie reagować na ruchy Jointa głowy bez problemów.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna

Implementacja kinematyki odwrotnej z dynamiką

Po upragnionym działaniu Jointów na poszczególne obszary głowy kosmity, możemy zająć się animacją czułków i anten za pomocą kinematyki odwrotnej (IK). Aby to zrobić, musimy zdefiniować dwa łańcuchy Jointów jako łańcuchy IK.

Wybieramy te dwa łańcuchy Jointów w Managerze obiektów Pamiętaj, żeby pominąć Joint głowy!

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna.

Tutaj również CINEMA 4D oferuje specjalną komendę o nazwie Generuj łańcuch IK, która automatycznie konwertuje wybrane łańcuchy Jointów na łańcuchy IK. Znajdujemy ją w menu Character>Komendy.

Nowość w wydaniu 12 - Dynamiczna kinematyka odwrotna

Stosujemy komendę Generuj łańcuch IK i sprawdzamy, co się zmieniło w naszym łańcuchu Jointów. Dwa Jointy na górze głowy otrzymały znacznik IK. W tym znaczniku automatycznie zdefiniowano początek i koniec łańcucha IK.

Znajdziemy również dwa nowe Obiekty Null jako Obiekty docelowe w Managerze obiektów. Te dwa cele są nazwane analogicznie do końców łańcucha Jointów i pozwalają nam animować cały łańcuch IK za pomocą prostych celów sterujących.

Mimo że zazwyczaj chcielibyśmy regulować ruchy czułków i anten za pomocą właściwości dynamicznych, warto zatrzymać te dwa obiekty celów, ponieważ zapewnią one automatycznie korygowanie kierunku i ustawienie czułków i anten po każdym ruchu i deformacji.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna.

Przejście do okna ustawień tagów IK ujawnia, jak są zdefiniowane końce lub cele łańcucha IK. Parametry w sekcji Tag można zostawić; teraz bardziej interesują nas ustawienia dynamiki.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna.

Aby to zrobić, przechodzimy do zakładki Dynamika i aktywujemy opcję Dynamika. Teraz czułki i anteny mogą reagować na wpływy takie jak grawitacja lub ruch.

Aby czułki nie zwisały pasywnie, ale wyglądały raczej elastycznie i sprężysto, zmniejszamy siłę dynamiki do około 40-45% i drastycznie zwiększamy tlumienie do około 70%. Aby czułki bardziej starannie przywracały swoje pierwotne położenie, zwiększamy parametr Utrzymywanie kąta do około 40-45%.

Zachęcam do eksperymentowania z parametrami, aby szybko zrozumieć, jak poszczególne ustawienia wpływają na cały łańcuch kinematyki odwrotnej - to oczywiście też sprawia wiele zabawy.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna.

Ponieważ oba wydzielone obiekty docelowe nie będą w stanie zaobserwować dynamicznej animacji czułków lub anten, musimy nauczyć IK, że te cele powinny być ruszane wraz z ruchem. W przeciwnym razie czułki bardzo łatwo by się zaplątały przy szybkim obracaniu.

Zakładka Dalsze opcje w tagu IK oferuje nam bardzo elegancką funkcję. Po prostu aktywujemy tutaj opcję Ruszanie z celem, a oba obiekty docelowe automatycznie ruszą się przy każdym ruchu.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna.

Teraz również funkcjonalność kinematyki odwrotnej czułków lub anten jest już zabezpieczona. Uporządkujmy trochę jeszcze w Menadżerze obiektów, zmieniając odpowiednio nazwy obiektów docelowych oraz łańcuchów stawów.

Obecnie do animacji głowy obcego służy staw głowy. Niestety ten staw jest dość nieporęczny, ponieważ z powodu swoich podrzędnych łańcuchów stawów obraca się w przestrzeni.

Potrzebujemy jednak "czystego" punktu wyjściowego pod kątami, tak aby obrót i ruch głowy obcego odbywał się bez niepożądanych obraczeń wstecznych.

Oto wchodzi w grę Root-Null-Objekt, na który już wcześniej zwróciliśmy uwagę.

Nowości w wersji 12 - Dynamiczna kinematyka odwrotna

Dostarcza on nam zupełnie nową, nietkniętą bazę współrzędnych. Aby cała łańcuch IK został uwzględniony, musimy go podporządkować do Root-Null-Objektu.

Najpierw jednak tworzymy świeże Null-Objekt poprzez menu Obiekty. Ponieważ staw głowy znajduje się w pozycji null, nie musimy przemieszczać nowego Null-Objektu.

Nowości w wersji 12 - Dynamiczna kinematyka odwrotna

Nazwijmy ten nowy Null-Objekt konsekwentnie jako Root i podporządkujmy mu całą hierarchię stawów poprzez Menadżer obiektów.

Nowość w wersji 12 - Dynamiczna kinematyka odwrotna

Najpóźniej teraz możemy nacisnąć przycisk odtwarzania i obracać i animować obcego poprzez obracanie Root-Null-Objektu w różnych kierunkach. Czułki lub anteny będą podlegały dynamice grawitacji i naszym ruchom.

Nowości w wersji 12 - Dynamiczna kinematika odwrotna.



Root-Null-Objekt jest więc praktycznym pomocnikiem podczas animacji hierarchii stawów. Podczas tworzenia szkieletu stawów, przynajmniej główny staw (zazwyczaj biodro) otrzymuje takie nadrzędne Null-Objekt, aby to działo się automatycznie, musimy aktywować opcję Root-Null-Objekt w oknie dialogowym narzędzia Staw.