In ons voorbeeld moeten de antennes of voelsprieten van het buitenaardse personage dynamisch en elastisch meebewegen met elke beweging van het hoofd. Natuurlijk kan ons voorbeeld ook worden toegepast op haarlokken, dinosaurusstaarten en nog veel meer.
In het werkbestand "PSD_C4D_R12_IK_Dyn_Start.c4d" vind je het gemodelleerde en getextureerde buitenaardse hoofd om aan te werken.
Opbouw van het gewrichtsgestel
Ons buitenaardse hoofd bestaat enerzijds uit de polygonale hoofdgeometrie en anderzijds uit twee bolvormige objecten voor de ogen. Later zullen we alle objecten hiërarchisch of via gewichten aan joints binden, zodat het volledige hoofd samen met de voelsprieten probleemloos geanimeerd kan worden.
Laten we beginnen met de opbouw van het gewrichtsgestel met een eerste gewrichtsobject voor het hoofd. Je vindt het in het menu Character.
Omdat het buitenaardse hoofd zich precies op de oorsprong van het coördinatensysteem bevindt, kan het hoofdgewricht op de nulpositie blijven.
We laten het zojuist aangemaakte gewrichtsobject geselecteerd en activeren de gewricht-tool in het Character-menu. In het instellingendialoog van de gewricht-tool schakelen we de creatie van een bovenliggend nulobject uit. Deze zullen we later zelf creëren om beter te begrijpen welke functie het heeft in een gewrichtsgestel.
Zodat we symmetrisch kunnen werken, klappen we het symmetriegedeelte uit en gebruiken we de tekenoptie op het wereld-YZ-vlak. Op dit vlak respectievelijk in deze weergave zullen we de gewrichten tekenen.
Als we nu met de geactiveerde gewricht-tool en met ingedrukte Ctrl-toets op de weergave klikken, worden automatisch en symmetrisch gewrichten onder het hoofdgewricht gecreëerd.
We kiezen een van de twee voelsprieten en plaatsen het eerste ondergewricht direct aan de basis van de voelspriet op het hoofd. De joint voor de andere voelspriet wordt door CINEMA 4D automatisch geplaatst dankzij de geactiveerde symmetrie.
We creëren nu elk met een klik terwijl we de Ctrl-toets ingedrukt houden een gewrichtsketen op de posities zoals getoond in de afbeelding. Op plaatsen waar het fijner wordt, moeten de gewrichten ook wat dichter bij elkaar liggen. We moeten niet zuinig zijn met gewrichten, want alleen op deze gewrichtslocaties kan überhaupt een vervorming of buiging van de geometrie plaatsvinden.
Nadat we alle gewrichten hebben gecreëerd, vinden we in de Object Manager de in de afbeelding getoonde gewrichtshiërarchie. Het hoofdgewrichtsobject heeft in totaal twee gewrichtsketens als subobjecten - een keten voor elke voelspriet.
Om de positie van de gewrichten ook in de zijweergave paar voor paar aan te passen, selecteren we een gewrichtspaar in de Object Manager en verplaatsen we de gewrichten langs hun z-as in de geometrie.
Het gewrichtsgestel voor de animatie van de voelsprieten of antennes zou daarmee al voltooid zijn. Helaas heeft het nog geen verbinding met ons buitenaardse hoofd, die ons in staat zou stellen om het hoofd te animeren.
Dit is pas mogelijk wanneer we de gewrichtshiërarchie met de geometrie hebben verbonden. Hiervoor selecteren we eerst via de Object Manager alle gewrichtsobjecten en het polygonobject van de Alien-geometrie.
De verbinding van de gewrichtshiërarchie met het polygonmesh wordt nu voor ons gemaakt door de opdracht Binden uit het menu Character>Opdrachten.
Wat heeft de Binden-opdracht nu bewerkstelligd? Het polygonobject van de Alien-geometrie heeft nu een gewicht-tag, waarin alle gewrichtsobjecten zijn verzameld die invloed kunnen uitoefenen op de geometrie van het buitenaardse hoofd. Deze automatische gewichtstoewijzing is gebaseerd op de positie van de gewrichten ten opzichte van de geometrie en vormt een goede basis.
Gewichtstoewijzing van de gewrichten
Helemaal perfect is deze gewichtstoewijzing echter zelden; er is dus wat nabewerking nodig. Om een indruk te krijgen van de aangrenzende gewichtstoewijzingen, deactiveren we eerst de functie van de HyperNURBS-kooi via de Object Manager. De gewichts-tool toont de gewichtstoewijzingen op de geometrie namelijk bij een niet-gecorrigeerd polygonmesh. Voor een totaaloverzicht selecteren we eerst alle gewrichtsobjecten met de geometrie in de Object Manager.
Het Gewichtsgereedschap vinden we in het menu Karakter. Nadat we het geactiveerd hebben, verandert de geometrie van het alienhoofd al van kleur. Elke Joint heeft zijn eigen kleur, waarmee de invloed op de geometrie wordt getoond.
Om de Joints en hun invloed op de geometrie afzonderlijk te beoordelen, hoeven we alleen maar de desbetreffende Joint in de Objectmanager te selecteren. Alle gebieden van de geometrie die niet door deze Joint zijn vastgelegd, blijven zwart.
Op het hoofd-Joint valt op dat de punt van de neus niet volledig in de jointkleur aanwezig is. Met het Gewichtsgereedschap kunnen we mogelijke problemen bij vervorming voorkomen door met de Gewichtskwast gericht het gewicht voor de Joint te verhogen.
Ook bij de overgangen naar de voelsprieten of antennes is er te veel invloed op de kop-geometrie. Om aanliggende gewichten te verminderen, gebruiken we het Gewichtsgereedschap met ingedrukte Ctrl- of Ctrl-toets.
Als afsluiting van het gewichtswerk is het aan te raden om alle Joint via de Objectmanager opnieuw te selecteren, de weergave van de gewichtskleur op Eenkleurig in te stellen en te controleren of de volledige geometrie een gewicht heeft. Zoals te zien is in de afbeelding, is het volledige alienhoofd wit gekleurd, wat ons zegt dat alle delen van de geometrie van gewichten zijn voorzien.
De Bol-objecten van de ogen bleven vrij van gewichten. Om ervoor te zorgen dat deze objecten ook meebewegen wanneer het hoofd draait of beweegt, wijzen we ze eenvoudig toe aan het hoofd-Joint in de Objectmanager. Wanneer het hoofd-Joint bijvoorbeeld wordt gedraaid, volgen de oogobjecten de hoofdrichting vanwege hun ondergeschiktheid.
Het is nu echter de hoogste tijd om het Joint-skelet en de aanwezige gewichten in de praktijk te controleren. We selecteren het hoofd-Joint en draaien het met het Roteringsgereedschap langs de y-as. Het volledige alienhoofd zou daarbij zonder problemen de bewegingen van het hoofd-Joint moeten volgen.
Integratie van inverse kinematica met dynamica
Nadat de Joints nu zoals gewenst op de verschillende gebieden van het alienhoofd werken, kunnen we ons richten op de animatie van de voelsprieten of antennes via Inverse Kinematics (IK). Hiervoor moeten we de twee Joint-strengen voor de voelsprieten of antennes definiëren als IK-keten.
We selecteren deze twee Joint-reeksen in de Objectmanager - let op, het hoofd-Joint valt hier buiten!
Ook hier biedt CINEMA 4D weer een speciale opdracht genaamd IK-reeks genereren, die de geselecteerde Joint-reeksen automatisch verwerkt tot IK-reeksen. We vinden deze in het menu Karakter>Opdrachten.
We passen de opdracht IK-reeks genereren toe en controleren wat er is gebeurd met onze Joint-reeks. De twee Joints aan de basis van het hoofd kregen elk een IK-tag toegewezen. In deze tag werden automatisch het begin en het einde van de IK-reeks vastgelegd.
Daarnaast vinden we twee nieuwe Nul-objecten als Doel-objecten in de Object-Manager. Deze twee doelen zijn genoemd naar de uiteinden van de Joint-reeks en stellen ons in staat om de gehele IK-reeks te animeren via deze eenvoudige controle-doelen.
We willen de bewegingen van de voelsprieten of antennes eigenlijk automatisch regelen via dynamische eigenschappen. Het is echter geen kwaad om deze twee doel-objecten te behouden, want zo richten de voelsprieten of antennes zich na elke beweging en vervorming telkens weer op de doelen en stellen ze zich automatisch bij.
Een kijkje in het instellingendialoog van de IK-tags toont ons hoe de uiteinden of doelen van de IK-reeks zijn gedefinieerd. Deze parameters in het gebied Tag kunnen we behouden; we zijn nu meer geïnteresseerd in de dynamische instellingen.
Hiervoor gaan we naar het tabblad Dynamica en activeren eerst de Dynamica-optie. Nu kunnen de voelsprieten of antennes al reageren op invloeden zoals Zwaartekracht of Beweging.
Maar om te voorkomen dat de voelsprieten gewoon slap hangen, maar eerder elastisch en veerkrachtig lijken, verminderen we de Dynamica-sterkte tot ca. 40-45% en verhogen we de Demping drastisch tot ca. 70%. Om ervoor te zorgen dat de voelsprieten nog meer moeite doen om de oorspronkelijke staat terug te krijgen, verhogen we de parameter Hoek behouden tot ca. 40-45%.
Ik nodig je op dit punt alleen maar uit om verder te experimenteren met de parameters. Op die manier leer je snel hoe de verschillende instellingen van invloed zijn op de gehele keten van inverse kinematica - en het is natuurlijk ook leuk om te doen.
Omdat de beide uitbestede doelobjecten niets weten van de dynamische animatie van de voelsprieten, moeten we de IK leren dat deze doelen moeten worden meebewogen. Anders zouden de voelsprieten heel snel in elkaar verstrikt raken bij een snelle draaiing.
De tab Verder gaan in de IK-Tag biedt ons daarvoor een zeer elegante functie. We activeren eenvoudigweg de optie Doel meevoeren, en de beide doelobjecten bewegen automatisch met elke beweging mee.
Nu is ook de functionaliteit van de Inverse Kinematics van de voelsprieten onder controle. Laten we wat orde brengen in de Object-Manager, door de doelobjecten en de Joint-ketens passend te hernoemen.
De kop-Joint fungeert momenteel als handvat voor de animatie van de alienkop. Helaas is deze Joint relatief onhandig, omdat hij vanwege zijn ondergeschikte Joint-ketens in de ruimte is geroteerd.
We hebben eigenlijk een "schone" startpositie nodig wat betreft de hoeken, zodat de rotatie en beweging van de alienkop voor ons kan plaatsvinden zonder ongewenste voorverdraaiingen.
Hier komt nu het Root-Null-Object om de hoek kijken, waar we aan het begin kort op gestuit zijn.
Het biedt ons een volledig nieuwe, ongerepte coördinatenbasis aan. En om de volledige IK-keten hiermee rekening te laten houden, hoeven we ze alleen maar onder het Root-Null-Object te plaatsen.
Eerst creëren we echter het nieuwe Null-Object via het menu Objecten. Omdat de kop-Joint zich op de nulpositie bevindt, hoeven we het nieuwe Nul-Object zelfs niet te verplaatsen.
We noemen dit nieuwe Null-Object consequent Root en voegen de volledige Joint-hiërarchie eraan toe via de Object-Manager.
Op dit moment kunnen we op de afspeelknop drukken en de alien rond draaien en animeren door rotatie van het Root-Null-Object in alle richtingen. De voelsprieten worden dynamisch gestuurd door de zwaartekracht en onze bewegingen.
Het Root-Null-Object is dus een handige hulp bij het animeren van een Joint-hiërarchie. Bij het maken van een Joint-structuur krijgt minstens de hoofd-Joint (meestal de heup) zo'n overkoepelend Null-Object voorgeschreven. Om dit automatisch te laten gebeuren, moeten we in het instellingendialoog van het Joint-Gereedschap alleen de Optie Root-Null-Object activeren.