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

Tutorials 23. Dezember 2015 – 0 Kommentare

Kollision-Node

Sicherlich etwas eingängiger und vielseitiger einsetzbar ist der Kollision-Node. Damit können Sie überprüfen, ob sich zwei Objekte berühren oder sich innerhalb einer vorgegebenen Distanz zueinander befinden. Es lassen sich sogar Selektionen anhand dieser Überprüfungen erstellen. Wichtig für die Funktion des Nodes ist nur, dass die überprüften Objekte allesamt Polygon-Objekts sind. Parametrische Grundobjekte müssten also zuerst konvertiert werden.

Um diesen Node testen zu können, benötigen wir zwei Objekte in der Szene, die auf Kollision überprüft werden können. Ich benutze dafür einen konvertierten Würfel und eine konvertierte Kugel. Geben Sie einem der beiden Objekte das XPresso-Tag und ziehen Sie anschließend beide Modelle aus dem Objekt-Manager in den XPresso-Editor hinein. Dort ergänzen Sie an beiden Nodes die Objekt-Ausgänge. Dieser Datentyp ermöglicht damit verbundenen Nodes praktisch auf alle Eigenschaften der Objekte zuzugreifen. Rufen Sie nun den Kollision-Node aus den allgemeinen XPresso-Nodes ab und verbinden Sie die beiden Objekt-Nodes mit dessen Objekt-Eingänge. Über einen Ergebnis-Node, den Sie unter Neuer Node > XPresso > Allgemein finden, können Sie jetzt bereits im Boole-Format ablesen, ob die beiden Objekte Berührpunkte bzw. Durchdringungen haben oder nicht (siehe Abbildung 2.48).

Animation in Cinema 4D - Beispielszene zur Demonstration des Kollision-Nodes

Abbildung 2.48: Beispielszene zur Demonstration des Kollision-Nodes

Dabei kann die Präzision der Kollisionsabfrage über die Einstellung des Kollisions Typs am Kollision-Node vorgegeben werden. Die voreingestellte Bounding Box nutzt dafür nur die bereits bekannten Um-Quader der Objekte, also eine Quaderform, die durch die extremsten Punktpositionen an den Objekten vorgegeben wird. Nicht sonderlich präzise für organisch geformte Objekte, wie z. B. unsere Kugel, aber dafür natürlich auch sehr einfach und somit schnell in der Berechnung. Zusätzlich können auch untergeordnete Objekte mit Unterobjekte einbeziehen in die Berechnung eingeschlossen werden. Dabei werden jedoch Um-Quader erzeugt, die jeweils die komplette Gruppe der Unterobjekte mit einschließen. Die Berechnung wird also sehr unpräzise, vor allem bei weiter voneinander entfernten Objekten innerhalb der Gruppen. Ähnlich abstrahierend kann der Kollisions Typ Kugel sein. Die Form der kollidierenden Objekte wird dabei durch Kugeln angenähert. Auch hier führt Unterobjekte einbeziehen zu einer oft sehr großen und somit ungenauen Kugel, die auf Kollisionen getestet wird.

Der Kollisions Typ Objekt ist rechnerisch am exaktesten, denn hier werden tatsächlich alle Flächen der beteiligten Objekte auf Kollisionen geprüft. Es werden dabei immer nur die direkt über die Eingänge am Kollision-Node verschalteten Objekte überprüft. Die Option zur Einbeziehung von Unterobjekten steht hier nicht mehr zur Verfügung. Dafür können wir jetzt aber auch Selektions-Tags berechnen lassen. Das funktioniert folgendermaßen: Selektieren Sie eines der beiden Objekte und schalten Sie anschließen in den Polygone bearbeiten-Modus von Cinema 4D um. Wählen Sie aus dem Selektieren-Menü den Befehl Selektion einfrieren aus. Es erscheint ein neues Polygon Selektion-Tag hinter dem Objekt. Wiederholen Sie diese Schritte mit dem zweiten Polygon-Objekt. Für bessere Übersichtlichkeit geben Sie den beiden neuen Tags am besten sinnvolle und zu den Objekten passende Namen. Selektieren Sie dann den Kollision-Node in der Schaltung und bestücken Sie diesen über den Attribute-Manager und über die beiden Felder für Selektions-Tag 1 und Selektions-Tag 2 mit den beiden Selektions-Tags, die jeweils an Objekt 1- und am Objekt 2-Port hängen. Stellen Sie sicher, dass Sie dabei die zugewiesenen Tags nicht vertauscht haben. Aus diesem Grund ist auch die sinnvolle Benennung der Tags vorteilhaft.

