Photoshop
Cinema 4d
Fotografie
Weitere Grafiksoftware
HTML / CSS
JavaScript
Flash
PHP
Webserver
Sonstige
Xpresso - Eine kleine Einführung - Teil 1 (Cinema 4d Tutorial)
Tutorial erstellt von errare in Ab R 9.0, letzte Änderung am 20.10.2010Hallo und Willkommen zu der kleinen Tutorial-Reihe zu Xpresso
In dieser kleinen Reihe wird erklärt, was Xpresso ist, wozu es dient und wie man es verwendet. Viel Spaß!
Was ist eigentlich Xpresso?
Xpresso kann man im Grunde genommen als vereinfachte Form von "Cinema 4D"s Programmiersprache C.O.F.F.E.E. sehen. Für all jene, die mit Programmiersprachen wie C++ nichts anfangen können oder wollen, ist es eine gute und übersichtliche Möglichkteit, um komplexe und verschaltete Animationen in Cinema 4D erstellen zu können.
Xpresso funktioniert also genau wie eine Programmiersprache.
Eingabe von Daten (oder Auslesen) -> Verarbeiten der Daten -> Ausgabe von bearbeiteten Daten über "Ports".
Eingangs-Ports sind blau gefärbt und Ausgangs-Ports rot.

Beispiel: Übertragen von Positionen
Fangen wir mit einer einfachen Szene an. Ich habe es mir zur Gewohnheit gemacht, immer ein "Root – Null Objekt" zu erstellen, welches den Xpresso-Tag trägt und in dem z.B. alle Benutzerdaten gespeichert sind. Ansonsten ist dieses Null-Objekt unabhängig vom Rest der Szene.
Erstellen wir also ein solches und fügen dem ein Xpresso-Tag zu.
Wie ihr seht, öffnet sich auch prompt der Xpresso-Editor (Falls nicht, tut es auch ein Doppelklick auf das Tag):

Erstellt dazu noch 1 Würfel und eine Kugel (belasst die Standardeinstellungen).
Markiert diese beiden Grundkörper und zieht diese per Drag&Drop in den Xpresso-Editor.
Es entstehen zwei neue "Nodes" (engl.: Knoten) der Objekte. Das sind sozusagen "Zeiger", die auf das verknüpfte Objekt zeigen (hier Kugel & Würfel) und deren Daten (Position, Rotation, Größe, Punkt-Koordinaten & Punktanzahl, Spline-Länge usw.) enthalten.
Um nun von der Kugel die Positions-Daten abzufragen, erstellen wir bei dieser einen neuen Ausgang:
Globale Position
Mit einem klick auf das rote Kästchen des Nodes (Farben können auch in den Programm-Einstellungen geändert werden) öffnen sich die jeweiligen "Parameter".

Koordinaten -> Globale Position -> Globale Position
Diese entstandene Verbindung ist vom Typ Vektor. Das erkennt man am einfachsten, indem man den Mauszeiger über diesen kleinen roten Punkt bewegt und einen Blick in die untere Ecke des Xpresso Editors wirft.

Ein Vektor ist hier ein Zahlen-"Kontainer" von 3 Werten. Als Positions-Daten sind das jeweils die Positionsangaben für XYZ.
Ausgedrückt wird dieser Vektor mit
Code:
[0.000000,0.000000,0.000000]
Also:
X = 0.000000
Y = 0.000000
Z = 0.000000
Also:
X = 0.000000
Y = 0.000000
Z = 0.000000
Vektordaten können jedoch auch andere Werte von Rotationen bis hin zu RGB-Farbwerten übertragen.
Doch dazu in einem Folge-Tutorial mehr ;)
Wenn wir diese Positionen nun an ein anderes Objekt "übergeben" wollen, müssen wir es mit der Kugel verbinden:
Klickt dazu auf den erstellten Port (der Kugel) und zieht diesen regelrecht zum Eingang des Würfels. Wie ihr seht, entsteht durch das Ziehen eine "Linie".
Verbunden wird diese Line nun mit demselben Wert wie der des Würfels, nur an einen Eingang (blauer Kasten, am Node des Würfels),
Koordinaten -> Globale Position -> Globale Position.

