Thinking Particles: Ein Arbeitsbeispiel – Schmetterlingsschwarm

Tutorials 15. Februar 2016 – 0 Kommentare

Damit haben Sie nun bereits ein umfassendes Wissen über XPresso und Thinking Particles. Dies wird Ihnen bei zahlreichen Animationsaufgaben zugute kommen, denn viele Arbeitsschritte lassen sich über XPresso automatisieren oder machen das Animieren schlicht einfacher, da nicht für alles Keyframes benötigt werden. Ich möchte Ihnen abschließend zu diesem Themenkomplex daher gerne noch ein kleines Beispiel zeigen, das dann auch diesem Themenkomplex beschließen soll. Umzusetzen ist ein Schwarm von Schmetterlingen, der sich über einen „Anführer“-Schmetterling steuern lässt. Dabei soll es natürlich möglichst nicht zu Kollisionen kommen und der Schwarm soll sich leicht chaotisch bewegen. Starten Sie also mit einer neuen Szene und fügen Sie dieser zwei Null-Objekte hinzu. Nennen Sie das eine Null-Objekt „Anführer“ und das andere „Schwarm“. Der Anführer wird später das Objekt sein, über das Sie die Position und Flugrichtung des Schwarms animieren können. So zumindest unser Ziel. Fügen Sie dem Schwarm Null-Objekt ein XPresso-Tag hinzu. Ein Doppelklick darauf öffnet den XPresso-Editor.

3.2.1 Die Partikel erzeugen

Wir werden die Aufgabe strukturiert angehen. Zuerst macht es daher Sinn, die gewünschte Anzahl an Partikeln für unsere Schmetterlinge zu erzeugen. Diese Anzahl soll sich im Laufe der Animation nicht weiter verändern. Die Partikel müssen also möglichst auf einen Schlag erstellt werden und sollten lange genug leben können, damit deren Anzahl konstant bleibt. Für solche Aufgaben bietet sich der Shot-Modus der Emitter an, da wir darüber eine exakte Anzahl an zu generierenden Partikeln pro Bild der Animation angeben können. Damit diese Erzeugung in einem eng gesteckten Zeitfenster erfolgt, müssen die Emitter nur zu einem bzw. einigen wenigen Bildern der Animation aktiviert werden. Hierfür bieten sich die An-Eingänge der Emitter an, die über einen Vergleich von Bildnummern aktiviert werden. Schauen wir uns dies im Detail an.

Beginnen Sie damit, einen Zeit-Node (XPresso > Allgemein) aufzurufen und dort einen Ausgang für Bild anzulegen (Klick auf die rote Schaltfläche am Node). Der ursprünglich vorhandene Zeit-Ausgang kann durch einen Doppelklick auf diesen Port gelöscht werden. Ergänzen Sie einen Vergleich-Node (XPresso > Logik) den Sie mit der Funktion == (identisch gleich) konfigurieren. Den Wert für Eingang 2 setzen Sie auf 1.

Wenn Sie nun den Bild-Port des Zeit-Nodes mit Eingang 1 am Vergleich-Node verbinden, erhalten wir an dessen Ausgang ein positives Signal, wenn unsere Animation Bild 1 erreicht. Erstellen Sie nun einen P Sturm-Node (Thinking Particles > TP Generator) und verbinden Sie dessen An-Eingang mit dem Ausgang des Vergleich-Nodes. Als Modus im P Sturm wählen Sie aus besagten Gründen Shot aus und tragen den Wert 1 für Shot ein. Bei Aktivierung wird also nur ein einzelnes Partikel erstellt.

