Animation-Tags und XPresso: Die Cinema 4D-Tags – XPresso – Teil 06

Tutorials 28. Dezember 2015 – 0 Kommentare

Punkte-Wichtung-Node

Dieser Funktionsknoten ist dem vorgenannten Punkt-Node stark verwandt. Auch hier werden Punkte über einen Index-Wert angesteuert. Nur diesmal geht es bei der Ausgabe um die Wichtung des Punkts, also die sogenannte Vertex-Map bzw. Punkte-Wichtung. Daher wird am Tag-Eingang dieses Nodes auch kein Objekt sondern ein Vertex-Map-Tag erwartet, das über seinen Objekt-Ausgang angeschlossen werden muss. Sie erstellen so einen Vertex-Map-Node durch einfaches Drag&Drop des jeweiligen Tags aus dem Objekt-Manager direkt in die XPresso-Schaltung. Am Wert-Ausgang des Punkte-Wichtung-Nodes liegt dann die Wichtung des über den Index-Wert angesprochenen Punkts an. Beachten Sie, dass die Prozentwerte zwischen 0% und 100% an der Vertex-Map am Wert-Ausgang zu Fließkommazahlen zwischen 0.0 und 1.0 werden. Die Abbildung 2.60 stellt so eine Situation dar, bei der die Wichtung eines Punkts ausgelesen wird.

Animation in Cinema 4D - Vertex-Maps lassen sich auslesen und setzen.

Abbildung 2.60: Vertex-Maps lassen sich auslesen und setzen.

Wie beim Punkt-Node kann alternativ hierzu auch ein Wert-Eingangsport erstellt werden über den sich dann auch Wichtungswerte in ein Vertex-Map-Tag schreiben lassen. Dies eröffnet natürlich wiederum spannende Möglichkeiten, z. B. zur zufälligen Variation dieser Werte während einer Animation. Auf der Ausgangsseite des Nodes steht weiterhin ein optionaler Anzahl-Port zur Verfügung, der zu jeder Zeit die Gesamtzahl der Wichtungen an dem Vertex-Map-Tag ausgibt. In der Regel wird dieser Wert der Anzahl der Punkte am Objekt entsprechen.

Ray-Kollision-Node

Die Ray-Kollision könnte man auch mit Strahl-Durchdringung übersetzen. Sofern dieser Node mit zwei Koordinaten gefüttert wird, kann er die Durchdringungspunkte dieser Linie mit einem Polygon-Objekt berechnen. Dies ist sehr praktisch, um z. B. Objekte auf einer Oberfläche zu platzieren. Aus dieser Funktionalität ergeben sich automatisch die drei Eingänge am Node, die wir mit Werten beliefern müssen. Objekt steht wie üblich für ein Polygon-Objekt, an dem wir die Kollisionsberechnung durchführen möchten. Die Vektor-Eingänge für Ray-Punkt1 und Ray-Punkt2 stehen für die Start- und Endpunkte der Linie, entlang derer nach Durchdringungen mit dem Objekt gesucht wird.

Kommt es zu einer Durchdringung, steht am Kollision-Ausgang des Nodes ein boolesches TRUE an, ansonsten FALSE. Wenn Sie weitere Informationen zu der Kollision benötigen, wie z. B. die exakte Position des Auftreffpunkts oder die Oberflächennormale an dieser Stelle, müssen Sie die Option für Nur testen am Node ausschalten. Sie finden diese bei selektiertem Node im Attribute-Manager.

Solange diese Option aktiv ist, wird ansonsten nur der Kollision-Ausgang am Node brauchbare Ergebnisse liefern. Beachten Sie dies bei den nachfolgenden Erläuterungen zu den übrigen Ausgang-Ports. Der Abstand-Ausgang liefert im Fall einer erkannten Kollision die Länge der Wegstrecke zwischen der Position des Ray-Punkt1 und der Auftreff-Position des Kollisionsstrahls auf dem Objekt. Hierbei handelt es sich also um die aus Sicht von Ray-Punkt1 erste Kollision mit dem Objekt. Bei Volumenkörpern können natürlich auch mehrere Durchdringungspunkte entstehen. Es wird jedoch immer nur der erste davon berechnet und über die Ports ausgegeben. Die exakte Position dieser ersten Kollisionsstelle auf der Oberfläche wird am Ausgang Auftreff-Position ausgegeben. Ob diese Position global oder lokal errechnet wird, legen Sie über die Option Globale Koordinaten bei selektiertem Node im Attribute-Manager fest.

Der Port für den Flächen-Index stellt zusätzlich die Indexnummer des aus Sicht von Ray-Punkt1 zuerst getroffenen Polygons zur Verfügung. Sie wissen ja bereits von den Erläuterungen des Polygon-Nodes her, dass alle Flächen an Polygon-Objekten durchnummeriert sind und dass dabei N-Gone keine Rolle spielen. Intern bestehen alle Oberflächen nur aus Drei- und Vierecken. Die Flächen-Normale kennen Sie ebenfalls bereits vom Polygon-Node. Dabei handelt es sich um einen normierten Vektor, der senkrecht auf der Außenseite der Polygone steht. Bei diesem Ausgang liegt daher die Senkrechte der aus Sicht von Ray-Punkt1 zuerst vom Strahl durchdrungenen Polygonfläche an. Wenn Sie stattdessen lieber eine interpolierte Normale erhalten möchten, deren Richtung also durch die benachbarten Flächen beeinflusst und geglättet wird, wählen Sie besser den Ausgang für die Phong-Normale. Das Ausmaß dieser optischen Glättung zwischen den angrenzenden Polygonen wird über das Phong-Tag gesteuert, das Sie in der Regel rechts neben den Objekten im Objekt-Manager finden. Die Einstellungen dort haben also Einfluss auf die berechnete Phong-Normale. Je kleiner der Glätten bis-Winkel im Phong-Tag angegeben wird, desto härter abgegrenzt erscheinen die Polygone auf der Oberfläche und desto ähnlicher werden sich Flächen-Normale und Phong-Normale. Beachten Sie, dass sowohl die Flächen-Normale als auch die Phong-Normale ebenfalls von der Globale Koordinaten-Option des Nodes beeinflusst werden. Beide Normalen können also wahlweise relativ zum Objekt- oder Welt-Achsensystem berechnet werden.

Schließlich steht uns noch ein Rückseite-Ausgang am Ray-Kollision-Node zur Verfügung, der ein boolesches TRUE oder FALSE liefert. Wie Sie wissen, hat jedes Polygon eine Vorder- und eine Rückseite. Ein positives Signal an diesem Port gibt somit an, dass die erste Kollision aus Sicht der Position Ray-Punkt1 die Rückseite eines Polygons ist. Um einen möglichen Nutzen dieses Nodes zu demonstrieren benutze ich ein konvertiertes Landschaft-Grundobjekt und zwei Null-Objekte. Diese werden so platziert, dass ein Null-Objekt über und eines unter der Landschaft liegt. Auf diese Weise können wir durch die gedachte Verbindungslinie zwischen beiden Null-Objekten eine Kollision auf der Landschaft erwarten.

