Dynamics: Dynamic-Nodes

Einige Nodes wurden bereits angesprochen, wie der Dynamics Federstatus und der Dynamics Konnektorstatus. Über diese konnten z. B. eine Feder oder auch Konnektor manuell zerbrochen werden, um eine Bindung zwischen den Objekten während einer Animation aufzulösen. Sie finden dazu bereits Beispiele in den Abschnitten zum Konnektor- und Feder-Objekt. Die übrigen Ports dieser Nodes dienen hauptsächlich dem Abfragen oder Setzen von Parametern, die auch über den Attribute-Manager verfügbar wären. Ich gehe daher davon aus, dass wir auf eine tiefere Besprechung dieser Ports und Nodes verzichten können. Interessanter wird es hingegen beim Node Dynamics Annäherung, den Sie z. B. nach einem Rechtsklick in den XPresso-Editor unter Neuer Node > Dynamics finden können.

Der Dynamics Annäherung-Node

Mithilfe dieses Nodes können Sie immer das dynamische Objekt suchen lassen, das am nächsten an einer vorgegebenen Position liegt. In der Regel gehen Sie dabei so vor, dass Sie ein Klone erzeugendes Objekt im Dynamics Annäherung-Node als Objekt zuweisen. Dies wird oft ein MoGraph Klon-Objekt sein. Sie können aber auch ein Array-Objekt verwenden. Wichtig ist nur, dass dieses Objekt ein Dynamics Body-Tag trägt. Alle durch dieses Objekt erzeugten Kopien werden dadurch automatisch zu dynamischen Objekten, die mit diesem Node überprüft werden können.

Enthält Ihre Szene viele dynamische Objekte kann es aber auch angenehm sein nur das anzugeben, das nicht beachtet werden soll. In diesem Fall ziehen Sie das für Sie uninteressante Objekt in das Feld für Objekt ausschließen. Die nächste Einstellung nennt sich Modus und legt fest, wie die Entfernung zu der angegebenen Position vermessen werden soll. Der Modus Mitte vermisst nur den Abstand zwischen dem Mittelpunkt der angegebenen dynamischen Objekte und der Position. Im Modus Bounding Box ist jedes dynamische Objekt von einem gedachten Quader umgeben. Die acht Eckpunkte dieser Quader werden bezüglich der gegebenen Position vermessen. Die Abstandsberechnung bezieht hierbei also, wenn auch nur grob, die Ausrichtung und Größe der Objekte mit ein. Noch mehr Präzision ist nur im Modus Form zu haben.

Dabei wird auf die Kollisionsform zurückgegriffen, die Sie im Dynamics Body-Tag angegeben haben. Hier könnten Sie also z. B. auch Statisches Mesh oder Bewegtes Mesh auswählen, was Ihnen dann ermöglich, punktgenau zu prüfen. Entsprechend aufwändiger und somit träger kann aber auch die Überprüfung werden.

Wir haben nun bereits ein paar Mal von einer Abstandsberechnung gesprochen. Für diese muss natürlich eine Position vorgegeben werden, zu der dann die dynamischen Objekte in Bezug gestellt werden. Diese Position nennt sich Punkt und kann bei selektiertem Node entweder direkt im Attribute-Manager eingetragen oder über den Punkt-Eingang an den Node geleitet werden. Der Objekt-Ausgang des Nodes liefert uns ab jetzt fortlaufend das dynamische Objekt, das der angegebenen Position am nächsten liegt. Alternativ hierzu können wir uns auch das Dynamics Body-Tag dieses Objekts (Tag-Port) oder dessen Index-Nummer (Objektindex-Port) abfragen. Letzteres funktioniert natürlich nur, wenn als Objekt im Node ein Objekt angegeben wurde, das Kopien erzeugt. Zudem steht auch Punktindex als Ausgang zur Verfügung. Sie finden dann dort direkt die Punktnummer, die am nächsten an der vorgegebenen Position liegt. Welcher Punkt dies ist, hängt maßgeblich von der Modus-Einstellung ab. Nur wenn Sie Modus Form aktiviert haben und Statisches Mesh oder Bewegtes Mesh in den Dynamics Body-Tags benutzen, kommt eine echte Punktnummer des dynamischen Objekts heraus. Ansonsten ist es die Punktnummer des umgebenden Quaders (Modus Bounding Box) oder der Mittelpunkt des Objekts (Modus Mitte).