Damit Sie später bestimmen können, wo dieses Partikel erscheinen soll, ziehen Sie das Schwarm Null-Objekt jetzt ebenfalls in die Schaltung und aktivieren an dessen Ausgangsseite den Port für Globale Position. Verbinden Sie diesen Port mit dem Emitter Position-Eingang am P Sturm. Schließlich sollten wir auch schon daran denken, Gruppen für die Partikel anzulegen. Sinnvoll sind in diesem Fall zwei verschiedenen Gruppen, eine für unseren Anführer-Schmetterling und eine Gruppe für die übrigen Schmetterlinge des Schwarms. Öffnen Sie hierfür die Thinking Particles Einstellungen im Zusätze-Menü des XPresso-Editors und führen Sie einen Rechtsklick auf die bereits vorhandene Alle-Gruppe aus. Wählen Sie Hinzufügen aus dem Kontextmenü aus und nennen Sie diese neue Gruppe Schwarm. Wiederholen Sie das Hinzufügen einer Gruppe und nennen Sie diese zweite Untergruppe Anführer. Verwenden Sie ggf. unterschiedliche Farben für beide Gruppen, um später leichter kontrollieren zu können, ob die Gruppierung der Partikel funktioniert hat. Damit unser Partikel nun auch in der Anführer-Gruppe landet, ergänzen Sie einen P Gruppe-Node (Thinking Particles > TP Standard) und ziehen die Anführer-Gruppe aus den Thinking Particles Einstellungen in dessen P Gruppe-Feld hinein. Verknüpfen Sie den Geborene Partikel-Ausgang des P Sturm-Nodes mit dem Eingang des P Gruppe-Nodes, um die Zuordnung abzuschließen. Der aktuelle Stand unserer Schaltung ist in Abbildung 3.67 zu bewundern.

Animation in Cinema 4D - Erzeugen eines einzelnen Partikels

Abbildung 3.67: Erzeugen eines einzelnen Partikels

Wenn Sie nun die Animation im Ansichtsfenster von Cinema 4D ablaufen lassen, sollten Sie ein einzelnes Partikel beobachten können. Damit sich dieses nicht direkt auf die Reise macht, setzen Sie die Geschwindigkeit im P Sturm auf 0. Denken Sie zudem daran, die Lebenszeit auf einen hohen Wert, wie z. B. 500 einzustellen, damit wir später den Schmetterlingen auch lange genug zuschauen können.

Im nächsten Arbeitsschritt sorgen wir für die Erzeugung der übrigen Schmetterlinge. Duplizieren Sie hierfür den vorhandenen P Sturm-Node, denn auch diesmal brauchen wir wieder den Modus Shot und einen An-Eingang am Node.

Animation in Cinema 4D - Animation des stilisieren Schmetterlings

Abbildung 3.68: Animation des stilisieren Schmetterlings

Verbinden Sie wieder den Ausgang des Vergleich-Nodes mit dem An-Port des neuen P Sturms und stellen Sie auch eine Verbindung zwischen der globalen Position des Schwarm Null-Objekts und der Emitter Position her. Alle Partikel sollen schließlich zur gleichen Zeit und im gleichen Gebiet erstellt werden. Wie groß die ursprüngliche Schmetterlingswolke sein soll, können Sie über X-Größe und Y-Größe am neuen P Sturm-Node einstellen. Ich belasse es hier vorerst bei der Vorgabe von je einem Meter bzw. 100 Zentimetern. Als Shot-Wert benutzen wir diesmal einen höheren Wert, je nachdem, wie viele Schmetterlinge Sie im Schwarm sehen möchten. Hier können Sie ruhig 100 oder mehr eintragen. Auch diesmal belassen Sie die Geschwindigkeit der Partikel bei 0. Die Schmetterlinge sollen schließlich durch die gleich noch folgende Logik-Schaltung animiert werden.

Ergänzen Sie einen weiteren P Gruppe-Node und füllen Sie diesen mit der Schwarm-Gruppe. Leiten Sie die geborenen Partikel in diesen Schwarm P Gruppe-Node. Schließlich sollten unsere Schmetterlinge noch als solche zu erkennen sein. Wir sollten also zumindest eine einfache Schmetterlingsform modellieren und diese auch animieren. Dies ist schneller erledigt als befürchtet. Erstellen Sie ein Zylinder-Grundobjekt z. B. mit der Richtung +X und reduzieren Sie dessen Radius und Höhe so, dass der Zylinder als Köper des Schmetterlings durchgehen kann. Reduzieren Sie die Segmente so weit wie möglich, um die spätere Animation der Partikel nicht zu stark zu belasten. Als Flügel benutzen wir zwei viereckige Polygon-Grundobjekte, die Sie hierarchisch unter dem Zylinder gruppieren. Platzieren Sie die Flügel so neben dem Zylinder-Körper, wie es in Abbildung 3.68 zu erkennen ist. Dort wurden die drei Objekte zusätzlich unterschiedlich gefärbt, um die Anordnung noch deutlicher zu machen. Konvertieren Sie anschließend die beiden Polygon-Grundobjekte zu normalen Polygon-Objekten. Nur so können Sie im Achse bearbeiten-Modus die lokalen Achsensysteme beider Flügel auf die Symmetrieachse des Zylinders verschieben. Wenn Sie beim Verschieben das 3D-Snapping auf Achsen aktivieren, sollte dies präzise gelingen. Auf der linken Seite von Abbildung 3.68 sehen Sie bereits die korrekt platzierte Achse des roten Flügels. Sinn dieser Aktion ist es, dass Sie nun durch einfache Rotation der Flügel-Polygone den Flügelschlag eines Schmetterlings andeuten können. Nach dem Ausschalten von Snapping und Achse bearbeiten-Modus drehen Sie die Flügel in die untere Stellung und setzen für diese im Bild 0 der Animation je ein Rotation-Key. In Bild 5 der Animation drehen Sie die Flügel nach oben und setzen dafür erneut Rotation-Keyframes, so wie es rechts in Abbildung 3.68 zu sehen ist. Damit sich dieser Flügelschlag automatisch wiederholt, öffnen Sie die Zeitleiste über das Fenster-Menü von Cinema 4D.

