XPresso-Editor

Um eine neue Schaltung zu erstellen, selektieren Sie ein beliebiges Objekt im Objekt-Manager und wählen Sie dort Tags / Programmierungs-Tags / XPresso. Sie können den XPresso-Editor jederzeit schließen und ihn mit einem Doppelklick auf das XPresso-Tag wieder öffnen.

Die sog. Nodes sind das Grundgerüst jeder XPresso-Schaltung. Nodes können eine Menge an Aufgaben übernehmen. Sie können beispielsweise die momentane Bild (Frame)-Nummer weitergeben oder ein Objekt auf eine bestimmte Koordinate setzen oder ca. 235746 andere Dinge damit tun.

Um die Schaltung aufzubauen, erstellen Sie die notwendigen Nodes und verbinden diese mit der Maus mit einer Linie, der sog. Verbindung. Eine Verbindung besteht immer zwischen einem Node-Eingangs- und einem Node-Ausgangs-Port. Die Nodes können dann Werte über diese Ports and andere Nodes weitergeben.

Diese Abbildung zeigt 2 Nodes, einen für einen Würfel und einen für einen Zylinder. Die zwei Kreise, beide heißen hier Winkel sind die Nodes. Die Ports unter der roten Schlatfläche sind Ausgangsports und senden Werte zu anderen XGroups (s. nächsten Abschnitt) und/oder Nodes. Die Ports unter der blauen Schaltfläche sind Eingangsports und empfangen Werte von anderen XGroups oder Nodes. In diesem Beispiel wird der (lokale) Winkel des Würfels dem (lokalen) Winkel des Zylinders zugewiesen. Damit zeigt der Zylinder in dieselbe Richtung wie der Würfel.

Sie finden in den folgenden Abschnitten detaillierte Beschreibungen des XPresso-Editors an sich und natürlich auch für jeden einzelnen Node.

XGroups

XGroups sind Behälter oder Container für Nodes oder andere XGroups und deren Verknüpfungen. Dabei können XGroups selbst auch wieder als Nodes fungieren und mit anderen Nodes oder XGroups verknüpft werden. XGroups lassen sich also hervorragend zur Organisation Ihrer XPresso-Schaltungen einsetzen, um für mehr Übersichtlichkeit im XPresso-Editor zu sorgen. Zudem lassen sich XGroups einzeln laden und speichern und machen somit die Benutzung einmal erstellter Schaltungen in verschiedenen Projekten einfacher.

Mit XGroups können mehrere Nodes in Gruppen zusammengefasst werden.

Übrigens ist bereits der XPresso-Editor selbst eine XGroup. Die Inhalte eines XGroup-Containers lassen sich über die aus den Editor-Ansichten bekannten Icons in der Titelzeile des XGroup-Fensters verschieben und zoomen. Verschiebungen können auch über die Pfeiltasten vorgenommen werden. Ein Klick auf die blaue oder die rote Schaltfläche in der Kopfzeile einer XGroup erlaubt die Auswahl von Datentypen für die Ein- und Ausgänge, wenn Sie eine XGroup mit anderen Nodes oder XGroups verbinden möchten. Dabei steht die blaue Schaltfläche für den Datentyp der Eingänge in die XGroup und die rote Schaltfläche für den Datentyp der Ausgänge. Diese Farbkonvention gilt auch für die Nodes.

Eingänge zuerst

Diese Option finden Sie bei aktiver XGroup im Attribute-Manager. Ist die Option aktiviert, werden die außerhalb der XGroup liegenden Nodes zuerst berechnet, damit die Eingänge der XGroup ein Ergebnis erhalten und die Node-Schaltung innerhalb der XGroup mit aktuellen Werten arbeiten kann.

Ein Doppelklick auf die Titelzeile eines XGroup-Fensters minimiert dieses auf die Titelzeile, bzw. macht das XGroup-Fenster wieder in ganzer Größe sichtbar. Durch Klicken und Halten der Maustaste auf die Titelleiste lässt sich das XGroup-Fenster verschieben, durch einen gehaltenen Klick auf den Rahmen des XGroup-Fensters (der Mauszeiger verändert sich dort zu einem Skalierungs-Symbol) verändert man dessen Größe. Ein einfacher Klick auf die Titelleiste eines XGroup-Fenster selektiert die XGroup, z.B. um sie mit der Kopieren- oder Ausschneiden-Funktion benutzen zu können, oder um im Attribute-Manager auf Parameter und Datentypen zugreifen zu können. Mehrere XGroups oder Nodes können zudem per Shift-Klick selektiert und danach z.B. als zusammenhängende Gruppe verschoben werden. Selektierte XGroups werden orange umrandet dargestellt.