Sofern die Objekte tatsächlich kollidieren, sollten Sie nun nach einem Doppelklick auf eines der Selektions-Tags im Objekt-Manager die darin gespeicherte Selektion direkt in den Editoransichten erkennen können. Die Abbildung 2.49 zeigt so beispielsweise die Polygone an der Kugel, die von dem Würfel durchdrungen werden. An dieser Ansicht wird aber auch deutlich, dass nur die tatsächlich von den Flächen des anderen Objekts durchdrungenen Polygone ausgewählt werden. Im Inneren der Selektion verbleiben nicht ausgewählte Flächen. So ist es nun einmal mit Cinema 4D und dessen Polygon-Objekten. Deren Inneres ist grundsätzlich leer und kann daher auch nicht kollidieren. Beachten Sie zudem, dass auf diesem Wege ausschließlich Polygon-Selektionen errechnet werden können. Punkt- und Kanten-Selektionen lassen sich daher als Selektions-Tags auch nicht im Kollision-Node zuweisen.

Animation in Cinema 4D - Automatische Speicherung von Selektionen durch den Kollision-Node

Abbildung 2.49: Automatische Speicherung von Selektionen durch den Kollision-Node

Der Abstand Kollision Typ errechnet sich ähnlich wie der Objekt-Modus. Sie können nun aber zusätzlich einen Toleranz-Wert angeben, der als eine Art Sicherheitsabstand zwischen den Flächen der Objekte fungiert. Erst wenn zwischen den Oberflächen dieser Abstand unterschritten wird, kommt es zu einer Kollision. Um diesen Toleranz-Wert einstellen zu können, müssen Sie zuerst den gleichnamigen Eingang-Port über die blaue Fläche des Kollision-Nodes aufrufen. Diese Art der Kollisionsberechnung funktioniert aber nur so lange, bis sich die Objekte tatsächlich berühren. Im Fall einer echten Flächenkollision liefert der Node immer FALSE als Ergebnis!

Der letzte Modus des Kollisions Typs nennt sich Toleranz und muss ebenfalls über den extra aufzurufenden Toleranz-Eingang am Kollision-Node mit einem Wert belegt werden. Auch dieser Modus ist stark mit dem Kollisions Typ Objekt verwandt, berechnet also ebenfalls Durchdringungen zwischen den Polygonen der Objekte. Er kann mithilfe der Toleranz-Einstellung jedoch schneller in der Berechnung sein. Die Toleranz gibt in diesem Modus nämlich einen gewissen Abstandspuffer um jede Fläche an, in dem Kollisionen erkannt werden. Flächen müssen also nicht unbedingt exakt aufeinandertreffen, um eine Kollision auszulösen. Die Toleranz macht das Ergebnis also etwas ungenauer, weil eventuell Kollisionen schon vor einer tatsächlichen Durchdringung erkennt werden, aber das fällt bei moderaten Toleranz-Einstellungen und sich bewegenden Objekten während einer Animation in der Regel nicht störend auf. Auch die in Cinema 4D selbst benutzte Kollisionserkennung, z. B. im Dynamics-Modul, nutzt derartige Sicherheitsabstände um die Objekte herum zur Beschleunigung der Berechnung.

Schauen wir uns nun die Ausgänge am Kollision-Node an. Der Kollision-Port wurde bereits angesprochen und liefert ein schlichtes Boole-Signal, ob eine Kollision im Sinne des gewählten Kollision Typs zwischen den Objekten erkannt wurde, oder nicht. Beachten Sie, dass es sich generell um Polygon-Objekte handeln muss. Grundobjekte müssen also zuerst konvertiert werden. Ein weiterer Ausgang am Node nennt sich Abstand und gibt die geringste Entfernung zwischen den beiden verbundenen Objekten wieder. Dies funktioniert jedoch nur für die Kollisionstypen Kugel und Abstand. Dabei wird der Abstand generell nur an der Außenseite der Objekte gemessen. Überlappen sich die Objekte also bereits, ist der Abstand-Wert relativ wertlos, bzw. wird nicht länger korrekt berechnet. Nur solange die Objekte noch einen kleinen Spalt zwischen sich haben, werden brauchbare Ergebnisse geliefert.