Selektieren Sie dort die beiden Winkel-Spuren, die für das Schlagen der Flügel verantwortlich sind. Die übrigen Winkel-Spuren, bei denen keine Veränderungen der Werte erkennbar sind, können Sie löschen. In meinem Fall bleiben dann nur die Winkel.P-Spuren übrig, für die Sie im Attribute-Manager das Danach-Verhalten auf Oszillieren schalten können. Dies entspricht einem vorwärts und rückwärts Abspielen der Animation. Die Wiederholungen stellen Sie hoch genug ein, damit die Flügel nicht plötzlich während der Animation der Partikel aufhören zu schlagen. Die Abbildung 3.69 zeigt diese Einstellungen noch einmal ausführlich.

Animation in Cinema 4D - Automatisches Oszillieren des Flügelschlags

Abbildung 3.69: Automatisches Oszillieren des Flügelschlags

Unser animierter Schmetterling muss nun nur noch mit den Schwarm-Partikeln verknüpft werden. Dazu erstellen Sie einen P Objektform-Node (Thinking Particles > TP Standard) und weisen diesem den Zylinder als Objekt zu. Dies schließt automatisch die beiden untergeordneten Flügel und deren Animation mit ein. Verbinden Sie den Geborene Partikel-Ausgang des Schwarm P Sturms mit dem Eingang von P Objektform und ergänzen Sie ein Partikel Geometrie-Objekt in der Szene (Simulieren > Thinking Particles). Nur so werden die Schmetterlinge an den Partikeln auch sichtbar, wenn Sie die Animation laufen lassen.

Um den Anführer-Partikel später tatsächlich frei animieren zu können, wäre es schön, die Bewegung dieses Partikels eng an das bereits angelegte Anführer Null-Objekt zu binden. Auf diese Weise können wir später normale Keyframes zum Animieren benutzten, ohne auf die Möglichkeiten von Thinking Particles verzichten zu müssen. Praktisch ist dies recht einfach zu lösen. Ziehen Sie das Anführer Null-Objekt in die XPresso-Schaltung und legen Sie an diesem Objekt-Node einen Ausgang-Port für die globale Position an. Rufen Sie unter Thinking Particles > TP Initiator einen P Pass-Node auf und füllen Sie diesen aus den Thinking Particles Einstellungen mit der Anführer-Gruppe. Rufen Sie unter Thinking Particles > TP Standard einen P Daten setzen-Node auf und leiten Sie den Ausgang des P Pass-Nodes dort hinein. Ergänzen Sie einen zusätzlichen Eingang für die Position am P Daten setzen-Node und verschalten Sie diesen mit dem Ausgang des Objekt-Nodes.

Die Position des Anführer Null-Objekts wird hierdurch permanent auf den Anführer Partikel übertragen. Die Abbildung 3.70 zeigt Ihnen die bislang beschriebene Schaltung. Damit sind zumindest schon einmal die Erzeugung aller Partikel und die Steuerung des Anführers abgeschlossen. Die folgenden Schritte beschäftigen sich mit der Steuerungslogik des Schwarms, also wie die Schwarm-Partikel auf ihre Nachbarn und auf den Anführer reagieren sollen. Bevor wir damit beginnen, überprüfen Sie noch einmal die dargestellte Größe der Schmetterlinge. Passen Sie ggf. den Wert für Abmessung im P Sturm für den Schwarm an.