Aktiv

Die in einer XGroup enthaltenen Nodes werden nur dann abgearbeitet, wenn die Aktiv-Option aktiviert ist. Alternativ dazu kann auch ein boolesches TRUE, bzw. der Wert 1 an den An-Eingang der XGroup beleitet werden.

Schützen

Sie können den Inhalt einer XGroup mit einem Passwort schützen und somit vor den Augen Dritter verbergen. Es lassen sich dann auch keine Veränderungen mehr an der Schaltung innerhalb der XGroup vornehmen. Gehen Sie dazu so vor, dass Sie zuerst die gewünschte XGroup selektieren und dann den Schützen-Button im Attribute-Manager benutzen. Sie werden nach einem Passwort gefragt. Stellen Sie sicher, dass Sie das Passwort notieren oder die Schaltung vor dem Schützen gesichert haben. Nur so können Sie auch noch nach dem Schützen wieder auf den Inhalt der XGroup zugreifen. Nach der Vergabe des Passworts rufen Sie das Kontext-Menü für die XGroup auf und wählen den Unterpunkt Ansicht / Gesichert. Der Inhalt der XGroup wird dadurch dauerhaft ausgeblendet und lässt sich ohne das Passwort auch nicht mehr anzeigen.

Nodes (Knoten)

Nodes, oder Funktions-Knoten, sind die kleinsten Einheiten innerhalb des XPresso-Editors. Sie können verschiedenste Aufgaben übernehmen. So gibt es z.B. Nodes, die die aktuelle Position eines Objekts ermitteln, oder solche, die diverse mathematische Berechnungen durchführen können. Je nach Typ und Funktion eines Nodes stehen unterschiedliche Typen und Mengen an Ein- und Ausgängen, sogenannte Ports, an dem Node zur Verfügung.

Nodes sind die kleinsten Funktionseinheiten in XPresso Expressions. Nodes gibt es in verschiedenen Ausführungen, jeweils auf bestimmte Aufgaben spezialisiert.

Sehr oft wird der im Node ermittelte Wert erst durch die Wahl eines oder mehrerer Ausgänge präzisiert. So kann bei einem Objekt-Node über den Typ des Ausgabe-Ports präzisiert werden, ob z.B. die Position, die Rotation oder die Größe als Ausgabewert gewünscht werden. Wie bereits bei den XGroups, so verbergen sich auch bei den Nodes unter der blauen Schaltfläche in der Titelleiste des Nodes die jeweils angebotenen Typen für die Eingänge und unter der roten Schaltfläche die Ausgabeparameter. Welcher Datentyp dabei Verwendung finden soll – z.B. muss bei einem Node der Werte addieren soll festgelegt werden, ob dies Vektoren, Fließkomma-Zahlen oder Integer-Werte sein sollen – wird dabei über den Attribute-Manager gesteuert. Dort sind alle relevanten Parameter in einem Menü aufgelistet und abrufbar, sofern Sie dort den Node- oder den Parameter-Modus aktiviert haben.

Hinweis:Ein Objekt/Material/Tag kann einem vorhandenen Objekt/Material/Tag-Node zugewiesen werden, indem Sie das Objekt/Material/Tag aus dem Objekt-Manager auf den Objekt/Material/Tag-Node ziehen. Dabei werden Ports (sprich Parameter), die auch für das neue Objekt gelten, samt evtl. vorhandener Verbindung erhalten. Nicht vorhandene Ports werden als Undefiniert bezeichnet.

Node-Darstellung

Wie bei XGroups, lassen sich auch Nodes durch einen Doppelklick auf deren Titelleiste zusammenklappen und wieder aufklappen, bzw. durch Klicken auf die Titelleiste und Halten der Maustaste lässt sich der Node verschieben. Ein Anklicken und Ziehen des Rahmens des Node-Fensters skaliert dieses. Wie auch bei XGroups so lassen sich auch Nodes mit einem Mausklick selektieren. Selektierte Nodes werden orange umrandet dargestellt. Shift-Klicks mehrerer Nodes oder XGroups erlauben die Selektion mehrerer Elemente im XPresso-Editor gleichzeitig. Soll ein Node kurzfristig deaktiviert werden, so benutzen Sie die Aktiviert-Option im Attribute-Manager. Damit können Sie die Berechnung von einzelnen Nodes kurzfristig an- und abschalten. Den gleichen Effekt haben die Aktivieren / Deaktivieren-Befehle des Kontext-Menüs, das weiter unten noch ausführlich besprochen wird. Schließlich lassen sich Nodes noch individuell benennen, indem Sie im Attribute-Manager einen neuen Namen für den selektierten Node eintragen. Diese Option ist jedoch eher für geübtere XPresso-Benutzer gedacht, da man danach – je nach neu gewähltem Namen – im XPresso-Editor nicht mehr sofort den Node-Typ am Namen erkennen kann. Um welchen Node es sich tatsächlich handelt, kann man dann nur noch im Attribute-Manager ablesen.

