MoGraph: MoGraph und XPresso

Tutorials 28. November 2016 – 0 Kommentare

Auch das MoGraph-System verfügt über einige Nodes, die ich Ihnen kurz vorstellen möchte. Besonders hilfreich ist z. B. der Abnahme-Node, den Sie wie die übrigen MoGraph-Nodes nach einem Rechtsklick in den XPresso-Editor unter Neuer Node > MoGraph finden können. Sind Ihnen Begriffe, wie XPresso oder Node neu, lesen Sie bitte zuerst das XPresso-Kapitel in diesem Buch.

Der Abnahme-Node

Dieser Node stellt uns im Prinzip die gleichen Einstellungen zur Verfügung, die wir auch an vielen Deformations-Objekten oder natürlich an MoGraph-Effektoren finden können. Neu ist hieran jedoch, dass wir die sich dadurch ergebende Intensität als Wert-Ausgang am Node abfragen können. Im Bereich der vollen Wirkung erhalten wir somit den Wert 1 und wenn gar keine Wirkung zu erwarten ist den Wert 0. Dies hängt natürlich nicht nur von der Form und Größe der Abnahme ab, sondern auch von dem Mittelpunkt, von dem sich die Abnahme ausbreitet. Diese Position im Raum wird zusammen mit den Richtungen der drei Achsen für die Abnahme als Matrix abgefragt. Sie finden hierzu einen Eingang namens Matrix Abnahme am Node.

Animation in Cinema 4D - Abfragen einer Abnahme und Steuerung einer Lichtquellen-Intensität

Abbildung 5.227: Abfragen einer Abnahme und Steuerung einer Lichtquellen-Intensität

Hier macht es natürlich Sinn, ein beliebiges Objekt der Szene zu verwenden, um die Animation dieser Position und der Ausrichtung der Abnahme zu vereinfachen. In meinem Fall habe ich hier ein Null-Objekt gewählt, das ich Dimmer genannt habe. Dieses Objekt trägt gleichzeitig auch unser XPresso-Tag. Die Globale Matrix dieses Objekts wird also an den Matrix Abnahme-Eingang gehängt. Nun benötigen wir nur noch die Position im 3D-Raum, für die die Stärke der Abnahme berechnet werden soll. Ich benutze hierfür eine Punkt-Lichtquelle, deren Globale Position ich an den Eingang für die Sampleposition hänge. Am Wert-Ausgang des Nodes liegt nun das Ergebnis an, das uns mitteilt, wie stark die Abnahme an der Position der Lichtquelle ist. Ich leite diesen Wert einfach an die gleiche Lichtquelle und zwar als Intensität. Dadurch wird die Lichtquelle in Abhängigkeit vom Abstand zum Dimmer und dessen Abnahme heller oder dunkler. Dieser Effekt ist ganz rechts in Abbildung 5.227 zu erkennen. Rückt man den Dimmer, für den ich eine kugelförmige Abnahme am Abnahme-Node konfiguriert habe, näher an die Lichtquelle, wird diese heller. Dies ist natürlich nur ein sehr einfaches Beispiel. Denkbar sind viel komplexere Schaltungen z. B. auch für Thinking Particles, bei denen sich dann diese Abnahmen in die Wichtung von Effekten mit einbeziehen ließen.

Der Daten-Node

Mit diesem Node lassen sich diverse Informationen über Klone ermitteln, wie z. B. deren aktuelle Position, Größe, Winkel, Farbe, Sichtbarkeit oder Wichtung. Auf diese Weise könnten wir z. B. Eigenschaften von Klonen auf normale Objekte übertragen oder in andere Bestandteile von XPresso-Schaltungen übernehmen. Das folgende Beispiel in Abbildung 5.228 soll Ihnen dazu eine Idee geben. Dort wurden Kugel-Objekte mit einem Klon-Objekt kreisförmig angeordnet. Ein mit dem Klon-Objekt verknüpfter Zufall-Effektor animiert im Zufallsmodus Noise die Positionen der Kugeln. Weiterhin befindet sich in der Szene ein zu einem normalen Spline-Objekt konvertierter n-Eck Spline. Dieser hat exakt so viele Eckpunkte wie Klone vorhanden sind. Diese Punkte werden nun mit einer einfachen XPresso-Schaltung einfach an die aktuellen Positionen der Kugel-Klone geheftet.