Sofern die Kollisionstypen Objekt oder Abstand benutzt werden, lassen sich über die optionalen Ausgänge für Polygon-Index 1 und Polygon-Index 2 die jeweils ersten Polygon-Nummern am ersten und am zweiten Objekt ausgeben, die an der Kollision beteiligt sind. Diese Polygon-Nummern sind durch die Reihenfolge der Polygone am Objekt vorgegeben. Sie können die Anzahl und Nummerierung der Punkte und Polygone ansonsten jederzeit über den Struktur-Manager von Cinema 4D einsehen. Denken Sie also daran, dass selbst wenn mehrere Flächen an der Kollision beteiligt sind, hier immer nur die Indexnummer des jeweils ersten beteiligten Polygons ausgegeben wird. Wer es noch etwas genauer haben möchte, kann beim Kollision Typ Abstand auch Punkt 1 oder Punkt 2 ausgeben lassen. Damit sind keine tatsächlichen Polygon-Eckpunkte an diesen Objekten gemeint, sondern Positionen auf den kollidierenden Oberflächen. Daher geben diese Ports auch Vektoren aus, die lokalen Positionen im Achsensystem von Objekt 1 bzw. Objekt 2 entsprechen. Um diese Positionen in das Weltsystem umzurechnen, müssten diese Vektoren also noch mit den Matrizen des jeweiligen Objekts multipliziert werden. Wir kommen darauf noch etwas später zurück.

Schließlich soll auch die Option für Deformierte Punkte benutzen in den Einstellungen des Kollision-Nodes nicht unerwähnt bleiben. Diese kann mit allen Kollisionstypen kombiniert werden und wertet dann auch verformte Objekte richtig aus. Ein z. B. über einen Biege-Deformator verformtes Objekt kann dann auch realistisch auf Kollision abgefragt werden. Beachten Sie dabei nur, dass die Priorität des XPresso-Tags dazu erhöht werden muss, damit diese Kollisionsberechnung erst zeitlich nach der Verformung der Objekte berechnet wird. In der Regel muss die Priorität des Tags in solchen Fällen mindestens Generatoren 1 betragen.

Kommentar-Node

Dieser Node unterstützt uns bei der Auskommentierung von komplexen Schaltungen. Er stellt nämlich ein Kommentar-Feld im Attribute-Manager zur Verfügung, in dem wir Bemerkungen oder z. B. Hinweise zur Benutzung einer Schaltung oder zur Funktion einzelner Abschnitte hinterlegen können. Anders als bei den Kommentaren die ja auch in den Basis-Einstellungen der Nodes hinterlassen werden können, stellt der Kommentar-Node unsere Texte direkt im XPresso-Editor dar (siehe Abbildung 2.50). Beachten Sie beim Schreiben von Kommentaren, dass die Darstellung des Kommentar-Nodes im XPresso-Editor oft erst nach dem Anklicken des Nodes aktualisiert wird. Die Betätigung der Enter-Taste beim Schreiben von Kommentaren reicht dafür nicht aus.

Animation in Cinema 4D - Kommentare können mithilfe des Kommentar-Nodes eingeblendet werden.

Abbildung 2.50: Kommentare können mithilfe des Kommentar-Nodes eingeblendet werden.

Konstante-Node

Oftmals müssen Nodes mit statischen Vorgaben gefüttert werden, um brauchbare Ergebnisse zu liefern. Eine Möglichkeit dafür haben wir bereits oft benutzt, nämlich diese Eingangswerte direkt auf der Parameter-Dialogseite im Attribute-Manager einzutragen. Es gibt jedoch auch etwas exotischere Datentypen, die nicht auf diese Weise definiert werden können, wie z. B. Linsenglühen oder eine Ein-/Ausschluss-Liste. Zudem ist es etwas unübersichtlich, über Eingang-Ports in Nodes geleitete Werte nicht direkt im XPresso-Editor sehen zu können. In beiden Fällen hilft der Konstante-Node (siehe Beispiel in Abbildung 2.51).

Der Konstante-Node stellt Werte im XPresso-Editor zur Verfügung.

Abbildung 2.51: Der Konstante-Node stellt Werte im XPresso-Editor zur Verfügung.

