Zu aller erst, dieser Blogpost fokussiert sich auf meine Reflexion mit der Arbeit mit Duik.
Duik Ángela ist die neuste Version von Duik. In der Vergangenheit habe ich mich schon mal kurz mit Duik Bassel auseinandergesetzt. Da das aber schon etwas länger her ist, musste ich mich dem Werkzeug von Neuem annähern. Ohne das Zurückgreifen auf Tutorials hätte ich mich wahrscheinlich noch länger durch den Riggingprozess quälen müssen.
Meine Erkenntnisse
Durch die Hilfestellung von Tutorials versteht man schnell wie der Rigging Prozess funktioniert. Doch es gibt mehrere Varianten wie man zu einem Rig gelangen kann, welche ich nicht alle zeitlich ausprobieren konnte.
Zum einen habe ich mir die Methode mit Setzung der Ankerpunkte und die Methode durch Pfaderstellung angeschaut.
Es entstehen eine Menge an zusätzlichen Ebenen, welche man zwar verstecken kann, aber man kann schnell den Überblick verlieren (vor allem wenn man mehr als einen Charakter in der Szene hat).
Man sollte nicht vergessen jedem Charakter Rig einen Namen zu geben. Ansonsten kann es vor allem bei mehreren Charakter Rigs in einer Szene zu Verwirrungen führen und die Rigs funktionieren nicht mehr wirklich. Zum Beispiel ist es mir passiert, dass ich nicht daran gedacht habe. Beim Erstellen des ersten Charakter Rigs war es kein Problem. Aber sobald ich den zweiten Charakter Rig erstellt habe, funktionierte keiner der beiden nicht mehr richtig. Der Fuß-Controller des ersten Charakters veränderte nichts and der Fußstellung des Beines. Nach mehrmaligem Versuchen kam dann die Realisierung. Die Lösung des Problems hat wirklich viel Zeit beansprucht.
Man muss einiges in der Gestaltung eines Charakters berücksichtigen (vor allem als Anfänger:in). Wichtige Punkte dazu habe ich in einem anderen Blogeintrag erwähnt. Trotzdem war ich froh, dass durch die Arbeit mit Illustratordateien, es mir möglich war, Änderungen durch Illustrator zu machen. Vieles von meinem ursprünglichen Charakterdesigns ging beim Prozess verloren, da es viel zu kompliziert für eine Anfängerin gewesen wäre, nahtlos zu integrieren (z.B. Farbverläufe, Muster, Ränder). Auch wenn Muster in meiner Animation vorkommen, kann man der Kontaktstellen der einzelnen Glieder Fehler sehen. Bei diesem Punkt kann ich mir vorstellen, dass RubberHose oder Limber besser funktionieren könnten.
Das Rigging der Personen ging sehr gut und keine Fehler (außer der eigens herbeigeführte Bezeichnungskonflikt) aufgetreten. Aber beim Rigging für den Stier, hat sich das Programm immer beim Vorderbein verfangen und alles funktioniert bis auf das eine Bein. Auch die Pfad-Variante wollte nicht funktionieren. Erst als ich ein „Custom-Bone“ generiert habe und Auto-Rig angewendet habe, funktionierte das Bein (Scheinbar hat das Preset irgendeinen Bug).
Die automatisierte Walk- und Runcycle Funktion optimierten den Animationsprozess enorm. Durch weiteren Control-Panels kann man die Bewegung sehr gut individuell gestalten.
Duik bietet so viele unterschiedliche Werkzeuge an, dass ich bis jetzt nur an der Oberfläche dieses Plugins gekratzt habe. Um sich ausführlich mit Duik zu beschäftigen, benötigt es einiges mehr an Zeit und Übung (+ viel Konsum und Nachbauen von Tutorials).
Abschließend möchte ich sagen, dass Duik Ángela extrem viel bietet und KOSTENLOS ist! Trotzdem hatte ich das Gefühl, dass ich mich vielmehr mit dem Rigging und dem richtigen Anlegen der Illustration beschäftigen musste, als mit dem animieren und ich bin immer noch nicht zu 100% zufrieden mit meinem Resultat. Deshalb würde ich gerne, wenn das Budget es zulässt, mir RubberHose oder Limber in der Zukunft anschauen, da ich mich auch animationstechnisch verbessern möchte und deshalb das Augenmerk in meiner Arbeit darauflegen möchte. Es sollte – laut meiner Recherche – nicht so Rigging intensiv sein.
Für Adobe After Effects gibt es mehrere Charakter-Rigging-Plugins, die die Animation von Figuren vereinfachen und verbessern. Für meine Recherche habe ich mich näher mit den drei bekanntesten Plugins beschäftigt: Duik Angela, RubberHose und Limber. Andere Plugins zum Beispiel wären Character Tool und PuppetTools 3.
DUIK Angela
DUIK Angela ist das größtes Script das für After Effects je geschrieben worden ist. Das merkt man allein schon am Umfang von Funktionen, die es anbietet. Doch was sind die Vorteile und Nachteile von Duik?
Vorteile:
Ein klarer Vorteil ist, dass dieses Script kostenlos und Open Source ist und es wird kontinuierlich weiterentwickelt.
Alles Mögliche kann gerigged werden (nicht nur Charaktere), beispielsweise Face-Rigging
Eine große Bandbreite von Werkzeugen. Es bietet zahlreiche Tools für Charakter-Rigging, inklusive Bones, IK (Inverse Kinematics), FK (Forward Kinematics), Automatisierung von Bewegungen und auch weiteren Werkzeugen die nicht unbedingt etwas mit Charakteranimation zu tun haben.
Community-Unterstützung: Große Nutzerbasis und viele Tutorials sowie Beiträge, die den Einstieg erleichtern.
Abrollen des Fußes funktioniert in Duik.
Automatische follow through und overlap Funktion
Skelett-Presets
Auto walk and run cycle
Duik baut ein Skelett auf welches die Illustrationen gekoppelt werden.
Raster-Illustrationen funktionieren. Man kann diese auch mit Puppet Pins strecken.
Bei der Verwaltung kommt es bei Duik kaum zu Bezeichnungskonflikten und Duik besitzt ein robustes Rig-Bezeichnungssystem.
Der Rigging-Prozess ist aufwendig, aber es gibt sehr viele Möglichkeiten zur Individualisierung.
Nachteile:
Durch die vielen Werkzeuge ist Duik sehr komplex und ist dadurch umständlich zu erlernen. Auch wenn man in den Einstellungen einstellen kann, ob man ein Anfänger (Rookie) oder Experte ist, ist es trotz den zusätzlichen Bezeichnungen komplex.
Man verbringt sehr viel Zeit mit Rigging.
Da es ein destruktives Rigging-Werkzeug ist, muss man bei Veränderungen oder bei der Behebung von Fehler zurück an den Anfang. Deshalb muss man sehr genau sein.
Duik ist nicht ausgelegt auf den Rubberhose-Stil. Auch wenn es die Funktion „Bone Noodle“ gibt, kann sie nicht so individualisiert werden, wie bei Rubberhose oder Limber.
Nicht für die Gestaltung von Charakteren geeignet
Macht sehr viele zusätzliche Ebenen
RubberHose
Die Extension RubberHose von Battleaxe verwendet das gleichnamige Animationsprinzip, welches seit den 1920er Jahren zum Einsatz kommt.
Das Animationsprinzip wurde „Rubberhose“ genannt, da die weichen und elastischen Bewegungen der Charaktere, an die flexible Bewegung eines Gummischlauchs erinnert. Charaktere wurden in diesem Stil mit vereinfachten Gliedmaßen und Gelenken gezeichnet. Eine zeitintensive, realistische Darstellung der Anatomie stand dabei nicht im Vordergrund, sondern die zeitliche Effizienz. Dadurch, dass die realistische Darstellung der Anatomie etwas in den Hintergrund rückte, ermöglichte die Technik, Charaktere auf übertriebene und elastische Weise sich bewegen zu lassen. Somit ist der Rubberhose-Stil bekannt für seine karikaturhafte, humorvolle Ästhetik und wurde in vielen klassischen Zeichentrickfilmen verwendet. Bekannteste Beispiele sind zum Beispiel Mickey Mouse, Popeye und Betty Boop.
Vorteile:
Einfaches und verständliches UI
Einfache Bedienung: RubberHose ist bekannt für seine einfache und schnelle Handhabung, ideal für Animator:innen, die schnell Ergebnisse benötigen.
non-destructive Rigging = Man kann Änderungen in der Erscheinung eines Glieds auch noch nach dem Rigging machen (Biegsamkeit,…)
Flexibilität: Ideal für Personen, welche flexible, weiche Körperteile haben wollen.
Umfangreiche Charakterstile Bibliothek: Außerdem bietet es durch die umfangreiche Presets-Bibliothek viele verschiedene Gliederbvarianten an, welche auch alle individualisiert werden können. Auch kann die Personalisierung als Preset gespeichert und weitergegeben werden.
Stabilität: Sehr stabil und zuverlässig in der Anwendung.
Seit RubberHose 3 kann man ein Körperteil auch mehrmals biegen.
Bei RubberHose werden wie bei Duik die Illustrationen an das Skelett gekoppelt. Man kann mehrere Ebenen auf eine Hose koppeln und individuell platzieren.
Raster-Illustration funktioniert. Kann diese auch mit und ohne Puppet Pins strecken.
Bei RubberHose ist die Verwaltung und Änderung bei Gliederbezeichnungen möglich.
Nachteile:
RubberHose ist kostenpflichtig.
Der Fokus liegt auf Glieder wie Arme oder Beine. Man kann nicht alles zu einem Rig verwandeln.
Keine Vorwärtskinematik
Die unlimitierte Streckung der einzelnen Glieder kann nicht ausgeschalten werden.
Limber
Auch Limber bedient sich des Rubberhose Stils. Die wichtigsten zwei Gliederstile in Limber sind Taper and Bone.
Vorteile:
Einfaches und verständliches UI
Einfacher und schneller Rigging Prozess
umfangreiche Charakterstile Bibliothek
Bone kreiert Rubberhose-Glieder. Mit dem Pfad und Taper kann man jedes Glied personalisieren wie man möchte.
Bei Limber ist die Verwaltung und Änderung bei Gliederbezeichnungen möglich.
FK/IK Slider-Control
Einfaches Verkürzen der Glieder während dem Animieren
Nachteile:
Limber ist kostenpflichtig, aber billiger als RubberHose.
Der Fokus liegt auf Glieder wie Arme oder Beine. Man kann nicht alles zu einem Rig verwandeln.
Im Gegensatz zu RubberHose kann man bei Limber nicht so viel personalisieren und verwalten.
Der Taper-Stil kann nie abgerundet sein. Es wird immer gerade Kanten dabei haben. Zwar gibt es Taper-Stil Presets in der Bibliothek, aber diese sind nicht einfach zu individualisieren bzw. es beansprucht mehr Zeit.
Alles muss eine Vektorebene sein.
Es gibt keine automatische Bieg-Richtung.
Puppet-Pin wird nicht unterstützt.
Abschließende Gedanken
Die einzelnen Plugins können auch kombiniert eingesetzt werden, um die bestmöglichen Ergebnisse zu erzielen. Gerne wird Duik mit den Arm- und Bein-Controllern der beiden anderen Plugins verwendet. Vor allem das Abrollen von Fuß von Duik wird gerne genutzt. Doch für meine Animation werde ich ausschließlich Duik verwenden, weil Duik kostenlos ist und doch einiges kann.
Als Hilfestellung für die Darstellung realistischer Bewegungen in Animationen gibt es für Keyframe-Animationen einige Plugins/ Scripte. Diese Plugins beziehen sich auf zwei Animationsmöglichkeiten: der Vorwärtskinematik und die inverse Kinematik. Doch was steckt hinter den zwei Begriffen?
Begriffsherleitung
Die Lehre der Kinematik (griechisch für Bewegung) beschreibt mathematisch die Bewegung von Punkten und Körpern im Raum. Untersuchungsgegenstand ist der Verlauf einer Positionsänderung, dabei werden die Ursachen und Auswirkungen in der Beobachtungen außen vor gelassen. Aber im Bereich der Animation (vor allem 3D-Animation) ist es eine Technik, welche mithilfe von mathematischen Berechnungen das Hierarchieverhalten von Gelenken ermittelt. Ihren Ursprung hat diese Methode in der Robotik. Dort entstand diese Technik aus dem Verlangen Roboterarme in ihrer Positionierung gezielt zu bedienen. Die Grundstruktur ist eine hierarchische Kette von Gelenken. Diese Gelenke kann man mit zwei unterschiedlichen Bewegungsarten steuern:
Forward Kinematic / Vorwärtskinematik(FK): Bei dieser Art der Animation werden einzelne Gelenke oder Knochen in einer festgelegten Reihenfolge bewegt, um die gewünschte Bewegung zu erzeugen. Erklärt anhand eines Beispiels: Zuerst wird der Oberarm, dann der Unterarm und dann die Hand bewegt. Somit arbeitet man sich im Animieren VORWÄRTS von der Schulter zur Fingerspitze hin. Vorwärtskinematik ist praktisch für schwingende Bewegungen (overlapping actions). Beispielsweise sieht man bei der ersten nachfolgenden Animation die Handbewegung mit Vorwärtskinematik animiert und bei der nächsten ist die Handbewegung mit Hilfe inverser Kinematik animiert worden. Für jede der Animationen wurde die selbe Zeit für die Bewegung investiert. Deshalb sieht man klare Unterschiede: während die IK-Animation keine Kurve aufweist bzw. müsste man dafür die Pfad-Animation anpassen, passiert bei der FK-Animation die Bewegung entlang einer Kurve von alleine. Deshalb wirkt diese Animation auch harmonischer.
Inverse Kinematic / Inverse Kinematik(IK) Bei dieser Technik wird die Bewegung einer Animation eines Charakters oder Objekts durch die Steuerung eines Zielpunktes oder Endeffektors, von dem aus die Bewegung der Gelenke automatisch berechnet wird, bestimmt. Die Software berechnet die Positionen der einzelnen Teile im Zusammenhang mit der Position des Zielpunktes. Der Vorteil daran ist, dass komplexe Bewegungen einfacher zu erstellen sind. Inverse Kinematik eignet sich am besten für Laufzyklen, Springen, Fahrradfahren, Klettern und wenn es darum geht auf genaue Positionen zu animieren.
Abschließend sollte man anmerken, das inverse Kinematik nicht Vorwärtskinematik ausschließt und vice versa.
Quellen
Hagler, Jürgen (10.04.2006): Kinematik: FK / IK, http://www.dma.ufg.ac.at/app/link/Grundlagen%3A3D-Grafik/module/14174?step=all
This blogpost will be the final entry on the topic of character rigging and animation in Cinema4D. It will cover some of the more advanced tools Cinema4D provides for character rigging and animation and how they may be used to either achieve even better results or speed up the production process. Finally, it will give a short summary of the covered topic.
Deformation and changing of topology based on movement
Muscle Object
The muscle object follows its name by allowing for the set-up and simulation of anatomically correct muscles and sinews. These muscles can be attached to the joints and bones (the rig) allow the simulation of muscle movement beneath the mesh. Since the muscle object is a very complex and advanced tool, that requires lots of time to set up, however, it is only worth the effort when complete anatomical accuracy is paramount. In these particular cases, however, it is possible to simulate dynamic movement changes, skin deformation, different anatomies and their anatomical changes when influenced by different muscles, programm simulations and many more features that would require a whole seperate tutorial series.
Needless to say, the muscle object is a very powerful tool, if mostentimes a bit too complicated, especially since, as long as one’s goal is a more cartoonish style of animation – or rather just not 100% anatomical correctnes – simulating muscle movements by using the pose morph is usually a much quicker and easier alternative.
Pose Morph
As previously described, when working on muscle movements in a rig, where anatomical correctness is not the main focus, the pose morph can be used to transform mesh topology and animate this transformation. By adding the pose morph tag to the obejct or topology one wants to animate, it is possible to switch between different defined poses by simply moving a slider. The poses, between which the slider switches, can be defined in the edit tab of the tag.
While having the pose morph in edit mode, and while working in point mode on the topology, the pose-morph tag records the initial position of the topology / mesh as original position. Now, when working in point mode with the pose morph tag active in edit mode, any changes made to the mesh, e.g., movement of points or any other disformation, will be recorded and the new, updated mesh will be set as target pose. Now, by accessing the animate tab of the pose morph, the object can be blended seamlessly between the two set poses using a slider. This is also true for any and all affected points of the object – to animate the changing topology parameters like rotation, UVs, scale, normals, and many others can be simply changed and the change recorded. Furthermore, it is important to note, that not only one, but a multitude of target poses can be added, which makes it possible to easily animate and / or blend the same object from its starting position to a wide variety of different target postitions via sliders for all the different set poses. It is, in this regard, very similar to the blend-shapes option in other animation software This shows, that the pose morph is a very powerful tool, that allows for easy animation and keyframing of the different poses and blend between them seamlessly, by simply keyframing the blend-slider in the animate tab. This, in connection with Cinema4D’s intuitive auto-keyframe option, allows for a very easy, smooth and fast animation workflow while still producing remarkably realistic results.
Parametric and node based animation
As parametric and node based animation is a very deep and complex topic, this chapter will only cover the basics of the available tools, without diving too deep into the programming or concepts behind it, but aims just to show, which tools exist and, in simple terms, how they work and may be used to improve the animation workflow.
C-Motion
C-Motion is a tool so far unique to Cinema4D. It is a tag, which has been specifically created and optimised for animating repeating or cyclical motions, e.g., someone walking, a bird’s wings flapping, the pistons in an engine moving, etc. This tool works using hubs and targets, which have their own hierarchy similar to the already known parent and child hierarchy. When comparing the two, it would be adequate to say that Hubs could be seen as equal to parents, while targets are their child / children. Within the C-Motion object, to animate a cycle, it is first necessary to set a hub-joint and a target joint. These two can then be continuously animated in a cycle by adding rotations, movement or other actions to the target. The phase tab can then be used to set the length, strength and the start- and endpoint of the desired cyclical movement via a curve.
Using the C-Motion and making sure the movements are either in-phase or out-of-phase to each other makes it easy to make walking appear natural, e.g., to also animate the movement of the arms and legs while walking, so when one leg moves back, the other moves forward and vice versa. The ease, with which a movement can be adjusted by simply adjusting either the strength or entry and exit point of the phase makes the C-Motion a very powerful tool for parametric animation.
XPresso
XPresso is a node-based programming language within Cinema4D. Due to its node based character, all interactions happen within the XPresso shader graph. Within the shader graph, XPresso allows for the connection and relation of different parameters between different objects, which basically allows for interactions between them to be programmed freely via their relations. This way, it becomes possible to, for example, programme, that, whenever object A moves or behaves a certain way, object B behaves a certain way as well. It is, in this regard, similar to constraints, though of course it allows for a much more precise and free interaction, as any relation or behaviour can, with adequate skill, be programmed exactly how the user desires.
To make use of XPresso and manually programme node-based interactions between objects, it is first necessary to add the XPresso tag to the target objetct(s). Then, by double clicking the tag, the shader graph can be access and the desired interaction programmed. When working with XPresso, within the shader graph, it is important to be mindful of the different in- and output parameters and make sure, that values match the desired results, e.g., when working on rotation, making sure whether or not the output of an angle in in degrees or radians, since it can have a huge influence on the later interacations. As such, proper use of re-calculation and re-mapping nodes, where applicable, is crucial.
Now, while it is possible to programme every single interaction manually with XPresso, Cinema4D also offers a shortcut for it. To simply connect two parameters via XPresso, it is also possible to right click the first parameter, which is supposed to influence the other, and chose XPressions -> Set as a driver. Then, simply right click the second parameter, the one to be influenced, and choose XPressions -> set as driven (absolute). This will automatically create a XPresso tag on the target and connect the two parameter in it. It will also change the parameters keyframing appearances to indicate the driving, where the position of the triangle indicated, whether it’s the driver or the driven. This is a very simple way to automatically connect two parameters, though of course it is also prone to error, since there is much less control over what is happening. At this point, it is important to note, however, that, if one is unhappy with the automated results or if the automation produces undesirable results, the XPresso tag can now be accessed manually as well and the interaction refined the same way as if programming it manually. As such, XPresso can both be a very easy, but powerful tool, but also very deep and complex at the same time, as it allows for interactions between any objects or parameters within Cinema4D to be made as simple or complex as one’s skill allows. With it, a wide variety of complex interactions can be programmed, e.g., the influence of a light source on an object and its reflections or similar complex ideas.
The character object
Cinema4D’s character object is basically a built-in auto-rigging tool, that combines many of the different tools and techniques previously described and automates them to a certain degree. To understand what it is doing and how it works, however, it is important to understand all the previously described concepts, as it will help use the character object to its maximal potential.
Simple character rigged using Cinema4D’s character object
The character object comes with a wide variety of pre-defined tools and settings, that can be a shortcut when working on very basic meshes and can further cut production time when animating. It is important to note, however, that, same as many other tools in Cinema4D, it can be manually extended or adjusted however needed by the user. With the character objects, the rig can be set up manually or automatically, in a similar way to how normal rigging with bones and joints works. The character object, however, has the advantage that controllers, IK chains and similar controlls / additions can be added and adjusted much more easily than by adding them one by one in a very holistic manner., thus speeding up both the rigging and the animation process. It is one of Cinema4D’s most powerful tools when it comes to animation, as it can be adapted to fit almost any topology and comes with as wide variety of presets and supports, that make adding, for example, mo-capped animations to your mesh very easy.
Summary
To sum up the previous three blogposts, Cinema4D is a very powerful software solution, with a wide variety of tools and approaches to work with, that, when used correctly, can achieve remarkable results when animating. To achieve said results, however, it is crucial to both know about the described tools and be steadfast and secure in their use, which is something, that I am still working on. It is also always important to keep in mind, what the desired endgoal for the animation should be like, as some tools, such as, for example, the muscle object, may yield very little gain for the considerable amount of effort that goes into setting it up. When keeping all these things in mind, however, it can be remarkably simple to achieve great and fun results when animating with Cinema4D and I am very much looking forward to the results my journey with this software may still lead me to.
This blogpost will expand further on the previous topic of character rigging and animation in Cinema4D. It will tackle the question, how a rig can be connected to a modelled geometry, how the created character can be animated and what role topology and edgeflow play when rigging a model. Furthermore, it will also explain the role of controllers and constraints when animating a rig.
Connecting the rig to the character / geometry
Parent – based rigging
Parent-based rigging is the most simple way to connect a piece of geometry and can be great for animating usually inanimate objects, like lamps or balls or smaller robots, such as claw-hands or the like. To parent – rig a geometry, simply make the geometry you want to animate a child of the joint you want it to affect. This allows for the geometry to the be influenced by only its parent joints, which makes it a great tool for animating basic shapes and geometry quickly. Furthermore, it also allows for the use of parametric objects when animating, since there is no need to access the points / vertices of the object. As a result of its rudimentary functions and due to these limitations, however, it is not suitable for animating more complex geometry.
Point weighting, weight management, normalisation and point – weight – based animation
Point weighting, in comparison to parent – based rigging, is much more precise in how it affects the rigged geometry. The main difference between the two is, that instead of each mesh / piece of geometry being assigned as a child of one joint, with point weighting you can, as the name implies, weigh each singular point / vertice to multiple different joints. Point weighting, in this regard, controls how the edge flow and overall topology react to the movement of the joint. As such, for effective point weighting and weight – based animation to be possible, it is imperative to have a clean, artifact-free topology and consistent edge flow.
The weight – assigned in percentage – thereby describes, how much the movement of a joint affects the weighted geometry. The difference hereby is, that one point / vertice can be weighted to multiple joints at the same time and thus be affected by their movement. The percentage of the weight, in such a case, controls how much the point gets affected by the joints movement. To give an example, if a point were to be assigned 50% weight of one joint A and 50% weight of another joint B, if you were to rotate joint A by 90° along the z-axis, but did not rotate joint B at all, the points would only rotate 45° (or, as assigned before, 50% of the weight). It is thus possible to say, that the assigned weight displays, how much control any given joint has over a point. It is important to note, however, that, in order to get clean animations and proper control over the points, each point needs to be assigned a total weight of 100% to the different joints, so it needs to be weighted at 100%. This is called normalisation and it ensures, that no point remains unaffected by the movement of the joints / remains stuck in place, when you move the rig along and thus deforms the topology and mesh in undesirable or unforeseen ways. As such, 100% absolute distribution is the goal when point weighting a mesh.
Simple weighted character mesh of a flying bird. The different colours show the weight distribution of the mesh to the different joints of the rig.
Of course, it is possible that, even with 100% absolute distribution, some parts of the mesh get squished or deform in a weird way when moved / rotated past a certain point. To prevent that, the fan-bones, mentioned in the previous blog entry, can be used. By simply assigning weight to the fan bone instead of its two parent joints, the rotation and movement of the mesh can be smoothened out and blended together in a way that prevents the undesirable squishing and / or deformation from occuring. Furthermore, a fan bone’s pole vector allows for a more precise control of the direction the topology deforms in, similar to how a joint’s pole vector allows for a more precise setting of the bend.
Constraints and controllers
To prevent self-intersections during movements and, as another way to influence and refine how a rigged mesh operates when animated, it is possible to use constraints. Contraints, as the name implies, constantly update and constrain certain parameters or properties of any object, joint or bone they are assigned to. This way, the assigned object can, for example, be made to follow a selected target or change its rotation or position depending on different situations. The set target for any given constraint is what is most commonly known as a controller.
Two good examples on a possible application of constraints would be the AIM and the PARENT constraint.
The AIM constraint
By adding the aim constraint to joint and setting a random object (e.g., a cube, sphere, camera, null, etc…) as a target (controller), the joint’s general direction and rotation as well as the direction of that joint’s bone will always follow the movement of the selected target, no matter, where in the workspace it is moved to. This can, for example, be used to rig a character’s head or eyes, so they follow an object’s movement or make them always focused on the camera.
The PARENT constraint
While the aim constraint mainly limits the direction an object is facing, without affecting its actual position, the parent constraint constrains the object it is applied to to the selected parent object and ensures that the position and rotation they have relative to each other remains the same. That way, if you move the parent object, you also move the constrained object / joint the same way, while, if you were to rotate the parent object, the constrained object would be rotated and moved around, so their relative postion would remain the same. Here, it is important to note that, unlike the aim constraint, which assigns just one target for the object to follow, with the parent constraint it is possible to set multiple such targets. When doing so, it is possible to regulate the strength with which each target affects the constrained object and even to blend two different influences together.
Just by looking at these two examples, it should already become obvious why, when rigging an object, proper use of constraints can not only help make the animators work easier, but become outright necessary to ensure a smooth and impeccable animation flow.
Controllers
As mentioned before, the set target for a constraint is usually called a controller. Here it is important to note, however, that, by setting a null object or similar target as a controller, and using the proper constraints, the animation of a mesh can become way easier since, instead of having to animate each movement of any given part of the mesh by hand, it becomes possible to just animate the respective controller and, due to the previously applied constraints, have the mesh react accordingly and, if set properly, correctly and as desired. This is another reason, aside from ensuring proper movement and deformation, that makes constraints and controllers paramount to rigging and character animation in general.
Once I started further looking into the topic of character animation and rigging, it became increasingly obvious, how big a topic this would be. As such, a decision was made to currently limit my research only to rigging and animation with the tools Cinema4D provides, as it is my current go-to software solution when it comes to modelling, rendering and animation. As such, while this will aim to provide a general picture and insights on rigging, the tools described will be following a standard rigging process in Cinema4D.
After working through all of Maxon’s „Hands on“ series, which is more than 13 hours of lectures, dealing with the topic Animation and rigging, and since Cinema is such a powerful software, that provides lots of different tools, my findings will be split into multiple parts: The blog entries will explore what rigging even is, how it works, why it is important for character animation, how to build a rig, how to connect it to geometry and how to animate it. It will start with the very basics, giving an introduction and explaining concepts, and go all the way to the most advanced tools an animator can use when animating with Cinema4D.
First of all: What is rigging, and why is it important for character animation?
Rigging is a technique used in skeletal animation to move and / or present a character model using a series of interconnected digital bones and joints. More specifically, rigging refers to the actual process of creating a digital skeleton for a character model, that can then be linked to said model in order to move, rotate or animate it otherwise. The linked 3D geometry, in this case, then becomes almost like puppet of the created rigged skeleton and deforms and moves along with it. These movements of singular joints and bones, or even the complete model, can then be keyframed or otherwise recorded in order to create longer, continuous animations.
Great, but how does it work?
Bones and joints
To rig a model in Cinema4D, you first have to create its skeletal rig aand then assign you modeled character or geometry to it. By using the joints tool in the character menu, you can, as the name implies, place joints within your scene. These joints then get connected via bones and are what you would move around and / or rotate in order to animate your character later on. To connect two joints with a bone, simply make one joint into a child of the other joint in the object manager. Here, it is important to note, that hierarchy between the joints is VERY important during the rigging process and also later in animation, because, generally speaking, the direction of the bone goes from the object higher in the hierarchy to the object lower in the hierarchy, so always from parent to child. As such, it is usually a good idea, when animating a humanoid character, to start somewhere close to the center, where the spine would be, usually around the pelvis or the chest region, and go outwards from there creating shoulders, elbows, hips, knees, all the way to hands and toes. This is so important, since the direction of the bone also determines, in which way two joints influence each other.
Forward kinematics, inverse kinematics and their hybrid solutions
As mentioned before, the hierarchy between the joints determines their influence on one another. Generally speaking, a rig is dependent on the direction of the bones, as they are forward kinematic, meaning that, when you move or rotate a joint higher in the hierarchy (parent), all children of that joint (other joints and bones) get moved and / or rotated along with it. However, if you move a joint lower in the hierarchy (child), its parent does not get affected and remains in place. This is, in fact, intentional and desired and can be easily understood by imagining the following: When you turn your upper body / torso, usually your neck and shoulders along with your arm rotate with it. However, when you rotate only your wrist, your upper body / torso usually remains unaffected. The same principle applies here.
There are, however, situations, where it may become desirable for a lower-hierarchy joint to affect their parent, e.g., when animating a character walking or jumping. When lifting or otherwise moving the foot – which is usually lower in the hierarchy than the knee or the hip – in such a situation, it is only obvious that the knee should bend accordingly at the same time and maybe even the hip to slightly rotate or move upwards, in order to look natural and avoid uncanniness. To achieve that, it is necessary to create what is known as an inverse kinematic chain between the child-joint and its parent-joint. This chain can be understood as a direct reference between the goal joint, which is the end-joint of the chain (parent, upper hierarchy) and the influencing joint, which is the start-joint of the chain (child, lower hierarchy) and it enables for more fluid and natural looking movements to be created without the need of animating each joint seperately. It also is possible to define, which way a joint higher in the hierarchy / chain should bend or move by setting a pole vector.
So, to sum things up and break them down a little bit:
1) Forwards kinematics work from the top of the hierarchy downwards through the joint-chain, you have to tell each chain-link how to move seperately and animate every joint as you need it while manually forwarding the movement down the chain. 2) Inverse kinematics work from the bottom of the hierarchy upwards through the joint-chain, you influence the last joint in the chain and all the joints, that are connected and higher up in the chain react accordingly. This is especially helpful when animating legs, as it helps them stick to the floor without moving through it, while maintaining proper form.
Understanding how forward and inverse kinematics work and making use of both systems within a rig (hybrid solution) is paramount for proper, good looking animations, that don’t look uncanny or otherwise off.
Simple joint and bone rig using both forward and inverse kinematics
Fan bones / joints for smoother rotations
Fan joints and fan bones are a form of controller – more on controllers will be explained in a later blog post – that basically are a smaller bone and / or joint. These joints, while being the child of another joint and being zeroed-out towards it – meaning it shares its parent’s location, rotation and scale – , act as a support, that blends the rotation of two joints together. It does so, by using a rotational constraint (rigging tag), where the rotational strengths of the two joints can be set. The blending between the joints is dependent on the strength set. This may seem confusing at this point, but its purpose will become clear in later entries. All that is important at this point is to know, that fan joints / bones exist and that they can blend the rotation of two other joints together.
Fan bone sticking out of a simple rigged pipe
Next steps:
Connecting the created skeletal rig to the character model / geometry
Parent – based rigging vs. point – weighting and binding
When looking into different methods of 2D and 3D character animation – be it with the goal to create a short scene or to create a responsive, engaging character – and possible workflows of character creation – the following video came up:
Video showcasing an AI-assisted keyframe-based animation workflow using Cascadeur
Thus, the idea of using AI to assist in different steps of an animation workflow was born. Hereby, the goal was to look for tools that do not completely automate the animation process, but rather that support the artist in a variety of subtle ways by automating some of the most time consuming or tedious processes of an animation workflow. The found results and software solutions will be shown in this blogpost.
AI and MoCap
It rapidly became apparent, that one of the most common applications of AI currently is in the automation of Motion Capture. Be it by using videos as a basis, employing MoCap suits for tracking or even live-tracking a movement via camera, a wide variety of softwares already use AI to automate the motion capture process and provide fully animated and rigged models at the same time or transfer the captured movement to a pre-existing model.
Radical – Real-time 3D human virtualization for everyone, everywhere.
Now, while these softwares certainly differ in a small variety of ways, such as Radical promoting their seamless integration into a wide variety of existing 3D software, Deepmotion advertising the possibility of refinement via a rotoscope editor and their big community and Plask even offering additional outsorcing service for certain tasks, their overall purpose largely remains the same – namely, to capture a real life motion and automate its transfer into a digital environment, thus cutting this part of the workflow short. Given the wide variety of tools available, the question remains, however, on how to proceed from there or how to create new animations from scratch without using motion capture?
AI assisting in animation
Cascadeur – AI assisted keyframe animation software
Cascadeur aims to ease the process of keyframe-animating already rigged characters by using AI to simulate existing physical forces that may influence a characters movement, such as gravity and momentum. It does so by automatically calculating the appropriate movement of all the different nodes within the rigged model in response to the movement of a single other node. The following tutorial video more accurately demonstrates, how this works:
Next steps
More research into different character-animation-workflows
Try out different workflows to see the advantages and disadvantages
Model a character, rig it and creat a small clip using the learned tools