Um diese Kollision auch überprüfen zu können, erzeugen wir ein Kugel-Grundobjekt und verkleinern dessen Radius so, dass es in einer passenden Relation zur Landschaft steht. Die Kugel könnte ja z. B. für ein Fahrzeug stehen, das wir über die Landschaft bewegen möchten. Erzeugen Sie an einem dieser Objekte ein XPresso-Tag und ziehen Sie anschließend die beiden Null-Objekte und die Landschaft in den noch leeren XPresso-Editor hinein. An den Nodes der Null-Objekte wählen Sie jeweils den Ausgang für die Globale Position, am Node der Landschaft den Objekt-Ausgang.

Animation in Cinema 4D - Automatische Platzierung eines Objekts auf der Landschaft
Abbildung 2.61: Automatische Platzierung eines Objekts auf der Landschaft

Erstellen Sie nun ein Ray-Kollision-Tag und verbinden Sie die Objekt- und Globale Position-Ausgänge der übrigen Node mit den entsprechenden Eingängen (siehe Abbildung 2.61). Vergessen Sie nicht, die Option für Nur Testen am Ray-Kollision-Node auszuschalten. Die Option für Globale Koordinaten sollte hingegen angeschaltet bleiben. Ziehen Sie dann die Kugel aus dem Objekt-Manager in die Schaltung und legen Sie dort die Eingangsports für An und Globale Position an. Der An-Port ist hier recht praktisch, denn darüber lassen sich Nodes auch ausschalten, sofern ein FALSE-Signal eingeleitet wird. Durch Verbindung mit dem Kollision-Port wird die Kugel nur noch dann durch die Schaltung verändert, wenn eine Kollision des Strahls mit der Landschaft zustande kommt. Der Eingang für die Globale Kollision wird schließlich mit dem Ausgang der Auftreff-Position verbunden.

Wie Sie Abbildung 2.61 entnehmen können, habe ich das untere Null-Objekt unter dem oberen Null-Objekt gruppiert, um beide Objekte gemeinsam verschieben zu können. Wenn nun das obere der beiden Null-Objekte bewegt wird, sollten Sie gleichzeitig auch die Kugel über die Landschaft verschieben können. Dabei wird der Mittelpunkt der Kugel exakt auf den Kollisionspunkt gelegt. Mit Hilfe der ebenfalls errechneten Phong-Normale und dem bekannten Kugel-Radius könnten wir sogar dafür sorgen, dass die Kugel immer perfekt auf der Landschaft steht. Da dafür jedoch mathematische Nodes benötigt werden, die wir bislang noch nicht besprochen haben, möchte ich an dieser Stelle noch auf eine Vertiefung verzichten. Daher nur soviel: Sie müssten zu dem Auftreff-Punkt die mit dem Kugel-Radius multiplizierte Phong-Normale hinzuaddieren (siehe Abbildung 2.62).

Animation in Cinema 4D - Ergänzte Schaltung, um die Kugel immer exakt auf der Landschaft zu platzieren.

Abbildung 2.62: Ergänzte Schaltung, um die Kugel immer exakt auf der Landschaft zu platzieren.

Referenz-Node

Wenn Sie sich an die Beschreibung des Objekt-Nodes erinnern, so konnten wir dort bereits ausgehend von dem Objekt, welches das XPresso-Tag trägt, eine Pfad-Angabe machen, um ein bestimmtes Objekt in der Hierarchie des Objekt-Managers zu suchen. Der Referenz-Node funktioniert nach dem exakt gleichen Prinzip. Hier bekommen wir jedoch die Möglichkeit, ein beliebiges Objekt, Material oder Tag als Ausgangspunkt für den Suchpfad nutzen zu können. Dafür ist nämlich der Instanz-Eingang am Node gedacht. Der ebenfalls Instanz genannte Ausgang liefert dann das Suchergebnis, sofern der verwendete Pfad gültig ist. Um also auf Daten eines gefundenen Objekts, Tags oder Materials zugreifen zu können, muss dieser Instanz-Ausgang mit dem Objekt-Eingang eines zum Suchergebnis passenden Node-Typ verbunden werden. Ist also ein Material am Instanz-Eingang des Referenz-Nodes angeschlossen, muss auch ein Material-Node am Instanz-Ausgang des Nodes hängen. Die Abbildung 2.63 gibt dazu ein klassisches Beispiel. Dort wird der Würfel als Instanz zugewiesen und der Pfad D verwendet. D steht dabei für Down und somit für das Hinabsteigen einer Hierarchiestufe. Das Kürzel U für Up hätte den gegenteiligen Effekt, also das Hinaufsteigen einer Hierarchiestufe. Die Buchstaben N und P stehen bei Pfadangaben für Next und Previous und somit für das nachfolgende oder vorherige Element auf der gleichen Hierarchiestufe. Diese Kürzel U, D, N und P können in beliebiger Kombination und Anzahl als Pfad verwendet werden. In unserem Beispiel der Abbildung 2.63 wird schlicht vom Würfel aus eine Hierarchiestufe nach unten geschaut und dort somit die Kugel gefunden, deren Namen in der Schaltung ausgegeben wird.

Animation in Cinema 4D - Referenzierung eines Objekts

Abbildung 2.63: Referenzierung eines Objekts

In Abbildung 2.64 sehen Sie, dass dieses Prinzip auch problemlos mit Materialien funktioniert. Dort würde das erste Material aus dem Material-Manager als Instanz verwendet und der Pfad mit NN angegeben. Dies steht für Next Next und somit für das zweite Element nach unserem Material. Folglich liefert der Referenz-Node das Material Mat.2. In diesem Fall wäre die Verwendung der Kürzel U und D nicht zielführend, da die Materialien alle in einer gleichwertigen Gruppe liegen und hier keine Hierarchie besteht. Gleiches gilt für die Nutzung mit Tags. Beachten Sie, dass bei ungültigen Pfaden automatisch die Instanz des Eingangs an den Instanz-Ausgang durchgeleitet wird.

Animation in Cinema 4D - Referenzierung von Materialien

Abbildung 2.64: Referenzierung von Materialien

Sound-Node

Wir haben im ersten Kapitel bereits gelernt, dass Cinema 4D auch sehr gut mit Tönen umgehen kann. Wir hatten dort u. a. Lautsprecher-Objekte und Sound-Spuren besprochen, mit denen Töne während einer Animation wiedergegeben und auch untereinander abgemischt werden konnten. Diese Sounds ließen sich somit auch rendern und zur Vertonung einer Animation nutzen. Ganz so weit geht da dieser Sound-Node nicht, denn er ist nur für die Wiedergabe von Tönen im Editor gedacht. Interessant kann dieser Node dennoch sein, wenn es um die Analyse einer Tondatei geht, denn es stehen viele Optionen für das individuelle Abtasten der geladenen Datei zur Verfügung.