Animation in Cinema 4D - Aktueller Stand der Schaltung

Abbildung 3.70: Aktueller Stand der Schaltung

3.2.2 Das Ausweichen der Schwarm-Partikel

Damit der Schmetterlings-Schwarm einigermaßen glaubhaft wirkt, sollten die Partikel selbst dafür sorgen, dass sie sich nicht durchdringen, bzw. einen gewissen Abstand voneinander halten. Hierfür ist etwas mathematische Unterstützung nötig. Ich werde jedoch versuchen, diese Berechnung möglichst plausibel zu erklären. Im Prinzip wird in den folgenden Berechnungen folgendes passieren: Zuerst werden wir feststellen lassen, welche Partikel überhaupt auf ihre Nachbarn reagieren müssen. Sind zwei Partikel weit voneinander entfernt, besteht für uns schließlich auch kein Handlungsbedarf. Anschließend werden die Positionen der Partikel abgefragt, die sich zu nahe kommen. Ein Vektor zwischen den beiden Positionen wird berechnet, der die Richtung für das nötige Wegdrücken beschreibt. Folgt jeder Partikel diesem Vektor, nimmt die Entfernung zwischen den Partikeln also wieder zu. Da dieses Wegdrücken bzw. die Bewegung fort von seinem Nachbarn mit einem weichen Übergang erfolgen sollte, wird diese Ausweichbewegung prozentual beigemischt, damit sich die Bewegungsrichtung der Partikel in unserem Sinn ändert. Wir werden also die Partikel nicht einfach auf eine neue Position setzen, sondern durch Veränderung der Bewegungsrichtung dafür sorgen, dass die Partikel ihren Nachbarn aus dem Weg gehen. Dies wird sicherlich nicht jede Kollision vermeiden können, aber das würde in einem echten Schwarm auch schwierig, wenn der Platz zwischen den Tieren zu klein ist. Also gehen wir es an.

Nahe Partikel ausfiltern

Mithilfe des P Pass AB-Nodes (Thinking Particles > TP Initiator) können wir die Partikel sehr schnell ausfiltern, die eine gewisse Distanz unterschreiten. Ziehen Sie dafür die Schwarm-Gruppe aus den Thinking Particles Einstellungen in beide Gruppe-Felder des Nodes und wählen Sie als Distanz Typ Innerhalb. Versuchen Sie es vorerst mit einer Distanz von 20. Dies müssen Sie später ggf. noch korrigieren, je nachdem wie groß Ihre Schmetterlinge sind. Die Ausgänge liefern uns nun bereits die Partikel, die durch uns in eine neue Richtung bewegt werden müssen, damit die Distanz zu den Nachbarn wieder größer wird. Der P Pass AB funktioniert dabei wie eine Verschachtelung aus zwei Programm-Schleifen:

for (i=0; i<5; i++)
{
for (j=0; j<5; j++)
{
if (i!=j) {Partikel A=i; Partikel B=j;}
}
}

Wenn wir die Überprüfung der Abstände also einmal vernachlässigen, und die Variablen i und j als Partikelnummern interpretieren, kommt es zu folgender Ausgabe an den Ausgängen des Nodes:

Partikel A=0
Partikel B=1, Partikel B=2, Partikel B=3, Partikel B=4
Partikel A=1
Partikel B=0, Partikel B=2, Partikel B=3, Partikel B=4
Partikel A=2
Partikel B=0, Partikel B=1, Partikel B=3, Partikel B=4
Partikel A=3
Partikel B=0, Partikel B=1, Partikel B=2, Partikel B=4
Partikel A=4
Partikel B=0, Partikel B=1, Partikel B=2, Partikel B=3

Dies gilt zumindest für den Spezialfall, dass beide Partikelgruppen identisch sind, also die gleichen Partikelnummern enthalten. Um nun auf die Ausweichrichtung zwischen Partikeln zu kommen, könnten wir jeweils die Position von Partikel B von der Position des Partikel A abziehen lassen. P Pass AB nimmt uns exakt dies ab, denn wir können dort am Ausgang direkt Vektor AB abfragen. Über einen angehängten Allgemein-Node (XPresso > Adapter) mit dem Datentyp Normale lässt sich diese Richtung auf die Einheitslänge 1 bringen.