Dieser stellt nicht nur eine Vielzahl verschiedener Datentypen zur Wahl, sondern macht die Nutzung statischer Werte, also eben von Konstanten, in der Schaltung übersichtlicher. Zusätzlich steht z. B. bei Normalen, Integer- oder Real-Werten auch ein Konstante-Menü im Attribute-Manager zur Verfügung, über das z. B. Vielfache der Kreiszahl PI oder andere Standardwerte abgerufen werden können.

Link-Liste-Node

Oftmals ist es in Schaltungen so, dass eine feste Gruppe von Objekten, Tags oder Materialien abgearbeitet werden soll. Es gibt dafür verschiedene Nodes in XPresso, wovon die Link-Liste eine Möglichkeit darstellt. Wie in Abbildung 2.52 zu erkennen, besteht dieser Node hauptsächlich aus einem leeren Bereich, der sogenannten Link-Liste, die von uns per Drag&Drop aus dem Material-Manager oder dem Objekt-Manager mit Materialien, Tags oder Objekten gefüllt werden kann. In der Regel sollte man sich dabei auf einen Typ beschränken, also nicht Materialien und z. B. Objekte in der Liste gemischt verwenden.

Die Link-Liste verfügt über einen Link-Ausgang, der immer nur einen der Listeneinträge auf einmal ausgibt. Welcher Listeneintrag dies ist, legen Sie über den Index-Wert fest, der als Eingang-Port am Node vorhanden ist. Wie gewohnt kann dieser Wert zwar auch direkt über den Parameter-Bereich im Attribute-Manager bedient werden, in der Regel verwendet man hierfür jedoch Schleifen oder ähnliche Schaltungen, die nacheinander eine gewisse Abfolge an Werten durchlaufen. Der Index-Wert 0 steht automatisch für den obersten, also ersten Eintrag der Link-Liste, der Index-Wert 1 für den zweiten Eintrag und so weiter. Ein alternativer Anzahl-Ausgangsport am Node gibt stets die aktuelle Anzahl an Listeneinträgen wieder und kann so bei der Begrenzung der beschriebenen Schleifendurchläufe helfen. Beachten Sie jedoch, dass auch Index-Werte benutzt werden können, die größer oder gleich der Anzahl der Listeneinträge sind. In solchen Fällen wird automatisch auf die Anzahl der tatsächlich vorhandenen Listeneinträge umgerechnet. Im Beispiel der Abbildung 2.52 würde also ein Index-Wert von 2 automatisch wieder den ersten Listeneintrag am Link-Ausgang zur Verfügung stellen.

Die Verwendung einer Link-Liste

Abbildung 2.52: Die Verwendung einer Link-Liste

Der Link-Ausgang am Node ist kompatibel zum Datentyp Objekt und kann daher direkt mit den Objekt-Eingängen von in die Schaltung gezogenen Objekten, Materialien und Tags benutzt werden. Dies wird auf der rechten Seite der Abbildung 2.52 deutlich. Dort wird eine Link-Liste benutzt, die zwei Materialien enthält. Um nun auf die Eigenschaften dieser Materialien zugreifen zu können, muss ein beliebiges Material in die Schaltung gezogen werden. Nur so erhält man an der Eingangs- und Ausgangsseite des Nodes die typischen Parameter eines Materials. Der Link-Ausgang kann dann mit dem Objekt-Eingang am neuen Material-Node verbunden werden. Durch die Vorgabe des Index-Werts am Link-Liste-Node wählen Sie anschließend unter den dort aufgeführten Materialien aus, auf wessen Daten Sie am Material-Node zugreifen möchten. In dem abgebildeten Beispiel wird auf diese Weise gerade die Farbe des roten Materials abgefragt.

Der Vorteil der Link-Liste gegenüber anderen Nodes, die ebenfalls automatisch Listeneinträge ausgeben können ist der, dass wir direkt auch nur einzelne Einträge der Liste ausgeben können.

Noise-Node

Dieser Node kann gut z. B. verwendet werden, um zufällig erscheinende Werte zu generieren. Im Node stehen dafür verschiedene Noise-Typen zur Verfügung, deren Namen Ihnen sicherlich bereits bekannt vorkommen. Tatsächlich tauchen diese Rauschmuster ebenfalls im Noise-Shader des Materialsystems von Cinema 4D auf. Die Abbildung 2.53 zeigt diese bildhaft von links nach rechts betrachtet an.

V.l.n.r.: Noise, Turbulenz, Welleförmige Turbulenz und Fraktal Brown Bewegung

Abbildung 2.53: V.l.n.r.: Noise, Turbulenz, Welleförmige Turbulenz und Fraktal Brown Bewegung