Damit der Node überhaupt arbeiten kann, muss natürlich erst einmal eine Tondatei geladen werden. Dies ist nicht über Eingang-Ports zu erreichen, sondern nur direkt über die Einstellungen des Nodes im Attribute-Manager. In der Node-Rubrik finden Sie dort ein Feld für den Dateinamen und rechts daneben die bekannte Schaltfläche mit den drei Punkten, um einen Dateidialog zum Laden der Sounddatei zu öffnen. Dies kann also z. B. eine MP3-Datei sein. Sofern diese Datei geladen wurde, können Sie durch Anlegen eines booleschen TRUE-Signals am Abspielen-Eingang des Nodes die Wiedergabe starten. Die Wiedergabe endet sofort, wenn dieses Signal zu FALSE wechselt, selbst wenn die Datei noch nicht vollständig abgespielt wurde. Ein erneutes TRUE-Signal startet die Wiedergabe wieder am Anfang der Tondatei.

Wenn Sie die Geschwindigkeit der Wiedergabe beeinflussen möchten, wenn also einen Musiktitel z. B. schneller oder langsamer als normal ausgewertet werden soll, lässt sich dies über den Zeit-Eingang realisieren. Normalerweise läuft die Wiedergabe in realer Zeit ab, eben so, wie die Tondatei aufgenommen wurde. Dabei muss noch nicht einmal die Zeit durch Abspielen der Animation im Editor ablaufen. Sie könnten jedoch die Zeit z. B. durch Multiplikation eines Zeit-Nodes mit einem Zahlenwert verlangsamen oder beschleunigen. Dabei muss dann jedoch die Animation tatsächlich abgespielt werden. Beachten Sie, dass dabei nur der Zeit-Eingang am Node belegt sein sollte. Die Wiedergabe des Tons über ein positives Abspielen-Signal findet nämlich immer in der normalen Geschwindigkeit statt. Zudem ist es so, dass beim Abspielen einer Tondatei über das Anlegen einer eigenen Zeit, der Ton nicht akustisch wiedergegeben wird. Sie können diesen Modus also nur Nutzen, um z. B. Amplituden an den Ausgängen des Nodes abzugreifen.

Eine weitere Möglichkeit, die Datei individuell auszulesen ermöglicht der Sample-Eingang. Samples sind im Prinzip die kleinsten Tonbausteine, aus denen sich z. B. der Musiktitel oder das geladene Geräusch zusammensetzt. Je nach Qualität und Länge der Datei kann die Anzahl der Samples dabei schnell in die Millionen gehen. Einen Überblick über diese Gesamtzahl der Samples erhalten Sie daher über den Samples-Ausgang am Node. Um individuelle Samples anzusteuern steht der Samples-Eingang zur Verfügung. Eine fortschreitende Erhöhung dieses Eingangswerts kann daher ebenfalls zum individuellen Wiedergeben der Tondatei genutzt werden. Es gelten dabei die gleichen Einschränkungen wie beim Zeit-Eingang des Nodes. Der Ton ist also auch hierbei nicht tatsächlich zu hören. Zudem funktionieren Kombinationen aus Abspielen, Zeit und Sample-Eingang nicht. Sie sollten sich daher für nur eine dieser drei Optionen bei der Ton-Auswertung entscheiden.

In direktem Zusammenhang zu den Samples steht auch der Probe-Parameter in den Node-Einstellungen des Attribute-Managers. Dieser legt fest, wie viele Samples bei der Berechnung der Ausgänge Links und Rechts jeweils zusammengefasst werden. Bei Links und Rechts handelt es sich schlicht um die Lautstärken der Tondatei auf dem linken und rechten Kanal. Da die Lautstärke einer geschwungenen Kurve, sind auch negative Werte möglich. Der Probe-Wert führt bei ansteigender Größenordnung zu einer Dämpfung der Amplitude und somit zu einer Abschwächung der Lautstärke. Zudem werden dadurch Spitzen und Höhen herausgefiltert. Dies ist beim normalen Abspielen des Tons übrigens nicht zu hören, sondern nur an den Werten zu beobachten, die an den Ausgängen des Nodes anliegen.

Die geladene Tondatei kann in den Parameter-Einstellungen des Nodes im Attribute-Manager zudem in eine Anzahl an Frequenzbändern eingeteilt werden. Je nach Frequenzumfang der Tondatei lassen sich dadurch z. B. Höhen, Mitten und Bässe isolieren. Über den Eingang-Port Frequenzband können Sie nämlich gezielt eines der Frequenzbänder innerhalb der eingestellten Anzahl auswählen. Sicherlich am übersichtlichsten ist die Nutzung nur weniger Frequenzbänder, bei denen Sie dann auch durch Auswahl über den Frequenzband-Eingang große Unterschiede bei den ausgegebenen Werten erhalten. Entsprechend der Auswahl des Frequenzbands stehen Ihnen an den Ausgängen für Linke Bandamplitude und Rechte Bandamplitude die Amplituden der Lautstärken beider Kanäle in diesem Frequenzband zur Verfügung. Die Werte schwingen hier also ebenfalls im positiven und negativen Wertebereich, wie bei den Ausgängen für Links und Rechts.

Schließlich können Sie natürlich noch die Länge des geladenen Musikstücks abfragen. Der Länge-Ausgang gibt diese in Sekunden an. So könnten Sie also die Gesamtzahl der Samples durch die Länge der Tondatei teilen, um an die Samplerate pro Sekunde zu gelangen. Bei einem Musikstück in CD-Qualität werden Sie dabei einen Wert von ca. 44100 erhalten, also von 44,1 kHz (siehe Abbildung 2.65).

Animation in Cinema 4D - Ermittlung der Samplerate pro Sekunde

Abbildung 2.65: Ermittlung der Samplerate pro Sekunde

Lassen Sie uns zum Abschluss der Besprechung dieses Nodes noch eine etwas sinnvollere Anwendung finden. Wie wäre es mit der Darstellung eines grafischen Equalizers, also eines Geräts, das die Frequenzen von Tönen anschaulich macht. Suchen Sie sich dafür zuerst ein passendes Musikstück aus und stellen Sie sicher, dass dieses in einem Datenformat wie AIFF, WAVE oder MP3 vorliegt, das der Sound-Node verarbeiten kann. Die Balken des Equalizers können wir mit einfachen Würfeln gut genug annähern. Erzeugen Sie also ein Würfel-Grundobjekt und verkleinern Sie dieses auf die Kantenlänge 20 cm in jeder Richtung, damit unsere Szene nicht zu groß wird.

Animation in Cinema 4D - Links die duplizierten und gruppierten Würfel, rechts die Auflistung dieser Würfel im Objektliste-Node

Abbildung 2.66: Links die duplizierten und gruppierten Würfel, rechts die Auflistung dieser Würfel im Objektliste-Node