Brauchen Sie keine Indexnummern, sondern sind eher an einer echten Position innerhalb des Objekts interessiert, die am nächsten an Punkt liegt, benutzen Sie stattdessen die Ausgänge für Position oder Lokale Position. Position ist die globale Position, also im Welt-System, Lokale Position gibt die Punktposition bezogen auf das jeweilige Objektachsensystem wieder. Zudem lässt sich auch jederzeit der Abstand ausgeben, der zwischen Punkt und dem dazu am nächsten liegenden dynamischen Objekt berechnet wurde. Diese Abstand ist ebenfalls wieder abhängig von der Modus-Einstellung, kann also zur Mitte, zu den Eckpunkten der Bounding Box oder zu den Punkten der gewählten Kollisions-Form bezogen sein. Die wichtigsten Eingänge des Nodes finden Sie ebenfalls als Parameter im Attribute-Manager wieder. Zusätzliche Ports ermöglichen Ihnen aber auch noch, ein bestimmtes Objekt aus einer geklonten dynamischen Gruppe zu filtern. Haben Sie also z. B. ein Array- oder Klon-Objekt also Objekt im Node gelistet, können Sie über den Objektindex-Eingang ein bestimmtes Objekt aus dieser Gruppe auswählen. Das erste Objekt so einer Gruppe hat immer die Indexnummer 0. Praktisch hat dies jedoch kaum einen Nutzen, denn wenn Sie nur ein dynamisches Objekt überprüfen, ist dies natürlich immer am nächsten an der Punkt-Position dran. Dies könnte höchstens bezüglich der Auswertung der Position nützlich sein. Gleiches gilt für die Nutzung eines einzelnen Objekts im Objekt-Feld des Nodes, bzw. an dessen Objekt-Eingang.

Dieses Prinzip wiederholt sich nun noch einmal für die Objekt ausschließen-Vorgabe. Ist dort ein dynamische Klone erzeugendes Objekt zugewiesen, können Sie über den Index ausschließen-Eingang ein einzelnes Objekt dieser Gruppe wieder für die Überprüfung freigeben. Lassen Sie uns eine kleine Beispielszene bauen, an der wir diesen Node ausprobieren können. Sie finden dazu in Abbildung 4.81 eine Anregung.

Animation in Cinema 4D - Beispielszene zum Testen des Dynamics Annäherung-Tags

Abbildung 4.81: Beispielszene zum Testen des Dynamics Annäherung-Tags

Dort wurde eine Kugel über ein Array-Objekt kreisförmig dupliziert. Eine Scheibe wird als Boden darunter platziert. Schließlich liegt ein schlanker Quader über der Scheibe. An dem einen Ende des Quaders liegt ein roter Kegel. Dessen Position soll uns als Punkt für den Dynamics Annäherung-Tag dienen.

Wie Sie in der linken Hälfte der Abbildung 4.81 erkennen können, trägt die Scheibe ein Dynamics Body-Tag, das die Scheibe ausschließlich als Kollisionsobjekt behandelt. Die Scheibe wird daher nicht durch die Gravitation oder die Kollision mit anderen Objekten bewegt. Das Array-Objekt trägt ein ganz normales Rigid Body-Tag, damit die darüber erzeugten Kugeln dynamische Eigenschaften erhalten. Die Form-Einstellung in den Kollision-Einstellungen dieses Tags steht auf Automatisch. Die Kugeln sind dadurch von einer unsichtbaren Kugelform für die Kollisionsberechnung umgeben. Geben Sie nun dem Würfel über einen Rechtsklick auf dessen Namen im Objekt-Manager ein Cinema 4D Tags > XPresso-Tag. Tatsächlich können Sie dieses Tag aber auch einem anderen Objekt der Szene geben. Die folgende Abbildung 4.82 gibt bereits die Schaltung wieder, die wir nun besprechen werden.

Animation in Cinema 4D - Die XPresso-Schaltung der Beispielszene

Abbildung 4.82: Die XPresso-Schaltung der Beispielszene

Sie erkennen in der Abbildung an den oberen drei Nodes, dass dort die aktuelle Bildnummer der Animation in einem Bereichswandler zu einem Winkel umgerechnet wird. Dieser Winkel wird als Heading-Winkel an den Würfel durchgereicht. Dies bewirkt eine kontinuierliche Drehung des Würfels, ähnlich eines Sekundenzeigers an einer Uhr.

In der rechten Hälfte von Abbildung 4.82 ist die Art der Umrechnung zu erkennen. Dort werden hundert Bilder zu 6.283 also 2*PI und somit zu einer vollen Umdrehung. Diese Umrechnung bringt den Würfel also dazu, sich in 100 Bildern um 360° zu drehen.