Leiten wir diese Normale als Eingang in einen Gemischte Mathe-Node (XPresso > Berechne) können wir den Fließkomma Wert des Gemischte Mathe-Nodes benutzen, um die Länge des Abstandsvektors und somit auch die Stärke der Ausweichbewegung individuell anzupassen. Dazu müssen der Datentyp der gemischten Mathe auf Vektor und die Funktion auf Multiplizieren gestellt werden. Um diesen Wert noch bequemer editieren zu können, sollten Sie dem Schwarm Null-Objekt einen entsprechenden Benutzerdaten-Parameter geben. Was es damit auf sich hat, hatten wir ausführlich im XPresso-Kapitel besprochen. Selektieren Sie also das Schwarm Null-Objekt und wählen Sie im Attribute-Manager über das Benutzer-Menü den Punkt Benutzerdaten hinzufügen aus. Wählen Sie im aufspringenden Verwaltungsfenster einen passenden Namen für den neuen Parameter und benutzen Sie als Interface Fließkomma Slider. Der Datentyp kann auf Fließkomma und die Einheit auf Prozent verbleiben, so wie es auch in Abbildung 3.71 zu sehen ist. Bestätigen Sie den Dialog mit OK und Ziehen Sie anschließend das Schwarm Null-Objekt aus dem Objekt-Manager in die XPresso-Schaltung hinein. Auf der Ausgangsseite ergänzen Sie einen Port für den soeben erzeugten Benutzerdaten-Wert und verlinken diesen mit dem Fließkomma Wert-Eingang der gemischten Mathe. Wenn Sie nun das Schwarm Null-Objekt selektieren und im Attribute-Manager auf den Benutzerdaten-Reiter wechseln, können Sie dort fortan bequem die Stärke des Ausweichvektors regeln.

Animation in Cinema 4D - Individuelle Skalierung des Abstandsvektors zwischen den Partikeln

Abbildung 3.71: Individuelle Skalierung des Abstandsvektors zwischen den Partikeln

Wenn wir nun das Ergebnis der Gemischten Mathe als Ausweichrichtung interpretieren, wäre zu überlegen, wie diese auf die Partikel übertragen werden kann. Wir hatten in der Einleitung bereits darüber gesprochen, dass sich dafür die Geschwindigkeit der Partikel anbietet. Mischen wir die aktuelle Geschwindigkeit eines Partikels mit der Ausweichrichtung, sollten wir eine weiche Ausweichbewegung erhalten können. Die Geschwindigkeit eines Partikels ist einfach abzufragen. Erzeugen Sie hierfür einen P Daten lesen-Node (Thinking Particles > TP Helfer) und lassen Sie sich darüber die Geschwindigkeit ausgeben.

Verbinden Sie den Partikel-Eingang dieses Nodes mit dem Ausgang für Partikel B am P Pass AB um eine interaktive Berechnung der Partikelgeschwindigkeiten zu erhalten. Hängen Sie an den Geschwindigkeit-Ausgang wieder einen Allgemein-Node (XPresso > Adapter) vom Datentyp Normale und lassen Sie dann die Ergebnisse dieses Allgemein-Nodes und des Gemischte Mathe-Nodes mit einem Mathe-Node (XPresso > Berechne) addieren. Der Datentyp des Mathe-Nodes muss Vektor sein. Das Ergebnis dieser Mathe taugt gut als neue Bewegungsrichtung der Partikel. Da die Bewegung eines Partikels durch seine Geschwindigkeit beschrieben wird, verwenden wir einen P Geschwindigkeit konvertieren-Node (Thinking Particles > TP Helfer), dessen Achse-Eingang mit dem Ausgang der Mathe verbunden wird. Damit ist bereits festgelegt, wohin die Partikel fliegen sollen, nicht aber wie schnell.

Damit die Partikel während des Ausweichens nicht plötzlich langsamer oder schneller werden, sollte der bereits vorhandene Betrag der Geschwindigkeit beibehalten werden. Das wäre also die Länge des Vektors, den wir bereits über den P Daten lesen-Node abgefragt haben. Erstellen Sie einen neuen Allgemein-Node (XPresso > Adapter) und belassen Sie dessen Datentyp auf Real. Verbinden Sie den Eingang dieses Nodes mit dem Geschwindigkeit-Port des P Daten lesen-Nodes. Am Ausgang des Allgemein-Nodes erhalten wird dadurch den Betrag der Geschwindigkeit, die wir direkt an den Geschwindigkeit-Eingang des P Geschwindigkeit konvertieren-Nodes weiterleiten können. Damit wäre dieser Teil der Schaltung bereits komplett. Das Ergebnis von P Geschwindigkeit konvertieren leiten Sie schließlich mit einem neuen P Daten setzen-Node (Thinking Particles > TP Standard) an die Partikel weiter, die an dem Partikel B-Ausgang von P Pass AB anliegen. Bildhaft sieht das dann wie in Abbildung 3.72 aus.