Über die Duplizieren-Funktion im Menü Werkzeuge > Objekte anordnen lassen Sie 15 echte Kopien dieses Würfels erstellen und in einer Reihe nebeneinander anordnen. Den Original-Würfel können Sie anschließend als oberstes Objekt unter dem Null-Objekt einsortieren, das durch die Vervielfältigung im Objekt-Manager entstanden ist (siehe linke Seite der Abbildung 2.66). Geben Sie anschließend dem Null-Objekt ein XPresso-Tag und erzeugen Sie in dieser Schaltung zuerst einen Objektliste-Node. Diesen finden Sie unter Neuer Node > XPresso > Iterator. Dieser Node stellt eine Liste im Attribute-Manager zur Verfügung, in die Sie alle Würfel per Drag&Drop aus dem Objekt-Manager hineinziehen (siehe rechte Seite der Abbildung 2.66). Wir haben diesen Node zwar bislang noch nicht besprochen, aber die Funktion ist schnell erläutert. Die Objektliste gibt bei jeder Aktualisierung der Schaltung alle darin aufgeführten Objekte der Reihe nach aus. In diesem Zusammenhang hatten wir bereits den Objekt-Index-Node besprochen, der solche Listen durchzählen kann und bei jedem Objekt automatisch die entsprechende Listennummer mit ausgibt.

Verbinden Sie diesen mit dem Objekt-Ausgang der Objektliste. Wir erhalten dadurch eine fortschreitende Nummer mit jedem ausgegebenen Objekt. Sollte perfekt funktionieren, diesen Wert für die Auswahl des Frequenzbands einzusetzen, oder? Wir bekämen dann für jedes Objekt ein separates Frequenzband, sofern die Gesamtanzahl der Frequenzbänder mit der Anzahl der Würfel übereinstimmt.

Erzeugen Sie also einen neuen Sound-Node und laden Sie dort Ihre Tondatei ein. Stellen Sie dann die Frequenzbänder über die Parameter-Rubrik des Attribute-Managers auf 16, also entsprechend der Würfelanzahl ein. Aktivieren Sie am Sound-Node zusätzlich den Eingang für Frequenzband, um dort den Index-Ausgang des Objekt-Index-Nodes anschließen zu können. Jeder Würfel fragt dadurch ein eigenes Frequenzband ab. Auf der Ausgang-Seite des Sound-Nodes könnten Sie jetzt Linke Bandamplitude oder Rechte Bandamplitude anlegen, je nachdem, ob Sie der linke oder rechte Kanal interessiert. Diese Amplitude können wir nun zur Skalierung der Würfel benutzen. Dabei muss jedoch bedacht werden, dass hier auch negative Werte ausgegeben werden. Wir sollten daher die ausgegebenen Werte noch etwas bearbeiten, bevor diese an die Würfel übergeben werden. Auch hier muss ich auf drei noch nicht beschriebene Nodes zurückgreifen, deren Funktionen jedoch ebenfalls einfach zu verstehen sind.

Zuerst benötigen wir einen Zeit-Node, den Sie ebenfalls in der Gruppe der Allgemeinen XPresso-Nodes finden. Dieser stellt uns die aktuelle Zeit in der Zeitleiste zur Verfügung. Verbinden Sie dessen Ausgang mit dem Zeit-Eingang des Sound-Nodes, damit die Tondatei auch ohne aktive Abspielen-Option wiedergegeben wird. Dann benötigen wir einen Mathe-Node. Dieser stellt die typischen Grundrechenarten, wie Addieren, Multiplizieren, Dividieren und Subtrahieren zur Verfügung. Da der Datentyp am Node umgeschaltet werden kann, lassen sich auf diesem Wege Vektoren z. B. ebenso addieren, wie „normale“ Zahlen. Sie finden den Mathe-Node in der Gruppe Neuer Node > XPresso > Berechne. Schalten Sie diesen Node über den Attribute-Manager um auf die Funktion Multiplizieren. Der Datentyp Real kann unverändert bleiben, da die Amplitude des Sound-Nodes den gleichen Datentyp hat. Verkabeln Sie nun den oberen Eingang des Mathe-Nodes mit dem gewählten Bandamplitude-Ausgang des Sound-Nodes. Über den Zahlenwert am unteren Eingang des Mathe-Nodes können Sie ab sofort die Intensität der Amplitude skalieren. Es fehlt nur noch die Beschränkung der Werte auf den positiven Wertbereich. Dies erledigt ein Absolut-Node, den Sie an den Ausgang des Mathe-Nodes hängen. Dieser Node ist ebenfalls in der Berechne-Gruppe der XPresso-Nodes zu finden. Dessen Ausgang muss jetzt nur noch an die Würfel geleitet werden. Dazu ziehen Sie einen beliebigen Würfel aus dem Objekt-Manager in die Schaltung und aktivieren an diesem Node die Eingänge für Objekt und Größe.Y. Beachten Sie, dass mit Größe.Y der Größe-Parameter des Würfel-Grundobjekts gemeint ist und nicht die Größe des Objektachsensystems. Sie finden diesen Port unter den Objekt-Eigenschafen. Die Größe.Y verknüpfen Sie mit dem Ausgang des Absolut-Nodes und den Objekt-Eingang mit dem Instanz-Ausgang des Objekt-Index-Nodes. Die Abbildung 2.67 stellt Ihnen diese komplette Schaltung noch einmal zur Kontrolle vor. Darunter erkennen Sie ebenfalls, welcher Effekt zu erwarten ist. Die Würfel sollten beim Abspielen der Animation in Bewegung geraten und passend zum Frequenzumfang der Tondatei ihre Größe ändern. Fällt die Größenänderung der Würfel zu gering aus, editieren Sie einfach den unteren Wert am Mathe-Node. Ich habe hier z. B. mit einer Größenordnung von 500 gearbeitet. Das hängt aber stark von der Lautstärke und dem Frequenzumfang Ihres Musikstücks ab.

Animation in Cinema 4D - Die fertige Schaltung und ein mögliches Ergebnis

Abbildung 2.67: Die fertige Schaltung und ein mögliches Ergebnis

Speicher-Node

Dieser Node funktioniert ähnlich wie die Speichertiefe und der Zugriff auf vergangene Zustände an einem Objekt-Node. Dieser Node kann sich jedoch beliebige Daten merken und ist dabei nicht an ein bestimmtes Objekt gebunden. Welchen Datentyp sich der Node merken soll stellen Sie in den Node-Einstellungen des Attribute-Managers ein. Dies können z. B. einfache Zahlen, Vektoren oder Matrizen, aber auch ausgefallene Formate, wie z. B. Objekt oder Font sein. Da ist dieser Node gar nicht wählerisch. Was jedoch wichtig ist, bleibt die Wahl der Speichertiefe. Sie kennen diesen Parameter ja bereits vom Objekt-Node. Auch diese Einstellung ist über den Attribute-Manager zu finden und definiert die Anzahl an Werten, die sich der Speicher-Node merken kann. Welcher dieser gemerkten Werte dann an den Ausgang des Nodes geleitet werden soll geben Sie über den Speicherpatz-Eingang am Node vor. Wie gewohnt beginnt dabei die Zählung bei 0 für den ersten Speicherplatz, also für den zuletzt gemerkten Wert. Je höher die Speicherplatz-Nummer ist, desto älter ist der ausgegebene Wert. Wenn Sie programmieren können, kennen Sie dieses Prinzip als LIFO, also Last In – First Out.