Ports

Mit Ports sind die Ein- und Ausgänge von Nodes und XGroups gemeint. Über Verbindungen zwischen Ports lassen sich Nodes und XGroups untereinander verschalten. Damit kann dann der Ausgangswert eines Nodes zum Eingang eines anderen Nodes geleitet werden.

Hinzufügen von Ports mit den Ein- und Ausgangsmenüs (die roten und blauen Rechtecke in den oberen Node-Ecken).
Werte werden über Ports weitergegeben. Ausgangsports sind unter den roten, Eingangsports unter den blauen Schaltflächen zu finden.

Die Parameter und die Anzahl der vorhandenen Ports werden dabei über die Menüs der blauen und der roten Schaltfläche in der Titelzeile eines Nodes oder einer XGroup gesteuert.

Zum Verbinden von Ports klicken Sie auf einen Port und ziehen ihn auf einen anderen

Bereits vorhandene Ports werden in diesen Menüs ausgegraut dargestellt. Stellt ein Node verschiedene Datentypen zur Wahl, kann im Attribute-Manager eine Auswahl des gewünschten Datentyps getroffen werden. Dort sind auch alle Ports aufgelistet, die noch keine Verbindungen haben und somit keine Daten erhalten können (gilt nicht für Objekt-Nodes). Dies gibt Ihnen die Möglichkeit, auch direkt im Attribute-Manager Werte an Nodes zu schicken, ohne andere Nodes mit den Ports verbinden zu müssen. Dies ist sehr praktisch, wenn Sie statische Werte an Nodes schicken, oder zum Testen Ihrer Schaltung mal eben einen bestimmten Wert eingeben möchten. Wie bereits im Abschnitt über Nodes angesprochen, können eigene Daten als Benutzerdaten im Attribute-Manager an Objekte geknüpft werden. Diese Daten lassen sich dann an den Nodes dieser Objekte als Ports anwählen und mit anderen Nodes verschalten. Bei eingeblendeter Statuszeile im XPresso-Editor kann beim Überfahren der Portflächen mit dem Mauszeiger dort deren Typ abgelesen werden. Als Alternative zur Statusanzeige, lässt sich die Benennung der Ports im Node selbst aktivieren. Diese Option erreichen Sie im Kontext-Menü, das noch besprochen wird. Um bei einer größeren Anzahl an Ein- oder Ausgängen die Ports noch unterscheiden zu können, kann es nötig sein, das Node- oder XGroup-Fenster zu vergrößern, um mehr Platz für die Darstellung aller Ports zu schaffen. Ein Doppelklick auf einen nicht verbundenen Port löscht diesen wieder aus dem Node. Ein Doppelklick auf einen verbundenen Port löscht die Verbindung. Ports lassen sich auch vertikal mit gedrückter ALT-Taste (oder ohne ALT am Portnamen) per Drag&Drop umsortieren. Weitere Informationen und Befehle zu einem aktiven Port lassen sich zudem im Kontext-Menü abrufen. Mehr dazu erfahren Sie im Abschnitt über die Kontext-Menüs.

Gesetzte Ports für Elementparameter werden übrigens auch im Attribute-Manager folgendermaßen markiert:

Navigation per Kontextmenü

Besonders in der Charakteranimation können Sie unzählige XPresso-Tags vorliegen haben, die durch die Verwendung der Anführer setzen/Verfolger setzen-Funktionalität erzeugt wurden. Die im Folgenden beschriebenen Befehle helfen Ihnen bei der Navigation.

Beim Klick mit gedrückter Alt-Taste auf ein solches Icon öffnet sich ein Kontext-Menü mit folgenden Befehlen:

XPresso-Editor öffnen: Hiermit wird das zugehörige XPresso-Tag im Xpresso-Editor geöffnet, wobei der entsprechende Node selektiert wird. Bei Anführer-Parametern - die ja durchaus viele andere Parameter mittels verschiedener XPresso-Tags steuern können - kann eine Liste der zu steuernden Objekte und Parametern eingeblendet werden, in der Sie den passenden Eintrag auswählen.

XPresso-Tag(s) selektieren: Hiermit selektieren Sie alle XPresso-Tags, in denen der aktuelle Parameter steuert oder gesteuert wird.