Animation in Cinema 4D - Die komplette Ausweich-Schaltung der Schwarm-Partikel

Abbildung 3.72: Die komplette Ausweich-Schaltung der Schwarm-Partikel

Der folgende Abschnitt der Schaltung sorgt dafür, dass sich die Schwarm-Partikel an dem Anführer orientieren, gleichzeitig aber auch ein gewisses Chaos und eine Verzögerung in dieses Nachfolgen gemischt werden können. Große Teile der bereits vorhandenen Schaltung werden dabei, wenn auch in etwas abgewandelter Form, erneut vorkommen. Vielleicht kommt Ihnen daher das ein oder andere bereits bekannt vor.

3.2.3 Die Anführer-Funktionalität

Wir ergänzen die Schaltung um einen weiteren P Pass AB-Node, den Sie diesmal jedoch mit der Schwarm-Gruppe für Gruppe A und der Anführer-Gruppe für Gruppe B bestücken. Da diesmal alle Partikel ausgegeben werden sollen, die Abstandskorrektur wurde schließlich durch unsere Schaltung schon vorgenommen, setzen Sie den Distanz Typ im Node auf Keiner. Schalten Sie einen P Ausrichtung-Node (Thinking Particles > TP Standard) an den Ausgang für Partikel A und stellen Sie die Quelle der Ausrichtung auf X und den Typ auf Flugrichtung. Da unser Schmetterling-Zylinder in X-Richtung modelliert wurde, richten sich damit automatisch alle Schmetterlinge passend zur Flugrichtung aus. Die Abbildung 3.73 zeigt den entsprechenden Node-Dialog noch einmal ausführlich.

Animation in Cinema 4D - Automatische Ausrichtung der Schmetterlinge

Abbildung 3.73: Automatische Ausrichtung der Schmetterlinge

Um die Flugrichtung der Partikel variabler zu gestalten, damit also nicht jeder Schmetterling exakt die Position des Anführers erreichen möchte, kann das Hinzumischen von Zufall hilfreich sein. Wir nehmen also die Positionen der Schwarm-Partikel und mischen diesen zufällige Verschiebungen hinzu. Wird dann die Zielrichtung zum Anführer berechnet, bekommen wir Richtungen, die nicht unbedingt zu der tatsächlichen Position der Schwarm-Partikel passen. Die Partikel zielen also etwas daneben. In der Schaltung lässt sich dies wie folgt realisieren:
Ergänzen Sie einen P Daten lesen-Node und verschalten Sie dessen Eingang mit dem Partikel A-Ausgang von P Pass AB. Hier liegen die Schwarm-Partikel an. Lassen Sie sich die Position ausgeben und leiten Sie diese als Startwert in einen Zufall-Node (XPresso > Allgemein). Dort verwenden Sie Echter Zufall als Zufall-Modus und lassen sich einen Vektor ausgeben. Der Zufall liefert generell nur Werte zwischen -1 und 1, muss also gleich noch multipliziert werden, um auch größere Abweichungen und somit mehr Chaos zu ermöglichen. Die Extremwerte für unseren zufälligen Vektors liegen also aktuell nur zwischen -1,-1,-1 und 1, 1, 1. Um die Größenordnung dieses Zufall-Vektors bequem von außen steuern zu können, ergänzen Sie einen weiteren Benutzerdaten-Eintrag am Schwarm Null-Objekt und nennen diesen z. B. Zufall. Benutzen Sie auch hier wieder den Datentyp Fließkomma, Prozent als Einheit und Fließkomma Slider für das Interface. Die Einstellungen sind also bis auf den Namen identisch mit Abbildung 3.71. Ziehen Sie das Schwarm Null-Objekt erneut in die Schaltung und aktivieren Sie den gerade erstellten Zufall-Port auf der Ausgang-Seite des Nodes.