Wie kommen nun aber die zu merkenden Werte in den Speicher-Node? Dafür ist der Eingang-Port gedacht. Jeder dort neu ankommende Wert wird in den ersten Speicherplatz geschrieben. Die bereits vorhandenen Werte werden dadurch um einen Speicherplatz nach hinten verschoben. Der letzte Wert in dieser Reihe findet daher keinen freien Speicherplatz mehr und wird folglich vom Node „vergessen“. Die Anzahl an Speicherplätzen ist schließlich beschränkt. Lassen Sie uns auch dazu ein kleines Beispiel bauen.

Ein Würfel-Grundobjekt (in Abbildung 2.68 mit einem roten Punkt markiert) wird über ein Vibrieren-Tag in eine regelmäßige Schwingung entlang der X-Achse gebracht. Würfel-Kopien werden dann entlang der Z-Achse hinter dem vibrierenden Würfel platziert. Diese Kopien sollen dem schwingenden Würfel nun mit einem Zeitversatz folgen. Das Ergebnis dürfte eine schlängelnde Bewegung, wie von einer Schlange sein. Wir ergänzen also ein XPresso-Tag hinter dem vibrierenden Würfel und legen dort aus Neuer Node > XPresso > Iterator eine Objektliste an.

Animation in Cinema 4D - Der mit dem rot markierte Würfel schwingt entlang der X-Achse und zieht die übrigen Würfel zeitversetzt nach.

Abbildung 2.68: Der mit dem rot markierte Würfel schwingt entlang der X-Achse und zieht die übrigen Würfel zeitversetzt nach.

Dieser Node wurde bereits in früheren Beispielen von uns benutzt und stellt im Attribute-Manager eine Liste zur Verfügung, die von uns per Drag&Drop mit den kopierten Würfel gefüllt wird. Diese Liste enthält dann also alle Würfel bis auf den, der die Schaltung und das Vibrieren-Tag trägt.

Der ebenfalls bereits bekannte Objekt-Index-Node liefert uns automatisch Zahlenwerte an seinem Index-Ausgang, die der Listenposition des gerade an der Objektliste ausgegebenen Objekts entsprechen. Dazu muss natürlich der Instanz-Ausgang der Objektliste mit dem gleichnamigen Eingang des Objekt-Index-Nodes verbunden sein.

Nun kommt dann auch der Speicher-Node ins Spiel, denn dessen Speicherplatz-Eingang muss mit dem Index-Ausgang verbunden werden. Wir dürfen jedoch nicht vergessen, auch eine entsprechende Anzahl an Speicherplätzen am Speicher-Node zu reservieren. Jeder kopierte Würfel soll schließlich einen eigenen Wert erhalten. Selektieren Sie also den Speicher und stellen Sie im Attribute-Manager den Wert für die Speichertiefe so ein, dass dieser der Anzahl Ihrer Würfel-Kopien entspricht. Jetzt müssen wir dem Speicher-Node nur noch etwas zum Abspeichern geben. Da kommt in diesem Beispiel ja nur die X-Position des schwingenden Würfels infrage. Ziehen Sie also diesen Würfel in die Schaltung und legen Sie dort den Ausgang für die Globale Position.X an. Dieser Port wird dann an den Eingang des Speichers gehängt. Da es sich bei diesem Wert um den Datentyp Real handelt, müssen wir den Standard-Datentyp des Speicher-Nodes nicht ändern.

Die Schaltung ist damit fast komplett. Die Daten müssen nur noch an die kopierten Würfel zurückgeschrieben werden. Ziehen Sie hierfür einen beliebigen Würfel in die Schaltung und aktivieren Sie an dessen Node die Eingänge für Objekt und Globale Position.X. Der Objekt-Eingang muss mit dem Instanz-Ausgang des Objekt-Index-Nodes verbunden werden. Hier kommen schließlich nacheinander die Würfel aus der Objektliste an. Der zweite noch offene Port gehört an den Ausgang des Speichers. Die komplette Schaltung sollte wie in Abbildung 2.69 aussehen. Wenn Sie nun die Animation im Editor abspielen lassen, sollten Ihre Würfel die beschriebene schlängelnde Bewegung zeigen. Experimentieren Sie ruhig auch mit dem Vibrieren-Tag. Wie wäre es z. B. wenn dort die Option für das Regelmäßige Pulsieren ausgeschaltet wird? Der Effekt erinnert etwas an einen Artisten, der einen Stapel Teller balanciert, oder?

Animation in Cinema 4D - Die komplette Schaltung

Abbildung 2.69: Die komplette Schaltung

Spion-Node

Dieses kleine Helferlein hat eine ähnliche Funktion wie der bereits bekannte Ergebnis-Node. Der Spion wird also in der Regel verwendet, um sich Werte, die zwischen Ports ausgetauscht werden, direkt im XPresso-Editor ansehen zu können. Dies ist auch der eigentliche Unterschied zum Ergebnis-Node, denn der Spion hat auch einen Ausgang-Port, über den der Eingang-Wert durchgereicht wird. Dabei lässt sich der Datentyp aber auch verändern. Ein eingeleiteter Vektor kann im Spion z. B. auch zu einer Real-Zahl werden, wenn dieser Datentyp eingestellt ist.
Der Spion kann daher auch zum Konvertieren von Datentypen verwendet werden. Nur wenn der Datentyp des Spions dem des eingeleiteten Werts entspricht, kommt der Wert auch unverändert wieder am Ausgang an (siehe Abbildung 2.70).

Animation in Cinema 4D - Durchleitung eines Real-Werts am Spion

Abbildung 2.70: Durchleitung eines Real-Werts am Spion

Spline-Node