Animation in Cinema 4D - XPresso-Schaltung zum Übertragen von Klon-Positionen auf Splinepunkte

Abbildung 5.228: XPresso-Schaltung zum Übertragen von Klon-Positionen auf Splinepunkte

Der Spline verbindet dadurch in jeder Animationsphase die Kugeln miteinander. Wie Sie in Abbildung 5.228 erkennen können, ist die Schaltung recht simpel. Zuerst wird über den MoGraph Daten-Node die Anzahl der Klone am Klon-Objekt abgefragt. Dieser Wert wird an einem Mathe-Node um eins reduziert, da die Zählweise am nachfolgenden Iteration-Node bereits bei 0 beginnt. Dies hat Vorteile, da auch die Nummerierung von Klonen, sowie von Punkten an Polygon-Objekten und Splines jeweils bei Null startet. Wir lassen also die Zahlen zwischen 0 und Klon-Anzahl-1 durch den Iterator ausgeben und fragen für diese Klone die Positionen ab. Diese globalen Positionen werden schlicht auf die Punkte des konvertierten n-Ecks übertragen, die jeweils die gleiche Punktnummer tragen. Es ist daher selbst darauf zu achten, dass zumindest so viele Spline-Punkte wie Klone vorhanden sind.

Animation in Cinema 4D - XPresso-Schaltung zum Übertragen von Klon-Positionen auf Splinepunkte

Abbildung 5.229: Verknüpfung zwischen Spline-Punkten und Klon-Positionen

In Abbildung 5.229 ist das Resultat dieser Schaltung zu erkennen. Dort wurde der n-Eck-Spline rötlich gefärbt. Seine Punkte werden kontinuierlich an die Mittelpunkte der Kugeln geheftet. Sicherlich fallen Ihnen noch weitere nützliche Beispiele ein, bei denen Objekte oder auch Materialien auf Eigenschaften von Klonen reagieren können.

Der Selektion-Node

Mit diesem XPresso-Node können Sie abfragen oder auch bestimmen, ob ein Klon in einer bestimmten MoGraph-Selektion ausgewählt oder eben nicht ausgewählt ist. Auch hierzu wieder ein kleines Beispiel. Wie in Abbildung 5.230 zu erkennen, habe ich eine Ebene mit 10 mal 10 Unterteilungen zu einem Polygon-Objekt konvertiert (Mesh > Konvertieren > Grundobjekt konvertieren) und dann im Punkte bearbeiten-Modus einige dieser Punkte ausgewählt. Im Menü Selektieren wurde nun Punkte-Wichtung setzen aufgerufen und dort ein Wert von 100% verwendet. Das Ergebnis ist in der Mitte von Abbildung 5.230 zu erkennen.

Animation in Cinema 4D - Umwandlung einer Vertex-Map zu einer MoGraph-Selektion

Abbildung 5.230: Umwandlung einer Vertex-Map zu einer MoGraph-Selektion

Hinter der Ebene entsteht ein neues Vertex Map-Tag, in dem die Information über die Prozentwichtungen der Punkte gespeichert wurde. Ich möchte nun diese Wichtungen als Selektion auf Klone übertragen lassen. Dazu erstellen wir zuerst ein Klon-Objekt im Modus Objekt und lassen damit z. B. kleine Kugeln auf die Punkte der Ebene klonen. Damit ist die Anzahl der Klone also automatisch identisch zu der Anzahl der Punkte und somit auch identisch zu der Anzahl an Vertex-Map-Wichtungen. Schließlich rufen wir im MoGraph-Menü noch die MoGraph Selektion auf und klicken mit deren Cursor ein Mal neben die Klone. Es entsteht ein neues MoGraph-Selektion-Tag hinter dem Klon-Objekt. Dieses Tag enthält jetzt allerdings noch keine selektierten Klone. Das soll ja unsere Schaltung erledigen.