Die untere Hälfte der XPresso-Schaltung dient ausschließlich der Überprüfung, welche der Kugeln unserem Kegel auf dem rotierenden Würfel am nächsten kommt. Dafür wird die globale Position des Kegels als Punkt an den Dynamics Annäherung-Node geleitet. In diesem ist nur die Scheibe bei Objekt ausschließen eingetragen. Da ansonsten keine anderen dynamischen Objekte in der Szene vorhanden sind, werden automatisch das Array-Objekt und die durch dies erzeugten Kopien bearbeitet. Der Modus des Dynamics Annäherung-Nodes wird auf Form gestellt, damit die Berechnung präziser erfolgt. Am Objekt-Ausgang des Dynamics-Nodes liegt nun immer die Kugel an, die dem Kegel am nächsten liegt. Was jedoch mit dieser Information anstellen? Wie wäre es z. B. wenn diese Kugel nahe dem Kegel automatisch nach oben gestoßen würde, damit sie praktisch über den rotierenden Würfel hüpft? Dies können wir mit dem nächsten Dynamics-Node erreichen, der jetzt besprochen wird.

Der Dynamics Body Status-Node

Über diesen speziellen Node lassen sich alle wichtigen Informationen eines dynamischen Objekts abfragen. Nachdem Sie ein dynamisches Objekt im Dialog des Nodes oder über den Objekt-Eingang verlinkt haben, können Sie auf der Ausgang-Seite z. B. die aktuelle Geschwindigkeit, Beschleunigung oder Masse abfragen. Über die Eingang-Seite des Nodes können derartige Eigenschaften aber auch über XPresso gesetzt werden. Interessant ist da z. B. der Eingang für Kraft hinzufügen, den Sie bereits in Abbildung 4.82 erkennen können. Damit können Sie einem dynamischen Objekt einen Schubs in eine bestimmte Richtung geben. Wir müssen hier also einen Vektor benutzen, der die Richtung und den Betrag dieser Kraft vorgibt. Da die Kugeln in der Nähe des Kegels nach oben hüpfen sollen, kommt nur eine Kraft infrage, die einen Y-Anteil hat. Die Kraft muss in diesem Fall groß genug sein, dass Sie die gleichzeitig wirkende Gravitation überwindet. Hier müssen Sie also etwas experimentieren, da diese Kraft auch abhängig ist von der Masse und somit der Größe der Kugeln. In meinem Fall reichte eine Kraft von 40 aus, also der Vektor 0, 40, 0, um die Kugeln anzuheben. Diesen Vektor können Sie einfach über einen Konstante-Node an den Eingang leiten.

  • Wenn Sie nun die Animation ablaufen lassen, sollten Sie den kreisenden Würfel beobachten können und die Kugeln jeweils über den Kegel hüpfen sehen. Sofern dies nicht zu beobachten ist, sind zwei Dinge zu überprüfen:
  • Korrigieren Sie den Kraft-Vektor und verstärken Sie diesen, bis sich die Kugeln bewegen.
    Reduzieren Sie Linearer Geschwindigkeitsschwellwert in den Dynamics-Einstellung des Rigid Body-Tags am Array-Objekt auf 0. Nur so bleiben alle Kugeln aktiv, egal wie lange sie bereits still auf der Scheibe liegen. Ansonsten werden ruhende Kugeln nach zwei Sekunden dynamisch deaktiviert und können über XPresso nicht mehr angestoßen werden. Schließlich handelt es sich bei unserer Szene nicht um Kollisionen, denn der Würfel ist kein dynamisches Objekt.

Damit sind auch diese Nodes besprochen.

Über den Autor

Dieses Tutorial ist ein Auszug aus dem CINEMA 4D-Kompendium zur Animation von Arndt von Koenigsmarck. Das komplette C4D-Kompendium mit über 950 Seiten Know-how als Download (PDF) gibt es hier: CINEMA 4D-Kompendium – Die Animation.

Wir empfehlen:
Maxon BodyPaint 3D-Video-Training

Unsere Empfehlung für dich

Cinema 4D für Einsteiger – für R16/R17/R18

Cinema 4D für Einsteiger – für R16/R17/R18

Überschreite mit unserem neuen und sagenhaften Standardwerk für Cinema 4D die Grenzen der Wahrnehmung. Das Release 16 ist das beste Update, das Maxon je herausgebracht hat!

  • Neue Funktionen von R16, R17 und R18 im Detail erklärt
  • In über 15,5 Stunden Video-Training Cinema 4D von A bis Z ergründen
  • PLUS 850 PDF-Seiten und Arbeitsmaterialien
  • Maximales Kreativtraining: Nachbau des Covermotivs

Zum Training