Da sich dieser Wert auch nur zwischen 0 und 1 bewegt, hängen Sie einen Bereichswandler (XPresso > Berechne) an den Zufall-Port, der diesen Wert mit 1000 multipliziert. Dies erreichen Sie durch Kleinster Eingang 0, Größter Eingang 1, Kleinster Ausgang 0 und Größter Ausgang 1000 (siehe Abbildung 3.74).

Animation in Cinema 4D - Skalierung des Benutzerdaten-Werts über einen Bereichswandler-Node

Abbildung 3.74: Skalierung des Benutzerdaten-Werts über einen Bereichswandler-Node

Ein neuer Gemischte Mathe-Node mit dem Datentyp Vektor und der Funktion Multiplizieren wird mit dem Zufall-Node und dem Bereichswandler verbunden. Der Vektor-Ausgang des Zufalls kommt an den Eingang. Der Ausgang des Bereichswandlers an den Fließkomma Wert-Port. Damit liefert uns die Gemischte Mathe nun für jedes Schwarm-Partikel einen zufälligen Vektor, dessen Länge über unseren Zufall Benutzerdaten-Wert von außen gesteuert werden kann. Ein neuer Mathe-Node mit Datentyp Vektor wird zum Addieren dieses Zufall-Vektors zur aktuellen Position jedes Partikels benutzt. Damit sieht der zweite Teil unserer Schaltung wie in Abbildung 3.75 aus.

Animation in Cinema 4D - Zufällige Variation der Schwarm Partikel-Positionen

Abbildung 3.75: Zufällige Variation der Schwarm Partikel-Positionen

Am Ausgang des Mathe-Nodes steht jetzt eine zufällig korrigierte Position aller Schwarm-Partikel zur Verfügung. An dieser Stelle muss nun die Position des Anführers ins Spiel kommen. Zieht man von dessen Position unsere korrigierte Position der Schwarm-Partikel ab, erhält man die Bewegungsrichtung, die den Schwarm zum Anführer führt. Wird benötigen also einen weiteren P Daten lesen-Node (Thinking Particles > TP Helfer) und lassen uns darüber die Position des Anführers vom Partikel B-Port des P Pass AB-Nodes ausgeben.

Diese Position leiten wir an den obersten Eingang eines neuen Mathe-Nodes, der mit Datentyp Vektor die Funktion Subtrahieren benutzt. An den unteren Eingang kommt der Ausgang des ersten Mathe-Nodes, der die zufällige Schwarm-Position berechnet hatte.

Ab hier ist die schwerste Arbeit erledigt, denn die nun folgenden Nodes werden wie im ersten Teil der Schaltung verwendet, um aus einer Richtung eine Geschwindigkeit herzuleiten. Sie ergänzen also zuerst einen Allgemein-Adapter aus den XPresso-Nodes mit dem Datentyp Normale und hängen diesen an den subtrahierenden Mathe-Node. Am Ausgang liegt nun die normierte Zielrichtung jedes Schwarm-Partikels auf die Position des Anführers bereit. Um nun die Anziehungskraft des Anführers auf seine Schmetterlings-Gefolgschaft beeinflussen zu können, sollten wir diesen normierten Vektor noch von außen editieren können. Legen Sie also erneut einen Benutzerdaten-Wert am Schwarm Null-Objekt an und nennen Sie diesen z. B. Anziehungskraft Anführer. Datentyp, Einheit und Interface stellen Sie exakt wie bei den anderen beiden Benutzerdaten ein. Ziehen Sie anschließend das Schwarm Null-Objekt erneut in die Schaltung und setzen Sie dort Anziehungskraft Anführer als Ausgang-Port. Leiten Sie diesen Wert an den Fließkomma Wert-Eingang eines neuen Gemischte Mathe-Nodes, der den Datentyp Vektor und die Funktion Mulitplizieren benutzt. Der obere Eingang dieses Nodes wird mit dem Ausgang des normierenden Allgemein-Nodes beschaltet.

Damit haben wir nun endlich am Ausgang der Gemischten Mathe die gewünschte Flugrichtung der Schwarm-Partikel berechnet. Die Abbildung 3.76 sollte Ihnen helfen, wenn Sie sich zwischendurch verzettelt haben sollten.

Animation in Cinema 4D - Die komplette Berechnung der Bewegungsrichtung des Schwarms auf die Position des Anführers zu

Abbildung 3.76: Die komplette Berechnung der Bewegungsrichtung des Schwarms auf die Position des Anführers zu