Beachten Sie, dass es sich bei diesen Mustern um echte dreidimensionale Strukturen handelt. Sie können daher über einen Vektor-Eingang am Noise-Node auch eine dreidimensionale Position angeben, an der ein Helligkeitswert des gewählten Musters ermittelt werden soll. Alternativ hierzu stehen auch drei separate Eingänge für die X-Koordinate, die Y-Koordinate und die Z-Koordinate zur Verfügung. Diese Werte bewirken das gleiche wie der Vektor-Eingang. Sie können sich daher entscheiden, ob Sie entweder den kompletten Vektor oder lieber drei einzelne Werte vorgeben möchten.

Die über den Noise-Typ definierten Muster und deren Helligkeitswerte an der ausgelesenen Raumkoordinate werden in Real-Zahlen umgerechnet, die am Noise-Ausgang des Nodes zur Verfügung gestellt werden. Der Wertbereich dort ist abhängig vom Amplitude-Wert des Nodes. Bei einer Amplitude von 1 erhalten Sie z. B. Werte zwischen -1 und +1. Wenn Sie nur positive Noise-Werte erhalten möchten, schalten Sie die Option für Absolute Werte ein. Die Varianz der ermittelten Werte ist abhängig von der Größe des Noise-Musters und dem Wert für die Oktaven. Kleine Größe-Werte vergrößern das Noise-Muster und resultieren somit in weniger abrupten Veränderungen der ausgelesenen Werte, wenn z. B. der Vektor-Eingang verändert wird. Entsprechend führen höhere Größe-Werte zu schnelleren Wechseln der ausgegebenen Noise-Werte. Den Begriff Oktaven kennen Sie ebenfalls bereits aus dem Noise-Shader. Damit ist die Rechengenauigkeit gemeint. Höhere Werte generieren stärker verästelte und detailreichere Muster. Oktaven stehen jedoch nicht für den Noise-Typ Noise zur Verfügung.

Um auch bei ansonsten gleichen Vorgaben z. B. von Bild zu Bild während einer Animation verschiedenen Werte zu erhalten, steht Ihnen ein Zeit-Eingang am Noise-Node zur Verfügung. Jede Veränderung dieses Werts führt zu einer Veränderung des gewählten Noise-Musters. Wie schnell sich das Muster von Bild zu Bild verändert, legen Sie über den Frequenz-Wert fest. Je höher die Frequenz ist, desto schneller finden Veränderungen im Noise statt. Schließlich steht noch ein Startwert zur Verfügung. Dieser bildet die Basis der gesamten Mustergenerierung. Eine Veränderung des Werts führt somit zu einer ganz neuen Abfolge von Mustern während einer Animation. Der Vorteil dieses Werts ist, dass die erzeugten Muster und somit auch die ausgegebenen Noise-Werte reproduzierbar sind. Bei gleichen Einstellungen am Noise-Node wird dieser bei jeder Animation die gleichen Werte liefern. Zudem können Sie durch Variation des Startwerts auch mehrere Noise-Nodes mit ansonsten gleichen Einstellungen nutzen und dennoch an jedem Node unterschiedliche Werte erhalten.
Wir werden später auch noch andere Nodes kennenlernen, die zufällige Zahlen erzeugen können. Der Vorteil des Noise-Nodes liegt jedoch in der hinterlegten grafischen Noise-Struktur. Diese führt bei entsprechenden Einstellungen z. B. für die Größe und Frequenz dazu, dass die Wechsel zwischen den ausgegebenen Werten nicht willkürlich, sondern fließend gestaltet werden können. Hierzu gibt die Abbildung 2.54 ein einfaches Beispiel.

Zufällige Farbveränderung eines Materials

Abbildung 2.54: Zufällige Farbveränderung eines Materials