Dieser Node ist vergleichbar mit dem Polygon- und dem Punkt-Node. Diesmal geht es eben nur um Spline-Objekte die abgefragt werden können. Anders als bei den vorgenannten Nodes sind hierbei jedoch auch parametrische Splines erlaubt und können ebenfalls über den Objekt-Eingang angeschlossen werden. Am Position-Ausgang können Sie dann beliebige Positionen entlang des Splines abfragen. Damit sind dann also nicht die Punkte des Splines gemeint, denn diese könnten Sie auch mit einem Punkt-Node abfragen oder sogar setzten, sondern beliebige Stellen auf dem Kurvenverlauf. Welche Stelle auf der Kurve Sie ausgeben möchten bestimmen Sie über den Offset-Eingang. Dieser ist prozentual zu verstehen, erwartet also am Port Werte zwischen 0.0 und 1.0, wobei 0.0 dem Start und 1.0 dem Ende des Splines entsprechen. Beachten Sie, dass die Berechnung der Positionen entlang eines Splines stark von der gewählten Zwischenpunkte-Interpolation am Spline-Objekt abhängt. Die voreingestellte Angepasst Interpolation konzentriert z. B. die Zwischenpunkte auf Rundungen. Geradlinige Abschnitte werden kaum mit Zwischenpunkten versehen. Dies ist zwar praktisch, um Zwischenpunkte zu sparen bzw. optimiert zu platzieren, die Entfernungsberechnung entlang des Splines wird dadurch jedoch ungenauer. Damit bei einem Offset von 0.25 bzw. von 25% tatsächlich auch die Position nach einem Viertel der Gesamtlänge des Splines berechnet wird, sollten Splines eine gleichmäßige Unterteilung mit Zwischenpunkten aufweisen. Dazu müssen Sie jedoch nicht tatsächlich die Zwischenpunkte-Einstellung des Splines verändern, denn der Spline-Node kann dies auch selbst. Sie finden dazu die Option für Gleichmäßige Verteilung benutzen im Attribute-Manager. Ohne diese Option bleibt die Berechnung des Offsets abhängig von der Form und Zwischenpunkte-Interpolation des Splines.

Wo wir gerade schon bei den Einstellungen des Nodes im Attribute-Manager sind, so finden Sie hier auch den bereits bekannten Matrix-Modus wieder, über den Sie festlegen, ob die Positionen Global, also relativ zum Weltsystem, oder Lokal also bezogen auf das Achsensystem des Splines berechnet werden. Zudem wissen Sie ja sicherlich, dass Splines auch aus mehreren Segmenten bestehen können. Anders wäre z. B. auch die Darstellung des Buchstaben O mit zwei Spline-Kreisen unterschiedlicher Größe in einem einzelnen Spline-Objekt nicht möglich. Die Option Alle Segmente benutzen im Attribute-Manager sorgt dafür, dass die Auswertung des Offset-Werts auf die gesamte Wegstrecke aller Segmente gerechnet wird. Da die Segmente eines Splines jedoch auch über Index-Nummern verfügen, können Sie einzelne Segmente auch gezielt abfragen. Dazu müssen Sie nur den Segment-Eingang am Spline-Node aktivieren und dort die Nummer des gewünschten Segments angeben.

Wie üblich, steht dort die Zahl 0 bereits für das erste Segment eines Splines. Wie viele Segmente das Spline-Objekt überhaupt enthält, lässt sich über den optionalen Segmente-Ausgang abfragen. Zusätzlich kann auch die Länge einzelner Segmente abgefragt werden. Die angezeigte Länge bezieht sich automatisch immer auf das über den Segment-Eingang ausgewählte Spline-Segment. Leider scheint es so zu sein, dass der Node nicht die Gesamtlänge eines Splines berechnen kann, der aus mehreren Segmenten besteht. Zumindest ergibt mein Test mit aktiver Option für Alle Segmente benutzen nur die Länge des jeweils ersten Segments. Vielleicht ist dieser Fehler aber in Ihrer Version bereits behoben. Ansonsten wären Sie gezwungen in so einem Fall, die Längen aller Segmente einzeln abzufragen und zu addieren. Dies ließe sich dann über eine Schleifenschaltung realisieren.

Der ebenfalls optionale Ausgang für Geschlossen liefert das typische TRUE oder FALSE, je nachdem, ob der Spline geschlossen ist oder nicht. Dies entspricht dem Zustand der Spline schließen-Option an den Spline-Objekten. Dennoch kann dies ganz nützlich sein, denn der Node kann ja auch mit noch nicht konvertierten Splines umgehen, bei denen diese Option fehlt. Auf diesem Wege lässt sich also auch an parametrischen Splines erkennen, ob diese eine geschlossene Form haben oder nicht.

Es bleibt dann nur noch der Ausgang für Tangente übrig, der einen Vektor ausgibt. Dabei handelt es sich um einen Richtungsvektor, der die Steigung der Kurve an der über den Offset-Wert bestimmten Stelle angibt. Anders als bei der manuellen Bearbeitung von Spline-Tangenten gewohnt, haben wir es hierbei nur mit einer Richtung zu tun, und nicht zwei separat dreh- und skalierbare Tangentenarmen. Bei der ausgegebenen Tangenten handelt es sich um einen normierten Vektor der in Richtung des nachfolgenden Spline-Abschnitts zeigt.

Lassen Sie uns auch zu diesem Node eine kleine Beispielschaltung bauen. Wie wäre es z. B. mit der gleichmäßigen Platzierung von Objekten auf einem Spline? Auch hierfür benötigen wir wieder etwas Unterstützung von noch nicht besprochenen Nodes, deren Funktionen aber einfach zu verstehen sein sollten. Beginnen Sie damit, eine beliebige Form über einen Spline zu erstellen. Im zweiten Schritt benötigen wir die Objekte, die auf dem Spline verteilt werden sollen. Ich entscheide mich für kleine Kugeln, damit das Endergebnis z. B. einer Perlenkette ähnelt. Wie viele Kugeln vorhanden sind, spielt erst einmal keine Rolle. Die Schaltung wird später so flexibel sein, dass problemlos auch nachträglich noch Objekte hinzugefügt oder entfernt werden können.

Erstellen Sie z. B. hinter dem Spline-Objekt im Objekt-Manager ein neues XPresso-Tag und legen Sie dort zuerst ein Objektliste-Node an. Sie finden dies nach einem Rechtsklick in das Raster des XPresso-Editors unter Neuer Node > XPresso > Iterator. Dieser Node kann von uns im Attribute-Manager mit Objekten gefüllt werden, die dann der Reihe nach als Instanzen ausgegebene werden. Rufen Sie zusätzlich an diesem Node den Ausgang für die Anzahl der gelisteten Objekte auf. Wenn wir von dieser Anzahl eins abziehen und dann eins durch das Ergebnis dieser Subtraktion teilen, erhalten wir automatisch einen Bruchteil von eins, der bei einer gleichmäßigen Verteilung der Objekte den Abstand zwischen den Kopien wiedergibt. Klingt sicherlich komplizierter als es tatsächlich ist. Im Kern benötigen wir nur zwei simple mathematisch Berechnungen, also zwei Mathe-Nodes. Sie finden diese unter Neuer Node > Xpresso > Berechne. Den ersten Mathe-Node schalten Sie auf die Funktion Subtrahieren und verbinden dessen oberen Eingang mit dem Anzahl-Ausgang der Objektliste. Der untere Eingang des Mathe-Node kann über den Attribute-Manager mit dem Wert 1 belegt werden.