Wie in Abbildung 5.231 zu erkennen, ist dies gar nicht so kompliziert. Wir ziehen zuerst das Vertex Map-Tag in eine XPresso-Schaltung und lassen uns dort Informationen über einen Objekt-Ausgang geben. Diese leiten wir zuerst in einen Vertex Map-Node, der uns die Anzahl der Werte ausgeben kann. Diese Anzahl ist bekanntlich identisch mit der Punktanzahl der Ebene und der Klon-Anzahl.

Animation in Cinema 4D - Schaltung zur Übertragung von Vertex Map-Wichtungen auf eine Klon-Auswahl

Abbildung 5.231: Schaltung zur Übertragung von Vertex Map-Wichtungen auf eine Klon-Auswahl

Wie im Beispiel zuvor, lassen wir von dieser Anzahl mit einem Mathe-Node den Wert 1 abziehen und verwenden den um eins reduzierten Wert als Obergrenze in einem Iteration-Node. Dieser startet mit dem Wert Null und schiebt seine Werte sowohl in einen Vertex-Map-Node als auch einen MoGraph Selektion-Node. Diese MoGraph-Selektion hat einen zusätzlichen Eingang für Selektieren erhalten, den Sie über die blaue Fläche auf der linken Seite des Nodes aufrufen können. Alternativ hierzu kann der Node aber auch nur zum Abfragen von Selektionen benutzt werden. Dafür steht ein Selektiert-Ausgang am Node zur Verfügung, der über ein Bool-Format anzeigt, ob der über den Index-Eingang ausgewählte Klon im entsprechenden MoGraph Selektion-Tag ausgewählt ist oder nicht. Damit das alles funktionieren kann, müssen Sie das MoGraph Selektion-Tag des Klon-Objekts aus dem Objekt-Manager in die Schaltung ziehen und dessen Objekt-Ausgang mit dem Selektion Tag-Eingang des MoGraph Selektion-Nodes verbinden. Das Ergebnis war bereits ganz rechts in der Abbildung 5.230 zu erkennen. Wenn Sie das MoGraph Selektion-Tag hinter dem Klon-Objekt anklicken, sollten gelbe Markierungen für die selektierten Klone exakt dort erscheinen, wo auch Wichtungen über 0% auf der Ebene vorhanden sind.

Da wir die Wichtungen als Fließkommawerte zwischen 0.0 und 1.0 erhalten, eine Selektion aber nur als Bool-Format, also entweder TRUE oder FALSE (1 oder 0), definiert ist, wandelt XPresso automatisch alle Wichtungen, die über 0% betragen in ein positives Signal für die MoGraph-Selektion um.

Der Sample-Node

Dieser Node ist dafür gedacht, um die Beeinflussung beliebiger Objekte durch Effektoren zu berechnen. Spannend daran ist, dass es sich dabei nicht unbedingt um Klone oder andere MoGraph-Elemente handeln muss. Wir können also z. B. irgendwo in der Szene einen Zufall-Effektor platzieren, diesen Werte für Farben, Sichtbarkeiten oder Positionen berechnen lassen, und wir nehmen dann aus diesen Werte eine Probe (englisch: Sample) und übertragen diese auf beliebig andere Objekte. Ich hoffe, das folgende Beispiel macht dies wieder etwas deutlicher.
Wie Sie in der nachfolgenden Abbildung 5.232 erkenne können, besteht unsere Testszene nur aus drei Elementen: Einem Zufall-Effektor im Zufallsmodus Noise, einem Null-Objekt, das unsere XPresso-Schaltung trägt und einem Würfel-Grundobjekt. Wir ziehen den Effektor in die Schaltung hinein und verbinden dessen Objekt-Ausgang mit dem Effektor-Eingang am MoGraph Sample-Node. Als weiteren Eingang an diesem Node verwenden wir Globale Matrix und leiten dort einfach die statische Globale Matrix unseres Null-Objekts hinein. Das ist dann also die Position, Größe und auch Ausrichtung, die dem Effektor als Basis für seine Zufälligkeiten dient. Sind am Zufall-Effektor die Veränderungen von Position, Skalierung oder Winkel aktiv und liegt unser Null-Objekt innerhalb der Abnahmeform des Effektors, erhalten wir am Ausgang für Globale Matrix am Sample-Node die zufällig veränderten Werte. Auf die gleiche Weise könnten wir also auch einen Farbwert zufällig variieren lassen oder Wichtungen für eine Vertex-Map.