Im Prinzip ist es jetzt fast geschafft. Wir müssen nur noch die aktuelle Geschwindigkeit der Schwarm-Partikel abfragen und unsere neue Richtung hinzumischen. Das Prinzip ist also identisch mit dem der Ausweich-Schaltung. Ergänzen Sie hierzu einen zusätzlichen Geschwindigkeit-Ausgang am P Daten lesen-Node, der bereits am Partikel A-Ausgang des P Pass AB-Nodes hängt. Leiten Sie diesen Wert in einen neuen Allgemein-Node mit dem Datentyp Normale, um die Geschwindigkeit auf ihre Richtung zu beschränken. Führen Sie dann dessen Ergebnis mit dem Ausgang der hinteren Gemischten Mathe in einem neuen Mathe-Node zusammen, der Vektoren addiert. Dadurch, dass wir die Anziehungskraft des Anführers von außen steuern können, wird dieser Mathe-Node stufenlos beeinflussen können, ob die Partikel ihre aktuelle Flugrichtung beibehalten oder sich stärker vom Anführer angezogen fühlen. Na schon gespannt, ob das tatsächlich funktioniert?

Das Ergebnis der Schaltung: Ein Schwarm Schmetterlinge folgt einem anführenden Objekt nach.

Animation in Cinema 4D - Ergebnis der Schaltung

Drei Nodes brauchen wir noch, bevor wir es testen können. Den ersten Node bildet erneut ein Allgemein-Adapter aus den XPresso-Nodes, der diesmal im Datentyp Real belassen wird und an den Geschwindigkeit-Ausgang des P Daten lesen-Nodes gehängt wird, der mit dem Partikel A-Ausgang des P Pass AB-Nodes verbunden ist. Das Ergebnis dieses Allgemein-Nodes stellt somit den Betrag der aktuellen Geschwindigkeit der Schwarm-Partikel dar. Diese Betrag soll wieder konstant bleiben, damit die Schmetterlinge zwischendurch nicht schneller oder langsamer werden. Das hatten wir im ersten Teil der Schaltung ja genauso gehandhabt.

Erstellen Sie daher einen neuen P Geschwindigkeit konvertieren-Node und leiten Sie den Ausgang dieses Allgemein-Nodes an den Geschwindigkeit-Eingang des P Geschwindigkeit konvertieren-Nodes. An den Achse-Eingang hängen Sie den Ausgang des addierenden Mathe-Nodes, der für die Mischung der aktuellen Flugrichtung und der Flugrichtung auf den Anführer zuständig war. Nun kommt der Moment der Wahrheit. Erstellen Sie einen P Daten setzen-Node und leiten Sie den Partikel A-Ausgang unseres P Pass AB-Nodes in seinen Partikel-Eingang. Erzeugen Sie einen Geschwindigkeit-Eingang am P Daten setzen-Node und leiten Sie dort das Ergebnis des P Geschwindigkeit konvertieren-Nodes hinein.

Um die Schaltung zu testen, stellen Sie vorerst die Benutzerdaten für Anziehungskraft Anführer und die Abstoßung auf jeweils 100%. Den Zufall regeln Sie versuchsweise bei 50% ein. Wenn Sie nun die Animation ablaufen lassen, sollten Sie beobachten können, wie sich die Partikel in einer Art Wolke um den Anführer gruppieren. Wenn Sie das Anführer Null-Objekt verschieben oder gar über Keyframes animieren, sollten Sie in der Lage sein, die Schmetterlinge mitzuziehen. Wirkt dabei Ihr Ansichtsfenster zu träge, reduzieren Sie die Anzahl der Schwarm-Partikel im P Sturm-Node. Experimentieren Sie etwas mit den Benutzerdaten. Sie werden feststellen, dass Sie über den Zufall auch die Größe der Partikelwolke verändern können.

Ich hoffe, Ihnen hat dieses kleine Beispiel etwas Spaß gemacht und vielleicht die Lust auf mehr geweckt. Falls nicht, haben Sie aber vielleicht dennoch einen Einblick erhalten, wie nützlich XPresso-Schaltungen gerade für die Animation sein können.

Natürlich können aber auch sehr anspruchsvolle Animationen ganz ohne Mathe-Kenntnisse und XPresso entstehen. Darum geht es unter anderem im folgenden Kapitel, wo wir uns mit den dynamischen Simulationssystemen beschäftigen werden.

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