Die Farbe eines Materials soll während der Animation zufällig, aber mit fließenden Übergängen variiert werden. Wir setzen dies soll um, dass drei verschiedene Noise-Nodes zum Einsatz kommen. Alle Nodes verwenden das gleiche Noise-Muster mit absoluten Werten. Dies ist sinnvoll, da Farbanteile nicht negativ sein können. Die Größe wird generell z. B. auf 0.5 reduziert, um noch weichere Veränderungen zwischen den Noise-Werten zu erhalten. Der einzige Unterschied zwischen den drei Noise-Nodes besteht in der Einstellung der Startwerte. Damit jeder Node einen anderen Noise-Wert liefert, sollten die Startwerte alle unterschiedlich gewählt werden. Zudem muss ein Zeit-Node aus den allgemeinen XPresso-Nodes aufgerufen und mit dem Zeit-Eingang aller Noise-Nodes verbunden werden. Nur so erhalten wir neue Zahlen bei jedem Bildwechsel der Animation. Schließlich leiten Sie die drei Noise-Zahlen an die R-, G- und B-Farbanteile eines Materials weiter, das Sie aus dem Material-Manager in die Schaltung gezogen haben. Wird die Animation abgespielt, erhalten Sie nun automatische weiche Farbwechsel im Material. Ähnliche Effekte sind denkbar zur Variation einer Objektposition oder z. B. zur Variation der Windrichtung innerhalb eines Partikelsystems. Besonders charmant sind derartige Schaltungen, weil sie komplett ohne Keyframes auskommen, leicht anzupassen und zwischen Projekten austauschbar sind.

Objekt-Node

Diesen Typ Funktionsknoten kennen wir bereits. Er entsteht z. B. automatisch durch das Ziehen eines Objekts aus dem Objekt-Manager in den XPresso-Editor. Alternativ lässt sich so ein Node aber auch manuell aufrufen. Welches Objekt dann gemeint ist, muss in so einem Fall manuell über die Art der Referenz eingestellt werden. Wir haben darüber bereits ausführlich gesprochen, so dass ich hier auf eine Wiederholung verzichten möchte. Bitte lesen Sie bei Fragen hierzu im Abschnitt Nodes und Ports bedienen nach.

Auflistung von Objekten in einem Objektliste-Node

Abbildung 2.55: Auflistung von Objekten in einem Objektliste-Node

Objekt-Index-Node

Bei der Erläuterung des Link-Liste-Nodes haben wir bereits eine Möglichkeit kennengelernt, z. B. eine begrenzte Gruppe von Objekten ausgeben zu können. Sogar der gezielte Zugriff auf einzelne Einträge war dort über den Index-Wert möglich. In diesem Zusammenhang hatte ich schon erwähnt, dass es noch andere Nodes gibt, die ebenfalls Listen von Objekten automatisch aus- bzw. wiedergeben können. Der Nachteil an solchen Nodes ist jedoch, dass diese Wiedergabe immer in einem Schwung und vollständig erfolgt. D. h. alle Einträge so einer Liste werden automatisch und vollständig ausgegeben. Der hier beschriebene Objekt-Index-Node kann dem etwas entgegenwirken. Wurde z. B. ein Objektliste-Node mit mehreren Objekten gefüllt, so kann ein nachgeschalteter Objekt-Index an seinem Index-Ausgang die Indexnummer des aktuell bearbeiteten Objekts ausgeben. Die Indexnummer entspricht dabei dem Listeneintrag des Objekts. Die folgende Abbildung 2.56 gibt dazu ein mögliches Beispiel.

Automatische Verteilung von Objekten

Abbildung 2.56: Automatische Verteilung von Objekten

Dort wird über einen Objektliste-Node eine Reihe von Objekten in den Objekt-Index-Node geleitet. Die frühere Abbildung 2.55 zeigt den Inhalt dieser Objektliste. Wir haben diesen Node bislang noch nicht besprochen, dennoch möchte ich gerne weitere Informationen dazu auf später vertagen. Wichtig ist für Sie zum aktuellen Zeitpunkt sowieso nur, dass diese Objekte bei jeder Ausführung der Schaltung nacheinander und vollständig ausgegeben werden. Der Objekt-Index liefert uns dazu die passende Index-Nummer des gerade ausgegebenen Objekts. Diese Zahl lässt sich z. B. multiplizieren und zur gleichmäßigen Verteilung aller Objekte in der Liste nutzen, so wie es Abbildung 2.56 auf der rechten Seite zeigt. Dort wurde die pro Objekt multiplizierte Indexzahl als X-Position verwendet. Die ebenfalls ausgegebene Instanz entspricht nur dem durchgeschleiften Instanz-Eingang des Nodes und somit in unserem Beispiel dem Objekt, das gerade von der Objektliste ausgegeben wird.

Polygon-Node