Springe zu: Wird der aktuelle Parameter geteuert oder steuert er gar selbst, werden hier alle “verbundenen” Parameter samt Objektnamen aufgelistet. Bei Auswahl wird das entsprechende Objekt mit seinem Parameter im Attribute-Manager angzeigt.

Benutzerdaten

Nodes können mit diversen Ports bestückt werden, wobei sogar teilweise eigene Eingabefelder, sogenannte Benutzerdaten, im Attribute-Manager erlaubt sind. Dazu müssen Sie dem gewünschten Objekt im Attribute-Manager Benutzerdaten hinzufügen. Dies können Sie mit dem Eintrag Benutzerdaten hinzufügen im Benutzerdaten-Menü des Attribute-Managers umsetzen. Dort legen Sie dann auch den Namen und das Format der Daten fest. Unter dem gewählten Namen erscheint dann im Port-Menü des entsprechenden Objekt-Nodes unter Benutzerdaten Ihr eigener Port. Sie können dann über den Benutzerdaten-Bereich im Attribute-Manager selbst Werte an den Node schicken und so Ihre XPresso-Schaltung auch von außerhalb des XPresso-Editors mit Werten beschicken. Welche Vorteile dies in der Praxis bieten kann, erläutern die Arbeitsbeispiele in den Tutorials zu XPresso.

Verbindungen

Verbindungen dienen der Verknüpfung von Nodes und XGroups über deren Ports. Dabei können Verbindungen nicht nur Werte von einem Port zu einem anderen leiten, sondern auch Datentypen konvertieren.

Verbindungen zwischen Ports entstehen automatisch, wenn ein Port angeklickt und die Maus mit gehaltener Maustaste verschoben wird. Es erscheint eine Linie, die nun zu einem anderen Port eines Nodes oder einer XGroup gezogen werden kann. Dort angekommen löst man die Maustaste und das offene Ende der Verbindung schnappt an dem Port ein. Eine derartige Verbindung ist jedoch nicht unter beliebigen Ports möglich. So ist es z.B. nicht erlaubt, eine Verbindung zwischen nur Eingang- oder nur Ausgang-Ports zu schalten, oder Ports mit nicht passenden Datentypen zu verbinden. In solchen Fällen wird die gezogene Verbindung automatisch gelöscht um Fehler im Ablauf der Verschaltung zu verhindern. Um derartige Fehler frühzeitig vermeiden zu können, wechselt eine Verbindung bereits beim Überstreichen eines Ports die Farbe. Eine grüne Färbung bedeutet, dass die Verbindung erlaubt ist und die Datentypen zueinander passen. bzw. Die Datentypen passend konvertiert werden können. Wird die Verbindung hingegen in einem hellen Grau gezeichnet, so ist der angesteuerte Port nicht kompatibel und die Verbindung würde beim Lösen der Maustaste sofort wieder gelöscht werden. Diese visuelle Kontrolle ist zwar kein Garant dafür, dass Ihre Schaltung später wie gewünscht arbeiten wird, aber zumindest sind die verbundenen Datentypen kompatibel und gewährleisten so eine reibungslose Abarbeitung der Schaltung.

Wollen Sie trotzdem bei und demselben Node einen Ausgangsport mit einem Eingangsport verbinden, kopieren Sie einfach den Node (an der Nodetitelzeile mit gedrückter Ctrl/Cmd-Taste ziehen und loslassen) und verbinden den Ausgangsport des ersten Nodes mit dem Eingangsport des zweiten Nodes.

Sollten Sie sich beim Verbinden von Ports einmal vertan haben, klicken Sie auf die Verbindungslinie, um diese von dem Port zu lösen und an einen anderen Port anzuschließen. Ziehen Sie das offene Ende einer Verbindung in einen leeren Bereich, also nicht auf einen Port, so wird die Verbindung nach dem Lösen der Maustaste automatisch wieder gelöscht. Ein einfacher Mausklick auf eine Verbindung hat den gleichen Effekt. Die Verbindung wird dann ebenfalls gelöscht. Entsprechende Befehle finden Sie auch im Kontext-Menü, das weiter unten erläutert wird.