Wenn das erfolgreich geschah, dann minimiert einmal den Xpresso-Editor und versucht, die Position des Würfels zu verändern (verschiebt diesen einfach).
Es geht nicht!
Verschiebt man allerdings die Kugel (sollte man diese sehen können :D !), folgt der Würfel dieser ganz brav.
Folgen ist wohl der falsche Ausdruck dafür - im Grunde sind die Positionen identisch.
Nun wollen wir noch, dass sich der Würfel auf der Z-Achse in die entgegengesetzte Richtung der Kugel bewegt.
Dazu müssen wir die Vektor-Daten "aufspalten" in X,Y und Z.
Hierzu bietet Xpresso einen Node namens "Vektor zu Reale".
Werft dazu einen Blick ganz Links im Xpresso- Editor, dort befindet sich der äußerst praktische X-Pool, in dem sich alle "Operatoren" für Xpresso befinden!

Unter System-Operatoren -> Xpresso -> Adapter befinden sich zwei von uns benötigte Nodes:
Zieht die Nodes "Vektor zu Reale" und "Reale zu Vektor" per Drag&Drop in den Xpresso-Editor und verbindet die Ports X und Y vom Node "Vektor zu Reale" mit dem X und Y Port des Nodes "Reale zu Vektor"
Den Z-Port noch nicht verbinden, denn der wird noch anderweitig gebraucht ;)
Den Z-Wert wollen wir ja "negieren", also umkehren. Mal schaun ob es einen Node gibt, der auch so heißt...
Klar!

Diesen zieht ihr auch gleich in den Editor!
Verbindet nun den Ausgangsport Z des "Vektor zu Reale" mit dem Eingang des Negieren-Nodes,
den Ausgangs-Port des Negieren-Nodes hingegen zum Eingang Z des Reale zu Vektor.
Nun muss man natürlich noch diese zwei "Adapter" mit dem Würfel und der Kugel verbinden:
Mit einem einfachen Klick auf die bereits bestehende Verbindung (Kugel – Würfel) löst man diese und sie verschwindet...
Verbindet nun den Ausgangs-Port des Kugel-Nodes mit dem Eingang des Nodes Vektor zu Reale
und den Ausgangs-Port des Reale zu Vektor mit dem Eingangs-Port des Würfels (jeweils Globale Position).

Wenn man nun die Kugel bewegt, bewegt sich der Würfel nur auf der XY-Achse synchron, auf der Z-Achse hingegen genau... negiert eben ;)
Als wäre auf der XY-Achse ein "Positions-Spiegel".
Was geschah hier?
Wir haben die Positions der Kugel an den Würfel per Vektoren weitergegeben.
Die Werte, die ein Vektor hier enthält (XYZ), kann man nicht einfach verändern.
Dazu haben wir den Vektor-Wert einfach in seine Bestandteile zerlegt, um an die einzelnen Werte heranzukommen. Wir nutzten den "Vektor zu Reale"-Node, der nichts weiter macht, als die Vektor-Daten eben in die einzelnen "Achsen-Angaben" zu spalten. Diese einzelnen Werte kann man dann nach belieben weiter verarbeiten und mit dem Node "Reale zu Vektor" wieder erneut zusammenfügen, um
sie an das Ziel-Objekt weiterzugeben.
Das war es dann auch schon mit dem Ersten Teil der Tutorial Reihe "Xpresso – Eine kleine Einführung".
Ich hoffe, ich konnte dabei helfen, einen kleinen Überblick über Xpresso zu bekommen.
lg,
Errare
>> Allgemeine Fragen oder Probleme mit dem Tutorial? Hier gehts zum Forum!