Besonders interessant sind in XPresso die Funktionen, die uns z. B. ermöglichen, Punktpositionen oder Normalen von Objekten abzufragen. Der Polygon-Node gehört daher auch zu dieser spannenden Gruppe von Nodes. Beachten Sie, dass der Objekt-Eingang dieses Nodes wieder nur mit Polygon-Objekten umgehen kann. Grundobjekte müssen daher vor der Benutzung konvertiert werden. Der Eingang für den Polygon-Index ist dann für die Auswahl der Polygonfläche gedacht, die Sie über den Node abfragen möchten (siehe Abbildung 2.57).

Abfragen von Polygon-Objekten

Abbildung 2.57: Abfragen von Polygon-Objekten

Punkte und Polygone sind nämlich bei Objekten durchnummeriert und über diese Indexnummer eindeutig ansprechbar. Die Indexnummern beginnen generell beim ersten Polygon bzw. ersten Punkt mit der Ziffer 0. Was Sie nun von dem so herausgesuchten Polygon wissen möchten legen Sie über die Wahl der Ausgang-Ports fest. Zu Verfügung steht hier z. B. die Polygon-Anzahl, also die Gesamtzahl der Flächen an dem Objekt. Die Ausgänge für Index-Punkt 1 bis Index-Punkt 4 stellen die Nummern der bis zu vier individuellen Eckpunkte an der Fläche zur Verfügung. Daran sehen Sie bereits, dass N-Gons, also Flächen mit mehr als vier Eckpunkten, hierüber nicht ausgelesen werden können. Intern bestehen nämlich auch solche Polygone wieder nur aus Drei- und Vierecken. Sie können dies leicht im Struktur-Manager von Cinema 4D überprüfen, sofern Sie dessen Modus auf Polygone schalten. Dort können Sie übrigens auch in der linken Spalte die fortlaufende Indexnummer der Polygone ablesen.

Die Index-Punktnummer lassen sich dann mithilfe eines separaten Punkt-Nodes nutzen, um tatsächlich an die Positionen der an der Polygonfläche beteiligten Punkte zu kommen. Wir werden diesen Node gleich im Anschluss noch besprechen. Ansonsten stehen Ihnen am Polygon-Node noch Ausgänge für den Polygon-Mittelpunkt und die Polygon-Normale, also die Senkrechte auf der Vorderseite des Polygons zur Verfügung. Wie der Name schon sagt, ist die Polygon-Normale automatisch normiert, also ein Vektor mit der Einheitslänge 1. Wir hatten darüber schon im Kontext mit den verschiedenen XPresso-Datentypen gesprochen. Das Bezugssystem für den Position-Vektor des Polygon-Mittelpunkts und die Oberflächennormalen des Polygons geben Sie bei selektiertem Polygon-Node im Attribute-Manager vor. Mit dem sogenannten Matrix-Modus können Sie zwischen den gängigen Bezugssystemen Global (also bezogen auf das Welt-Achsensystem) oder Lokal (bezogen auf das Objektsystem) auswählen. Eine zusätzliche Option für Deformierte Punkte benutzen berücksichtigt bei der Ausgabe der Vektoren auch zusätzlich auf das Objekt einwirkende Deformationen. Wie immer bei solchen Optionen, muss dann jedoch auf die Priorität des XPresso-Tags dieser Schaltung geachtet werden. Die Priorität muss hoch genug sein, damit die Berechnung der Nodes erst nach der Berechnung der Deformationen am Objekt erfolgt. Die ist in der Regel bei der Priorität Generatoren und einem Prioritätswert über Null der Fall.

Zu der Ausgabe der Index-Punkte bleibt noch zu erwähnen, dass bei Auswahl eines Dreiecks die Werte für Index-Punkt 3 und Index-Punkt 4 identisch sind. Es sind also immer alle vier Index-Punkt-Ausgänge mit Werten belegt. Die vorherige Abbildung 2.57 zeigt so einen Fall. Zudem können über den Polygon-Index auch Zahlen verwendet werden, die außerhalb der eigentlichen Polygon-Anzahl am Objekt liegen. Sogar negative Zahlen sind problemlos möglich. In solchen Fällen liefert der Polygon-Node automatisch das letzte bzw. erste Polygon des Objekts.

Punkt-Node