Der zweite Mathe-Node benutzt die Funktion Dividieren und den Zahlenwert 1 im oberen Eingang. Der zweite Eingang wird mit dem Ausgang des subtrahierenden Mathe-Nodes verbunden. Wir kennen dadurch also den prozentualen Abstand zwischen den Objekten, der eine gleichmäßige Verteilung gewährleistet. Sie können dies leicht im Kopf durchrechnen, wenn Sie nur mit drei Objekten rechnen. Drei Objekte minus eins ergibt als Ergebnis zwei. Eins geteilt durch zwei ergibt 0,5 bzw. 50%. Zwischen benachbarten Objekten muss also jeweils 50% der Wegstrecke liegen.
Der so errechnete Abstand muss nun nur noch mit der Indexnummer jedes Objekts multipliziert werden, um die endgültige Position auf dem Spline zu erhalten. Wenn wir bei dem Beispiel der drei Objekte bleiben, so hat das erste Objekt traditionell die Nummer 0. Null mal 50% ergibt 0%. Das erste Objekt bleibt daher am Anfang des Splines. Das zweite Objekt trägt die Nummer 1. Eins mal 50% ergibt 50. Das zweite Objekt liegt daher in der Mitte des Splines. Ich denke Sie erkennen die Logik hinter dieser Rechnung.

Wir haben bereits den Node für den Objekt-Index kennengelernt. Verschalten Sie dessen Instanz-Eingang mit dem gleichnamigen Ausgang der Objektliste. Der Index-Ausgang muss nun nur noch wie oben beschrieben mit dem prozentualen Abstand zwischen den Objekten multipliziert werden. Ein dritter Mathe-Node ist also nötig, der diesmal die Funktion Multiplizieren benutzt. Verbinden Sie den Ausgang des dividierenden Mathe-Nodes und den Index-Ausgang des Objekt-Index mit den Eingängen des neuen Mathe-Nodes. Die Reihenfolge an den Eingängen spielt beim Multiplizieren ausnahmsweise keine Rolle.

Nun kommt endlich der Spline-Nodes in Spiel. Erzeugen Sie diesen und ziehen Sie anschließend Ihr Spline-Objekt aus dem Objekt-Manager in die Schaltung. Aktivieren Sie daran den Objekt-Ausgang und verbinden Sie diesen mit dem Objekt-Eingang des Spline-Nodes. Den Eingang für den Spline-Offset verbinden Sie mit dem Ergebnis der Multiplikation. Vergessen Sie nicht am Spline-Node Gleichmäßige Verteilung benutzen zu aktivieren und den Matrix Modus Global zu verwenden. Sofern Ihr Spline nur aus einem Segment besteht sind ansonsten keine weiteren Schritte nötig.

Ziehen Sie abschließend eines der auf dem Spline zu platzierenden Objekte in die Schaltung und verbinden Sie dessen Objekt-Eingang mit dem Instanz-Ausgang des Objekt-Index. Ein zusätzlicher Eingang für Globale Position wird mit dem Position-Ausgang des Spline-Nodes verknüpft. Fertig. Die Abbildung 2.71 zeigt die beschriebenen Schaltung sowie in einer Einblendung ein mögliches Ergebnis. Das praktische an solchen Schaltungen ist, dass der Spline nun beliebig verändert werden kann und die Objekte darauf haften bleiben. Zudem kann die Anzahl und Form der Objekte jederzeit editiert werden. Editieren Sie einfach die Einträge der Objektliste in der Schaltung. Bedenken Sie nur, dass mindestens ein Objekt in der Liste aufgeführt sein muss, damit die Mathe keine Division durch Null generiert.

Animation in Cinema 4D - Fertige Schaltung zum gleichmäßigen Verteilen von Objekten auf einem Spline

Abbildung 2.71: Fertige Schaltung zum gleichmäßigen Verteilen von Objekten auf einem Spline

Spur-Node

Wir haben nun bereits eine Reihe von Nodes besprochen, mit denen Zustände gespeichert werden können. Dies bezog sich jedoch immer nur auf die Vergangenheit, also z. B. zeitlich hinter uns liegende Bewegungen eines Objekts. Der Spur-Node ist da sehr viel flexibler, denn er ermöglicht uns Keyframe-Animationen zu beliebigen Zeitpunkten auszulesen. Das mag dann auch schon der einzige Nachteil sein, denn über andere Schaltungen oder Tags erzeugte Animationen sind hierüber nicht zu erfassen. Es müssen traditionelle Key-Animationen sein. Dafür unterliegen wir aber keiner Beschränkung, um was für eine Animation es sich dabei handelt. Es können also simple Position-Animationen ebenso sein, wie Parameter-Animationen.

Der Spur-Node benötigt hierfür nur wenige Eingaben. Dazu gehören die Zeit, also der Zeitpunkt innerhalb der Animation, an dem die Interpolationskurven zwischen Keyframes ausgewertet werden sollen, und natürlich die Spur (Animationsspur), die uns dabei interessiert. Die Zeit könnte durch simple mathematische Berechnungen z. B. immer einige Bilder vor oder eben auch hinter dem aktuellen Zeitpunkt liegen. Die auszulesende Spur wird direkt im Attribute-Manager zugewiesen. Ziehen Sie dazu den Namen der gewünschten Animationsspur aus der Zeitleiste direkt in das Spur-Feld des Nodes hinein. Achten Sie dabei darauf, dass immer nur einzelne Spuren bearbeitet werden können. So kann z. B. eine Position.X-Spur benutzt werden, nicht aber der gesamte Position-Ordner, der ja alle drei Vektorkomponenten separat enthält. Die Abbildung 2.72 zeigt eine passende Beispielschaltung.

Animation in Cinema 4D - Zuweisung und mögliche Nutzung eines Spur-Nodes

Abbildung 2.72: Zuweisung und mögliche Nutzung eines Spur-Nodes

Durch die Verwendung mehrerer Spur-Node können dann natürlich auch vollständige Vektoren abgefragt werden. Beachten Sie nur, dass zumindest Winkel-, Größe- und Position-Keyframes generell im lokalen Achsensystem des animierten Objekts gespeichert werden. Bei der Übertragung dieser Werte auf Objekte, die vielleicht an ganz anderer Stelle in einer Hierarchie benutzt werden, können stark abweichende Animationen entstehen. In solchen Fällen müssten Sie die ausgelesenen Spur-Werte erst global umrechnen. Dafür ist weiteres Mathe- und Matrix-Basiswissen nötig, das ich Ihnen etwas später bei der Besprechung der Mathe-Nodes nachreichen werde.

Zeit-Node

Dieser Node stellt Ihnen die aktuelle Zeit in der Zeitleiste zur Verfügung, also den Zeitpunkt in Ihrer Animation, der aktuell in den Editoransichten dargestellt oder gerendert wird. Zusätzlich lassen sich einige der Parameter aus den Projekt-Voreinstellungen hierüber abfragen, wie z. B. die Bilderrate oder die Grenzbilder des Vorschaubereichs. Da dieser Node ausschließlich Ausgänge zur Verfügung stellt, schauen wir uns diese der Reihe nach kurz an.