Es ist erlaubt, einen Ausgang-Port mit mehreren Eingang-Ports zu verbinden, um denselben Wert in mehreren Nodes oder XGroups benutzen zu können. Für Eingang-Ports ist dies nicht möglich, da ansonsten nicht ermittelt werden könnte, welcher Wert für den Eingang benutzt werden soll. Eingang-Ports können also immer nur eine Verbindung bekommen. Um eventuell überschnittene Verbindungen etwas zu entwirren, kann es günstig sein, die Reihenfolge der Ports im Node oder in der XGroup zu verändern. Dazu schieben Sie den Port mit gedrückter ALT-Taste (oder ohne ALT am Portnamen) per Drag&Drop an die neue Position. Dabei sind nur vertikale Verschiebungen möglich. Ein Eingang-Port kann also nicht auf die Ausgang-Seite verschoben werden.

Datentypen

Ihnen stehen mehrere Datentypen für den Austausch von Informationen zwischen den Nodes und XGroups zur Verfügung. Dabei bleibt es nicht aus, dass einige Datentypen nicht direkt mit anderen zusammenarbeiten können. Die Struktur der Daten ist oftmals einfach zu unterschiedlich. Trotzdem versuchen die Verbindungen zwischen Nodes und XGroups Ihnen dabei so weit wie möglich entgegen zu kommen. Nachfolgend finden Sie eine kurze Auflistung der verfügbaren Datentypen und – falls möglich – Erläuterungen zu deren Konvertierbarkeit in andere Datentypen.

Farbe

Farben bestehen aus Informationen zum Mischungsverhältnis der Farbtöne Rot, Grün und Blau. Sie können dies recht einfach bei der Arbeit mit Materialien beobachten, wo Sie über das Verschieben der RGB-Regler, die gewünschte Farbe mischen können. Die Werte für RGB’’ können ebenso als Vektor interpretiert werden, also z.B. für die Farbe R:10, G:75, B:0 als Vektor (10;75;0). Der Farbe-Datentyp funktioniert somit problemlos mit dem Vektor-Datentyp zusammen. Sie können also Farben z.B. zur Steuerung von Positionen und Winkeln verwenden, da diese auch im Vektorformat vorliegen.

Link

Dieser Datentyp enthält alle Informationen zu diversen Elementen innerhalb Ihrer C4D-Szene. Ein Material oder ein Tag sind ebenso ein Element der Link-Liste, wie z.B. ein Objekt. Daran erkennen Sie schon, wie schwierig hier eine Konvertierung zu Zahlenwerten sein wird, zumal dies auch keinen Sinn ergeben würde. Dieser Datentyp ist dazu da, eine Auswahl zu treffen, welches Element aus dem Gesamtkontext der Szene näher betrachtet werden soll. Sie können damit z.B. ein Benutzerdaten-Feld im Attribute-Manager anlegen und dort Materialien und Objekte via Drag and Drop-Aktion zuweisen.

Dateiname

Es handelt sich hierbei um einen String, der den Pfad zu einer Datei angibt. Darüber können z.B. Sound-Dateien in den Ton-Node geladen werden. Für andere Zwecke ist dieser Datentyp nicht gedacht.

Textur

Dieses Element enthält einen Verweis auf eine Textur, also auf eine Bilddatei oder einen Shader. Dieser Datentyp kann nur in Verbindung mit Materialien sinnvoll eingesetzt werden, um z.B. innerhalb eines Material-Kanals eingesetzt zu werden.

Linsenglühen

Dieser Datentyp ist ein sogenannter Container für ein ganzes Set an Daten. In diesem Fall enthält der Datentyp sämtliche Informationen, die das Aussehen von Linsenglühen-Effekten bei Lichtquellen steuern. Der Datentyp ist auf den Austausch dieser Daten spezialisiert und kann daher nicht sinnvoll in andere Formate umgewandelt werden.

Boole

Der Boole-Datentyp vermag nur zwei Zustände zu sichern Richtig oder Falsch. Diese Zustände werden durch die Zahlenwerte 1 (TRUE) und 0 (FALSE) dargestellt. Es ist daher auch möglich, Boole-Werte für mathematische Berechnungen einzusetzen. Beachten Sie dabei nur, dass der Boole-Datentyp nur die Werte 0 und 1 zulässt. Wollen Sie mehrere Boole-Werte kombinieren, benutzen Sie die diversen Logischen Nodes, die speziell darauf ausgelegt sind.

Integer