Dieser Node ist von seiner Funktion her eng verwandt mit dem oben beschriebenen Polygon-Node. Auch hier muss ein Polygon-Objekt an den Objekt-Eingang angeschlossen werden. Parametrische Grundobjekte sind also vorher zu konvertieren. Auch der Index-Eingang ist bereits bekannt und hat hier eine ähnliche Bedeutung. Der Punkt-Index gibt die Indexnummer eines Punkts an, den wir auslesen oder setzen möchten. Und hier liegt der Hauptunterschied zum Polygon-Node, denn der Punkt-Node kann eben auch zum Neu-Positionieren von Punkten am Objekt benutzt werden, wogegen der Polygon-Node nur für das Abfragen taugt. Wir finden daher auch einen optionalen Eingang-Port für die Punkt-Position am Punkt-Node, der mit einem Vektor-Wert bestückt werden kann. Die Ausgabe-Seite des Nodes bietet ansonsten nur wenige Überraschungen. Neben der Punkt-Anzahl am Objekt und der Punkt-Position des über den Punkt-Index ausgewählten Punkt kann auch dessen Punkt-Normale ausgegeben werden. Die Punkt-Position kann wie beim Polygon-Node Global oder Lokal berechnet werden. Sie finden dazu wieder einen Matrix-Modus im Attribute-Manager. Auch die Option für Deformierte Punkte benutzen fehlt hier nicht, um auch an deformierten Objekten die exakte Position der Punkte abfragen zu können. Beachten Sie auch bei diesem Node dann jedoch wieder, dass die Priorität des XPresso-Tags angepasst werden muss. In der Regel verwenden Sie die Priorität Generatoren mit einem Wert über Null, um eine Berechnung der Schaltung erst nach der Deformation zu gewährleisten. Beachten Sie auch, dass die Punkt-Normale stets im lokalen Achsensystem des Objekts berechnet wird. Daran ändert also die Matrix Modus-Einstellung nichts!

Animation in Cinema 4D - Auslesen der Position eines Polygon-Punkts

Abbildung 2.58: Auslesen der Position eines Polygon-Punkts

Die Abbildung 2.58 zeigt ein Beispiel in Kombination mit dem Polygon-Node. Es handelt sich dabei nur um eine Erweiterung der bereits benutzten Schaltung. Über den Polygon-Node wird die Indexnummer des ersten Eckpunkts eines beliebigen Polygons ausgegeben. Diese Punktnummer wird als Punkt-Index in einen Punkt-Node geleitet. An den Ausgängen des Punkt-Nodes kann nun die Position dieses Punkts wahlweise im Objekt- oder Welt-Achsensystem ausgegeben werden. Dies hängt nur von der Einstellung des Matrix Modus im Attribute-Manager ab. Die Punkt-Normale unterscheidet sich insofern von der Polygon-Normalen des Polygon-Nodes, dass bei der Punkt-Normale eine Phong-Normale berechnet wird. Die Oberflächennormalen der Polygone, deren Bestandteil dieser Punkt ist, werden also interpoliert. Anders wäre diese Berechnung auch kaum möglich, da jeder Punkt ein Bestandteil mehrerer Polygone sein kann.

Das Setzen einer Punkt-Position

Abbildung 2.59: Das Setzen einer Punkt-Position

Wie bereits erwähnt, lassen sich über den Punkt-Node auch Positionen von Punkten neu setzen. Die Abbildung 2.59 gibt dazu ein Beispiel. Dort wurde der optionale Eingang für die Punkt-Position aufgerufen und mit dem Vektor 0, 0, 0 belegt. Welcher Punkt des Objekts auf diese Position gesetzt werden soll, steuert nach wie vor der Eingang für den Punkt-Index, der hier den Wert 0 erhält. Ob mit der Position 0, 0, 0 nun das Objekt- oder das Welt-Achsensystem gemeint ist, legen Sie über die bekannte Einstellung des Matrix Modus fest. Im Fall des Welt-Systems würde der Punkt wie angenagelt im Raum stehenbleiben, selbst wenn das Objekt verschoben würde. Diese Funktion ist sehr hilfreich. Denken Sie nur an Kabelenden, die an einer animierten Maschine befestigt werden müssen. Der Punkt-Node kann nämlich nicht nur mit Polygon-Objekten, sondern auch mit Spline-Objekten umgehen. Diese müssen jedoch ebenfalls konvertiert vorliegen. Zudem gibt es dann die Einschränkung, dass an einem Spline keine Punkt-Normale berechnet werden kann. Dafür werden schließlich Flächen benötigt, die bei einem Spline fehlen. Mit dem Punkt-Normale-Port verbundene Nodes werden in diesem Fall folglich Fehler liefern.

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