Animation in Cinema 4D - Zufällige Bewegung eines Würfel über einen Zufall-Effektor

Abbildung 5.232: Zufällige Bewegung eines Würfel über einen Zufall-Effektor

In unserem Fall leiten wir die Globale Matrix einfach an den Würfel weiter, der sich folglich entsprechend der Zufall-Einstellungen am Effektor zufällig durch die Gegend bewegt. Dabei kann die Ruhelage des Würfels weiterhin über das Null-Objekt editiert werden.
Wie in Abbildung 5.232 an dem über einen MoGraph Tracer nachgezeichneten Bewegungspfad des Würfels zu erkennen, klappt dies ganz hervorragend. Abschließend zu diesem Thema und Kapitel möchte ich Ihnen nachfolgend noch ein kleines Beispiel zu diesem Node liefern, das sich mit dem Thema Selektion beschäftigt. Wie auf der linken Seite von Abbildung 5.233 zu erkennen, verwende ich hierfür ein konvertiertes Landschaft-Objekt. Dort ist bereits der gewünschte Effekt zu erkennen, denn ein Zufall-Effektor generiert uns hier zufällig selektierte Polygone, die anschließend in ein Polygon Auswahl-Tag gesichert und dort über ein MoExtrudieren-Objekt verschobene werden. Dieser Effekt ist in der rechten Bildhälfte von Abbildung 5.233 zu erkennen.

Animation in Cinema 4D - Erstellung einer Polygon-Selektion über einen Zufall-Effektor

Abbildung 5.233: Erstellung einer Polygon-Selektion über einen Zufall-Effektor

Wir benötigen hierfür zwei separate XPresso-Schaltungen, da diese zwingend nacheinander berechnet werden müssen. Dies lässt sich gut über die Priorität-Einstellung der XPresso-Tags regeln. Je höher die Zahl der Priorität eines Tags ist, desto später wird es während der Aktualisierung der Szene berechnet. Das erste XPresso-Tag benutzt die Priorität Expression mit der Zahl 0 und ist für die Umrechnung der Klon-Sichtbarkeit (erzeugt durch den Zufall-Effektor) in eine Polygon-Auswahl zuständig.
Wie in Abbildung 5.234 zu erkennen, fragt die Schaltung im oberen Teil zuerst die Polygonanzahl an der Landschaft ab, reduziert diesen Wert um 1 und benutzt das Ergebnis als Obergrenze in einem Iterator-Node.

Animation in Cinema 4D - XPresso-Schaltung zum Erstellen einer zufälligen Polygon-Auswahl

Abbildung 5.234: XPresso-Schaltung zum Erstellen einer zufälligen Polygon-Auswahl

Dieser beginnt seine Zählung wie gewohnt bei 0. Im mittleren Teil der Schaltung wird die Iteration benutzt, um nacheinander alle Polygone der Landschaft über einen Polygon-Node zu durchlaufen und die globalen Mittelpunkt-Positionen jedes Polygons auszugeben. Diese Position wird über einen Vektoren zu Matrix-Node zu einer Matrix umgewandelt und an den Sample-Node übergeben. Zudem erhält der Sample-Node den Zufall-Effektor zugewiesen. An der Ausgangsseite des Sample-Nodes fragen wir nach der Sichtbarkeit. Damit diese zufällige Werte liefert, müssen Sie die Sichtbarkeit-Option am Zufall-Effektor aktiviert haben. Schließlich laufen die Iteration, das Landschaft-Objekt und der dazu passende Sichtbarkeit-Wert in einen C.O.F.F.E.E.-Node. Es gibt nämlich leider keinen Node, mit dem wir ansonsten Selektionen von Punkten, Kanten oder Polygonen direkt setzen könnten. Im C.O.F.F.E.E.-Node schreiben wir folgende Befehle:

main()
{
var Selektion=Objekt->GetPolygonSelection();
if (Sichtbarkeit) Selektion->Select(Index);
else Selektion->Deselect(Index);
Objekt->SetPolygonSelection(Selektion);
}

Die Variable Selektion wird mit der aktuellen Polygon-Auswahl der Landschaft gefüllt. Wenn der Sample-Node dann ein TRUE-Signal für die Sichtbarkeit eines Polygons sendet, wird das entsprechende Polygon selektiert, ansonsten über den else-Befehl eben deselektiert. Am Ende des Skripts wird die veränderte Selektion wieder an die Landschaft zurückgeschrieben. Der Eingang für Objekt muss vom Typ Link sein. Der Index-Eingang ist vom Typ Integer und der Sichtbarkeit-Port vom Typ Bool.

Animation in Cinema 4D - Die zweite Schaltung zum Übertragen der Selektion zu einem Auswahl-Tag

Abbildung 5.235: Die zweite Schaltung zum Übertragen der Selektion zu einem Auswahl-Tag

Damit ist dann bereits die zufällige Selektierung von Polygonen über den Zufall-Effektor abgeschlossen. Um diese Auswahl gleichzeitig noch an ein schon existierendes Polygon Auswahl-Tag zu übertragen benötigen wir noch eine zweite Schaltung, für die diesmal die Priorität auf Expression mit dem Wert 1 erhöht wird. Wie Sie bereits in der Mitte von Abbildung 5.235 erkennen können, ist diese Schaltung nicht sehr umfangreich. Ziehen Sie nur die Landschaft und ein dort bereits existierendes Polygon Auswahl-Tag in die Schaltung hinein. So ein Tag können Sie z. B. durch das Selektieren eines Polygons an der Landschaft und den Aufruf von Selektieren > Selektion einfrieren erzeugen. Die Objekt-Ausgänge dieser beiden Nodes leiten Sie an Link-Ports an einem C.O.F.F.E.E.-Node. Natürlich ist aber auch die Verwendung eines Python-Nodes dafür geeignet. Hier das verwendete C.O.F.F.E.E.-Skript:

main()
{
var Auswahl=Objekt->GetPolygonSelection();
var SelektionImTag=AuswahlTag->GetSelection();
var Anzahl=Objekt->GetPolygonCount();
var i;
for (i=0; i<Anzahl; i++) { if (Auswahl->IsSelected(i)) SelektionImTag->Select(i);
else SelektionImTag->Deselect(i);
}
AuswahlTag->SetSelection(SelektionImTag);
Objekt->Message(MSG_UPDATE);
}

Hier werden einfach nur alle Polygone der Landschaft durchgegangen und dann deren Selektionszustand an das Auswahl-Tag weitergegeben. Der Message-Befehl am Ende führt zu einem Update des Landschaft-Objekts und somit auch des Auswahl-Tags. Dies ist wichtig, da wir das Tag z. B. in einem MoExtrudieren-Objekt angeben wollen. Dadurch würde die Extrudierung immer auf die im Auswahl-Tag gespeicherten Polygone beschränkt, die wiederum durch den Zufall oder einen beliebigen anderen Effektor animiert werden können.

Damit haben wir es aber nun endgültig geschafft und können das Thema MoGraph abschließen. Wir kommen im folgenden Kapitel zu einem nicht minder spannenden Thema, der Charakter-Animation (Figur-Animation) und deren Techniken und Werkzeugen.

Ü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>