Integer bedeutet Ganzzahlig und ist ein Zahlenformat. Dabei werden nur ganzzahlige Werte unterstützt. Ist ein Nachkommaanteil vorhanden, wird dieser einfach weggelassen. Dieser Datentyp lässt sich problemlos mit allen Zahlen- und Vektorformaten benutzen. Beachten Sie dabei nur, dass es aufgrund der Weglassung des Nachkomma-Anteils nicht immer exakt genug arbeiten kann. Wenn Sie Vektorformate in das Integer- oder das Fließkomma-Format umwandeln, gibt es etwas zu beachten. Es wird dabei automatisch die Länge des Vektors berechnet, also der Betrag des Vektors. Mathematisch betrachtet entspricht dies der Rechnung SQRT(V.x*V.x+V.y*V.y+V.z*V.z), wobei V.x, V.y und V.z die X-, Y- und Z-Anteile des Vektors sind und SQRT, die mathematische Schreibweise für eine Quadratwurzel ist. Umgekehrt, wenn Sie einen Integer- oder Fließkomma-Wert in einen Vektor wandeln, wird der Wert für den X-, den Y- und den Z-Anteil des Vektors eingesetzt. Die Zahl 12,5 in den Vektor-Datentyp gewandelt würde also zum Vektor (12,5;12,5;12,5).

Real

Real lässt sich auch mit Fließkomma übersetzen. Im Gegensatz zu Integer-Zahlen haben Real-Zahlen auch einen Nachkomma-Anteil. Ein typisches Beispiel ist die Zahl PI, also 3.141592654. Zahlen wie diese können allein über ihren Nachkomma-Anteil erheblich zur Genauigkeit einer Berechnung beitragen. Die Zahl PI würde als Integer-Zahl nur als die Zahl 3 auftauchen und z.B. bei der Berechnung von Kreisen zu ungenauen Ergebnissen führen. Benutzen Sie also den Real-Datentyp immer dann, wenn komplexere Berechnungen durchgeführt werden müssen und Sie daher auf die größtmögliche Genauigkeit angewiesen sind. Der Real-Datentyp lässt sich problemlos in das Vektor- und das Integer-Datenformat übersetzen, wobei Letzteres jedoch zum Wegfall des Nachkomma-Anteils führt.

Vektor

Das Vektor-Datenformat ist mit das wichtigste Datenformat, wenn es um die Manipulation von Positionen und Winkeln im dreidimensionalen Raum geht. Egal, ob es um Objektpositionen, HPB-Winkel, Farbwerte oder z.B. Punktkoordinaten geht, all diese Werte sind im Vektorformat gesichert. Die Werte sind dabei der Reihe nach in einem Vektor gespeichert, also bei Positionen z.B. (X-Position; Y-Position; Z-Position), oder bei Rotationen (H-Winkel; P-Winkel; B-Winkel). Ein Vektor kann also prinzipiell nicht in einer einzigen Zahl ausgedrückt werden, da er immer aus drei voneinander unabhängigen Zahlenwerten besteht. Es gibt jedoch eine Vektoreigenschaft, die in einem einzigen Zahlenwert ausgedrückt werden kann, und das ist die Länge des Vektors. Mathematisch gesehen, spricht man dabei auch von dem Betrag des Vektors. Eben dieser Betrag wird automatisch berechnet, wenn Sie einen Vektor zu einer Integer- oder Real-Zahl wandeln. Vektoren können auch mit Matrizen verwendet werden, da diese nur aus einer größeren Anzahl von Vektoren bestehen.

Das Bild zeigt, wie man sich einen Vektor im dreidimensionalen Raum vorstellen kann.’

Normale

Der Begriff Normale kommt Ihnen vielleicht von der Arbeit mit Polygonen her bekannt vor. In diesem Zusammenhang gibt es einige Werkzeuge innerhalb von CINEMA 4D, die z.B. mit der Ausrichtung von Normalen auf Polygonen zu tun haben. Eine Normale ist eine normierte Ausführung eines Vektors. Darunter versteht man einen Vektor mit dem Betrag (also der Länge) 1. Jeder Vektor kann auf die Länge 1 gebracht und damit normiert werden. Dabei wird die Richtung des Vektors nicht verändert.

Matrix

Eine Matrix ist eine Gruppe von Vektoren. Ein typisches Beispiel ist die globale Matrix eines Objekts. In ihr sind der Positionsvektor und die drei Vektoren für die Achsen des Objekts gespeichert. Die drei Achsen-Vektoren geben sowohl Auskunft über die Ausrichtung des Objekts, als auch über dessen Größe. Die Größe eines Objekts entspricht nämlich der Länge des jeweiligen Achsenvektors. Sie haben also über eine einzige Matrix Zugriff auf die Position, die Rotation und die Größe eines Objekts. Die vier Vektoren sind immer in den gleichen Registern der Matrix zu finden. Diese Plätze sind mit V0 für den Position-, bzw. Offset-Vektor, und mit V1 (die X-Achse) , V2 (die Y-Achse) und V3 (die Z-Achse) für die drei Achsen-Vektoren gekennzeichnet. So können Sie also gezielt nur einen bestimmten Vektor, z.B. V2 für die Y-Achse des Objekts, auslesen, bzw. durch einen eigenen Vektor ersetzen.