Der Zeit-Ausgang gibt die aktuelle Zeit in der Animation in Sekunden an. Dieser Wert liegt zwar auch noch einmal an dem Real-Ausgang des Zeit-Nodes an, aber aufgrund interner Rechengenauigkeiten kann der Zeit-Ausgang im Einzelfall exaktere Ergebnisse liefern. Der Bild-Ausgang stellt dagegen die aktuelle Bildnummer zur Verfügung. Bilder pro Sekunde liefert die eingestellte Bilderrate, also z. B. 25, wenn eine Sekunde Animation aus 25 Einzelbildern besteht. Teilt man das Ergebnis des Bild-Ausgangs durch die Bilder pro Sekunde erhält man also wieder den Real-Wert für die Zeit in Sekunden. Alle bisher genannten Ports hängen daher inhaltlich zusammen.

Start und Ende geben Anfang und Ende des Animationsbereichs gemessen in Sekunden wieder. Bei einer Standardszene, die eine Animation zwischen Bild 0 und Bild 100 eingestellt hat, ergeben sich dadurch also die Werte 0 für Start und 4 für Ende. Daran erkennen Sie bereits, dass es hier eine gewisse Ungenauigkeit gibt, denn rechnen wir die Bilder zwischen 0 und 100 zusammen, kommen wir insgesamt auf 101 Bilder und somit auf eine Animationslänge knapp über 4 Sekunden. Start und Ende geben also nur die jeweiligen Bildnummern geteilt durch die Bilder pro Sekunde wieder.

Start der Wiederholung und Ende der Wiederholung sind vielleicht etwas missverständlich benannt, denn hierbei handelt es sich nur um Start und Ende des Vorschaubereichs in Ihrer Animation. Dies ist also das erste bzw. letzte Bild, das Sie im Zeitstrahl unter den Editoransichten sehen können. Auch hierbei werden nur die reinen Bildnummern in Sekunden umgerechnet und nicht relativ zum Anfang der Animation (Start) berechnet. Beginnt der Vorschaubereich bei Bild 24 und die Animation bei Bild 0, wäre ansonsten ja exakt eine Sekunde bis zum Start des Vorschaubereichs vergangen. Start der Wiederholung gibt jedoch 0,96, also 24 geteilt durch die Bilderrate 25 aus.

Delta gibt den Sekundenbruchteil aus, den ein Bild einnimmt. Dies entspricht also 1 geteilt durch die Bilderrate. Vorherige stellt immer das zuletzt dargestellte Bild gemessen in Sekunden dar. Wenn Sie also bildweise durch die Animation klicken, wird hier immer noch die Zeit des vorherigen Bilds angezeigt. Beim Wechsel von Bild 9 zu Bild 10 also die umgerechnete Zeit von Bild 9.
Beim Springen in der Zeit kann diese Lücke dann also größer werden, wenn Sie z. B. vom Ende der Animation zum Anfang springen, wird immer noch das letzte Animationsbild in Sekundenbruchteilen berechnet. Dieser Wert kann eventuell interessant werden, wenn der Editor eine Animation nicht länger in Echtzeit abspielen kann, z. B. wenn die Darstellung der Objekte zu lange dauert. Wie Sie bereits wissen, lässt sich ja die Option für Alle Bilder in dem Filmstreifen-Menü unter der kleinen Zeitleise auch deaktivieren (siehe Abbildung 2.73). Die Wiedergabe einer Animation erfolgt dann zeitgenau, wobei jedoch auch Drop Frames, also ausgelassene Bilder auftreten können. Die Abfrage des Vorherigen Bilds und der Vergleich mit dem aktuellen Sekunden-Wert (Real- oder Zeit-Ausgang) können dann Aufschluss darüber geben, ob so ein Drop-Frame aufgetreten ist.

Animation in Cinema 4D - Wiedergabe-Optionen für die Animation im Edit

Abbildung 2.73: Wiedergabe-Optionen für die Animation im Editor

Zufall-Node

Bei diesem Node werden Sie sicherlich Parallelen zum Noise-Node erkennen, denn auch hier lassen sich zufällig erscheinende Zahlen erzeugen. Diesmal ist jedoch keine Vorgabe eines Musters nötig, denn der Zufall erzeugt seine Werte nur basierend auf dem Startwert und dem gewählten Zufall-Modus (siehe auch Abbildung 2.74).

Animation in Cinema 4D - Die Einstellungen des Zufall-Nodes
Abbildung 2.74: Die Einstellungen des Zufall-Nodes

Je nach Zweck der Schaltung können Sie den Startwert direkt als Parameter im Attribute-Manager eintragen oder über den gleichnamigen Eingang verknüpfen. Diese Vorgabe dient im Zufall-Modus Wiederholbar als Basis für die generierte Abfolge der Zufallswerte. Das bedeutet, das die sich errechneten Werte von Bild zu Bild unterscheiden, aber bei der nächsten Wiedergabe der Animation wieder exakt in der gleichen Reihenfolge ausgegeben werden. Dies dürfte auch der sinnvollste Modus sein, denn nur so ist gewährleistet, dass die Animation beim Rendern wieder exakt so aussieht wie bei der Wiedergabe im Editor. Die berechnete Zahlenreihe kann jedoch auch über den Startwert verändert werden, sodass auch mehrere Zufall-Nodes in einer Schaltung benutzt werden können, die dann jedoch unterschiedliche Ergebnisse liefern. Wenn Sie eine komplette Zufälligkeit wünschen, benutzen Sie alternativ hierzu den Zufall-Modus Echter Zufall.

Die berechneten Zahlen werden dann nicht nur über den Startwert, sondern auch noch unter Einbeziehung des internen Timers berechnet, der sich fortlaufend verändert. Dadurch ist ausgeschlossen, dass die Ergebnisse des Nodes bei jeder Wiedergabe der Animation gleich ausfallen. Dies gilt sogar für Zufall-Nodes, die den gleichen Startwert benutzen. Auch diese werden automatisch völlig unterschiedliche Zahlen liefern.

Generell liefert die Zufallsberechnung Werte zwischen -1,0 und +1,0. Wenn Sie nur positive Zahlen benötigen, aktivieren Sie die Option für Absolute Werte am Node. Dies betrifft jedoch nicht alle Datenformate, die der Node liefern kann. Das Boole-Format kennt ja z. B. sowieso nur TRUE und FALSE. Über die Ausgang-Seite des Zufall-Nodes legen Sie schließlich die Ports für die gewünschten Datentypen an. Hier stehen zur Auswahl Boole, Integer, Normale, Real und Vektor, wobei Sie sich nicht nur für einen Port entscheiden müssen. So lassen sich auch verschiedene Datentypen auf einmal ausgeben oder sogar mehrere Ports, z. B. für Real-Zahlen benutzen. Jeder Ausgang erhält dabei eigene Zufallswerte.

Ü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

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Folgende HTML-Elemente sind erlaubt:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>