Zeit

Der Zeit-Datentyp ermöglicht den Zugriff auf den aktuellen Zeitpunkt innerhalb der Animation. Die Zeit wird in Sekunden gemessen. Beachten Sie daher, dass der Wert stark von der gewählten Bildrate pro Sekunde abhängig ist. Haben Sie eine Bildrate von 25 Bildern pro Sekunde eingestellt, wird die Zeit in Bild 25 genau eine Sekunde anzeigen. Sie können diesen Datentyp sehr gut zur Steuerung von dynamischen Abläufen verwenden, da Sie die zeitliche Veränderung der Animation in die Berechnung einfließen lassen können. Denken Sie beispielsweise an einen Ball, der immer einmal pro Sekunde auf- und abhüpfen soll, oder an ein Objekt, das sich innerhalb einer Zeitspanne mit einem anderen Objekt mitbewegen soll.

String

Der String-Datentyp ist für Texte und Zeichenketten gedacht. Diese können auch Buchstaben, Sonderzeichen und Zahlen bestehen. Ein typischer Anwendungsfall ist die Eingabe eines Namens in einen Dialog oder der Text in einem Kommentar-Node. XPresso-Verbindungen sind darüber hinaus in der Lage, Zahlenfolgen aus Strings zu Vektoren, Matrizen oder anderen Zahlenformaten zu konvertieren. Sie können also beispielsweise den String 12;4;5 verwenden, um ihn bei nachfolgenden Vektor-Berechnungen als Vektor (12;4;5) zu benutzen. Dies mag trivial aussehen, würde jedoch in einer gängigen Programmiersprache mehrere Konvertierungen voraussetzen, um die sich hier nicht zu kümmern brauchen.

Objekt

Der Objekt-Datentyp ist ein Untertyp des Link-Datentyps und kann nur mit Objektdaten etwas anfangen. Über diesen Datentyp kann man z.B. auf die globale und die lokale Matrix eines Objekts zugreifen. Aufgrund der großen Anzahl an darin enthaltenen Werten, ist dieser Datentyp nicht zu einem anderen kompatibel.

Farbverlauf

Einen Farbverlauf kennen Sie bereits aus Materialien, um dort z.B. Farbverläufe zu generieren. Er setzt sich also aus einer großen Anzahl an Farbwerten zusammen. Farbwerte sind zwar als Vektoren anzeigbar, aber bei einem Farbverlauf müsste zuerst die Position innerhalb des Verlaufs bestimmt werden, bei dem ein Farbwert ausgelesen werden soll. Da dies nicht möglich ist, kann der Farbverlauf-Datentyp nur dort verwendet werden, wo auch Farbverläufe vorkommen. Der Farbverlauf ähnelt dem Spline-Datentyp, ist jedoch in diesen nicht konvertierbar.

Ein-/Ausschluss

Anhand von Ein-/Ausschluss-Listen können Lichtquellen auf bestimmte Objekte beschränkt bleiben. Eine Ein-/Ausschluss-Liste enthält also eine Liste von Objekten. Da dieser Datentyp sehr speziell für den Gebrauch mit Lichtquellen ist, gibt es keine sinnvolle Konvertierungsmöglichkeit. Benutzen Sie stattdessen den Objekt- oder den Link-Datentyp zum Einlesen von Tags, Materialien oder Objekten, z.B. in einem Benutzerdaten-Feld.

Priorität

Der Priorität-Datentyp enthält sowohl die Priorität, als auch den Zahlenwert der Priorität und die Information über die Reihenfolge der Auswertung. Er kann nur in Verbindung mit Priorität-Ports von Tags benutzt werden.

Font

Dieser Datentyp speichert Informationen über einen ausgewählten Font und ob die Schrifttype als TrueType?- oder Postscript-Font verwendet werden soll. Damit können Sie beispielsweise die Darstellung eines Text-Splines variieren. Eine Umwandlung in andere Formate ist nicht möglich.

Datum/Zeit

Im Unterschied zum Zeit-Datenformat wird hier die Systemzeit Ihres Computers abgefragt. Dies beinhaltet die aktuelle Uhrzeit im Format Stunden:Minuten:Sekunden und das aktuelle Datum. Sie können diese Daten z.B. mit der Sonnen-Expression verwenden, um die Position und die Farbe der Lichtquelle immer automatisch an die aktuelle Uhrzeit anpassen zu lassen.

Spline

Der Spline-Datantyp lässt sich in gewisser Hinsicht mit dem Farbverlauf-Datentyp vergleichen. Auch hier werden Veränderungen über einen Bereich mit Hilfe von Vektoren dargestellt. Der Spline-Datentyp stellt einen sogenannten Graphen zur Verfügung, also eine Art zweidimentionales Koordinatensystem, in dem Sie eine Spline-Kurve erzeugen können. Diese Spline-Kurve liegt zwischen variablen Extremen Min X und Max X auf der horizontalen Achse und Min Y bzw. Max Y auf der vertikalen Achse. Trotz seiner Ähnlichkeit zum Farbverlauf-Datentyp ist der Spline nicht in einen Farbverlauf konvertierbar.

Der XPresso-Pool

Alle implementierten Nodes lassen sich aus dem Kontext-Menü abrufen, doch es mag auch bestimmte Typen von Nodes geben, die man eventuell öfter oder in anderer Konfiguration als den Standard-Konfigurationen benutzt. Für diesen Zweck gibt es den XPresso-Pool, ein separates Fenster, in dem noch einmal alle in CINEMA 4D vorhandenen Nodes aufgelistet sind. Es ist also praktisch ein dauernd aufgeklapptes Kontext-Menü des XPresso-Editors. Zusätzlich zu den Standard-Nodes lassen sich hier aber auch eigene Sets von Nodes ablegen, um z.B. direkt auf einen mathematischen Node mit dem Modus Subtraktion von Integer-Zahlen zugreifen zu können. Man kann sich dann das Aufrufen des mathematischen Nodes und das Umschalten auf den Subtrahieren-Modus mit anschließendem Wechsel auf den Integer Datentyp sparen.

Wenn Sie auf das Lupensymbol klicken, öffnet sich eine Filterzeile, mittels der Sie gesuchte Nodes einfach anzeigen lassen können, ohne sich durch die diversen Unterverzeichnisse hangeln zu müssen.

Es handelt sich hierbei um einen reinen Anzeigefilter, der in Echtzeit funktioniert. Er arbeitet, indem Sie einfach eine Zeichenfolge eintippen. Jedes Element, dessen Namen wenigstens teilweise aus dieser Zeichenfolge besteht, wird angezeigt. Groß- und Kleinschreibung hat dabei keinen Einfluss. Ein Klick auf den linken x-Button löscht die Suchzeichenfolge.

Bedienung

Die Bedienung des XPresso-Pools ist denkbar einfach. Suchen Sie sich den gewünschten Node aus der Liste aus, und ziehen Sie diesen dann per Drag and Drop in den XPresso-Editor hinein. Sie können sich zusätzlich eigene Voreinstellungen erzeugen, indem Sie selbst Nodes aus dem XPresso-Editor in den XPresso-Pool ziehen. Dazu müssen Sie jedoch zuerst einen eigenen Pool erzeugen, da der Standard-Pool nicht verändert werden kann.

Bearbeiten-Menü

Neuer Pool

Hiermit kreieren Sie eine neue Gruppe für Ihre eigenen Voreinstellungen. Obwohl sich hier ein Systemdialog zur Pfadangabe öffnet, werden Gruppen ausschließlich im Verzeichnis library / xnode Ihres Benutzer-Verzeichnisses gespeichert.

Sie können dann Nodes mit den gewünschten Einstellungen aus dem XPresso-Editor auf den Namen Ihres Pools ziehen, um diese dort abzulegen.

Pool laden

Laden Sie hiermit einen abgespeicherten Pool.

Voreinstellung entfernen

Entfernt eine selektierte Voreinstellung wieder aus Ihrem Pool. Der Standard-Pool lässt sich damit nicht verändern, sondern nur die von Ihnen selbst angelegten Nodes. Mit diesem Befehl lassen sich sowohl Voreinstellungen, wie auch ganze Ordner entfernen. Dadurch werden auch alle eventuell in dem Ordner abgelegten Voreinstellungen gelöscht.

Voreinstellung umbenennen

Die Voreinstellungen erhalten automatisch den Namen des jeweiligen Nodes, so wie er im XPresso-Editor erscheint. Mit dieser Funktion können Sie auch nachträglich den Namen der Node-Voreinstellungen verändern, um z.B. direkt auf einen bestimmten Datentyp innerhalb des Nodes hinzuweisen.

Ordner erzeugen

Um Ihre Node-Voreinstellungen thematisch zu ordnen, können Sie zusätzliche Ordner innerhalb Ihres Pools anlegen. Diese lassen sich durch Drag and Drop mit vorhandenen Voreinstellungen aus dem XPresso-Pool, oder direkt mit Nodes aus dem XPresso-Editor befüllen.