Animation-Tags und XPresso: Die Cinema 4D-Tags – XPresso – Teil 07 – Die XPresso-Nodes > Adapter

Tutorials 31. Dezember 2015 – 0 Kommentare

Hier finden Sie hauptsächlich Nodes, mit denen Datentypen konvertiert oder z. B. Vektoren aus Einzelwerten zusammengesetzt werden können.

Allgemein-Node

Sie wissen bereits, dass die Verbindungen zwischen den Ports Datentypen umrechnen können. So kann z. B. die Real-Zahl 1.0 auch zu einem TRUE als Boole-Wert oder zum Vektor 1, 1, 1 werden, wenn unterschiedlichen Datentypen an den Ports verbunden werden. Im Prinzip funktioniert der Allgemein-Adapter genauso. Sie leiten einen Wert hinein und wählen im Attribute-Manager den Datentyp aus, den Sie gerne am Ausgang des Nodes erhalten möchten. In Abbildung 2.75 sehen Sie so beispielsweise wie aus dem Vektor 10.58, 0, 0 die Normale 1, 0, 0 wird. Dies kann im Einzelfall hilfreich sein, wenn Sie selbst die Kontrolle über die Umrechnung behalten möchten. Ansonsten rechnen z. B. bereits normale Port-Verbindungen und auch der schon besprochene Spion-Node Datentypen um.

Animation in Cinema 4D - Der Allgemein-Adapter-Node

Abbildung 2.75: Der Allgemein-Adapter-Node

Matrix zu Vektoren-Node

Wir hatten bereits bei der Besprechung der Datentypen festgestellt, dass eine Matrix aus insgesamt vier Vektoren besteht. Ein Vektor davon gibt die aktuelle Position des Objekts an. Die anderen drei Vektoren liegen in der Regel als Normalen vor und beschreiben die Richtung der Objektachsen X, Y und Z. Dadurch wird also die Drehung eines Objekts angegeben.

Animation in Cinema 4D - Das Auslesen der Vektoren einer Objekt-Matrix

Abbildung 2.76: Das Auslesen der Vektoren einer Objekt-Matrix

Die Länge normierter Vektoren, sogenannter Einheitsvektoren, beträgt immer exakt 1.0. Daher können Sie bei selektierten Objekten z. B. im Koordinaten-Teil des Attribute-Managers auch die drei Werte 1, 1, 1 für die Größe des Objekts finden. Soll ein Objekt absichtlich verzerrt oder innerhalb einer Animation skaliert werden, kann es auch zu abweichenden Längen der drei Achsvektoren kommen. Eines sollte jedoch immer gegeben sein, nämlich dass die Objektachsen jeweils senkrecht zueinander stehen. Bei einem unskalierten Objekt, das parallel zum Welt-Achsensystem ausgerichtet wurde, ergeben sich dadurch die Achsrichtungen 1, 0, 0 für die X-Achse, 0, 1, 0 für die Y-Achse und 0, 0, 1 für die Z-Achse.

Um die volle Kontrolle über die Lage und Größe eines Objekts zu erhalten ist also der richtige Umgang mit der Matrix sehr wichtig. Cinema 4D nimmt uns zwar in dieser Hinsicht bereits viel Arbeit ab, denn wir haben ja bereits festgestellt, dass wir die Position, Drehung und Größe von Objekten direkt über Ports auslesen und setzen können, das Hintergrundwissen zur Matrixrechnung sollte jedoch nicht vernachlässigt werden.

Um ein besseres Gespür für die Funktion der Matrix zu bekommen, betrachten Sie Abbildung 2.76. Sie sehen dort den Objekt-Nodes eines Würfels, dessen Globale Matrix in den Matrix zu Vektoren-Node geleitet wird. An den Ausgängen des Adapter-Nodes stehen nun vier Vektoren bereit. Der Offset entspricht dabei der Position des Objekts. Ob dies die lokale oder globale Position ist, hängt von der Matrix ab. In diesem Fall wurde die Globale Matrix benutzt, folglich handelt es sich auch um die Globale Position des Würfels. Die Vektoren bei V1, V2 und V3 beschreiben die X-, Y- und die Z-Achsen des Objekts. Aufgrund der globalen Matrix handelt es sich auch hier um Achsrichtungen bezogen auf das Weltsystem von Cinema 4D.

Um so eine Matrix selbst aufzubauen ist zumindest etwas zusätzliche Mathe von Nöten, denn die Vektoren V1, V2 und V3 müssen jeweils senkrecht zueinander stehen. Theoretisch sind zwar auch davon abweichende Richtungen möglich, das Objekt würde dadurch jedoch verzerrt, was in der Regel nicht erwünscht ist. Wir kommen etwas später, nach der Besprechung der Adapter-Nodes, noch auf die Berechnung einer eigenen Matrix zurück.

Reale zu Vektor-Node

Sie wissen bereits, dass ein Vektor im 3D-Raum aus drei Werten besteht. Um solche drei separaten Werte zu einem Vektor zu vereinen, benutzen Sie die entsprechenden Eingänge am Reale zu Vektor-Node. Am Ausgang des Nodes liegt dann der passende Vektor an. Die Eingänge X, Y und Z stehen nur für die Reihenfolge der Einzelwerte im Vektor und könnten ebenso für RGB-Werte einer Farbe oder z. B. die HPB-Winkel einer Rotation stehen.

Animation in Cinema 4D - Aufbau der Testszene
Abbildung 2.77: Aufbau der Testszene

Vektor zu Reale-Node

Hierbei handelt es nur um die Umkehrung des Reale zu Vektor-Nodes. Sie leiten diesmal also einen Vektor in den Eingang und erhalten an den X- Y- und Z-Ausgängen des Nodes die drei Einzelwerte im Real-Datenformat. Eine Kombination aus beiden Nodes kann dennoch interessant sein. Malen Sie sich dazu das folgende Beispiel aus. Sie haben ein Objekt erstellt, das immer exakt eine bestimmte Position über dem Boden einnehmen soll. Dies könnte z. B. eine Kamera sein, die während einer Kamerafahrt immer auf der typischen Augenhöhe eines Kameramanns über dem Boden bleiben soll. Was halten Sie also von einem Aufbau wie in Abbildung 2.77. Dort stellt ein Landschaft-Objekt den unebenen Untergrund dar. Ein Kegel soll das Hauptobjekt der Kamerafahrt sein. Dabei wurde die gewünschte Fahrt der Kamera durch einen Spline vorgezeichnet, der überall oberhalb der Landschaft liegt. In der Abbildung ist dieser Spline als weißer Bogen zu erkennen. Die Kamera verfügt über ein Auf Spline Ausrichten-Tag, in dem dieser Spline als Pfad eingetragen wurde. Die Kamera springt dadurch automatisch zum Anfang des Spline-Bogens. Da unser Kegel der Hauptakteur ist, soll dieser zusätzlich noch immer in der Bildmitte gehalten werden. Wir ergänzen daher an der Kamera auch noch ein Ausrichten-Tag und tragen dort den Kegel als Ziel-Objekt ein. Wenn Ihnen diese Schritte überhaupt nicht geläufig sind, lesen Sie bitte den Anfang dieses Kapitels nach. Dort wurden u. a. auch diese beiden Tags beschrieben. Die Priorität des Ausrichten-Tags liegt übrigens automatisch unter der des Auf Spline ausrichten-Tags, so dass die Ausrichtung immer erst nach der Platzierung der Kamera auf dem Spline erfolgt. Dies macht so auch Sinn, damit der Kegel immer perfekt in der Bildmitte bleibt.

Wenn wir nun den Position-Parameter des Auf Spline ausrichten-Tags zwischen 0% und 100% animieren, fährt die Kamera brav auf dem Spline entlang. Ziel dieser Übung soll jedoch sein, die Höhe über der Landschaft konstant zu halten. Zumindest der Y-Anteil der Kameraposition müsste also während der Animation neu berechnet werden. Hier kommt nun unsere Schaltung in Spiel. Ergänzen Sie hinter der Kamera ein neues XPresso-Tag und ziehen Sie in deren XPresso-Editor als erstes das Kamera-Objekt hinein. Auf diesem Weg kommen wir an die aktuelle Position der Kamera heran. Die Auswertung des Position-Parameters im Auf Spline ausrichten-Tag wäre zwar in Verbindung mit einem Spline-Node auch eine Möglichkeit gewesen, aber so geht es noch einfacher.

An dem Node der Kamera ergänzen Sie den Ausgang für die Globale Position und ziehen anschließend auch noch die Landschaft aus dem Objekt-Manager in die Schaltung hinein. Diese wird benötigt, um den Abstand zwischen der Kamera und dem Boden darunter ausrechnen zu können. Dafür eignet sich hervorragend die Ray-Kollision, deren Node wir bereits besprochen haben. Dieser Node fragt uns nach einem Objekt, sowie nach zwei Positionen, zwischen denen das Objekt auf Kollision überprüft werden soll. Das zu überprüfende Objekt ist natürlich unsere Landschaft. Leider müssen wir diese nun jedoch zu einem Polygon-Objekt konvertieren, da die Ray-Kollision nicht mit Generatoren und parametrische Grundobjekten zusammenarbeitet. Ist dies geschafft, legen Sie am Landschaft-Node den Ausgang für Objekt an und verbinden diesen mit dem gleichnamigen Eingang-Port der Ray-Kollision. Die Globale Position der Kamera kann anschließend direkt mit dem Ray-Punkt1 der Ray-Kollision verbunden werden, da der Spline-Bogen und somit auch die Kamera immer über der Landschaft liegen. Nun benötigen wir nur noch eine entsprechende Position unter der Landschaft. Dazu würde uns ja bereits reichen, wenn die Position der Kamera so großzügig abgesenkt würde, dass wir sicher unterhalb der Landschaft landen. Es geht also nur um den Y-Anteil der Kameraposition, da die Landschaft ansonsten relativ parallel zur XZ-Ebene der Welt liegt.

Hier kommen nun unsere Adapter-Nodes ins Spiel. Rufen Sie zuerst den Vektor zu Reale-Node auf und verbinden Sie dessen Eingang mit der globalen Position der Kamera. Diese Position soll abgesenkt werden, also muss der Y-Anteil verkleinert werden. Rufen Sie dazu einen Mathe-Node unter Neuer Node > XPresso > Berechne auf und schalten Sie dessen Funktion auf Subtrahieren. Tragen Sie im Attribute-Manager einen Zahlenwert für den unteren Port ein der groß genug ist, damit wir eine Position unterhalb der Landschaft erhalten. Ich kann Ihnen da leider keinen Wert vorgeben, da dies von der Höhe des Spline-Bogens über der Landschaft und der Höhe der Berge auf der Landschaft abhängt. Notfalls müssen Sie diesen Wert später noch erhöhen, falls die Schaltung nicht wie gewünscht funktionieren sollte. Sie können aber auch gleich in die Vollen gehen und z. B. einen Wert von z. B. 100000 eintragen, um ganz auf der sicheren Seite zu sein.

Verknüpfen Sie anschließend den oberen Eingang des Mathe-Nodes mit dem Y-Ausgang des Adapters. Nun müssen wir die drei Einzelwerte nur noch wieder zu einem Vektor zusammenfügen der als Ray-Punkt2 benutzt werden kann. Rufen Sie daher einen Reale zu Vektor-Node auf und verbinden Sie dessen X- und Z-Ports mit den gleichnamigen Ausgängen von Vektor zu Reale. Den Y-Eingang verbinden Sie mit dem Ausgang des Mathe-Nodes. Schließlich sehen Sie in Abbildung 2.78, wie die noch fehlende Verbindung zum Ray-Punkt2-Port hergestellt wird.

Animation in Cinema 4D - Korrektur der Y-Position der Kamera

Abbildung 2.78: Korrektur der Y-Position der Kamera

Damit ist schon ein großer Teil geschafft, denn die Ray-Kollision errechnet uns nun eine Position, die der Projektion der Kamera auf die Landschaft entspricht. Von dieser Kollisionsstelle brauchen wir nur wieder die gewünschte Höhe nach oben zu gehen, um einen festen Abstand zum Boden einzuhalten. Da wir dazu ein echtes Ergebnis am Ray-Kollision-Node benötigen, müssen Sie dessen Option für Nur testen im Attribute-Manager ausschalten. Zudem sollten Globale Koordinaten aktiv sein. Ergänzen Sie dann den Ausgang für Auftreff-Position am Ray-Kollision-Node und hängen Sie dort einen neuen Vektor zu Reale-Node an. Das Prinzip ist jetzt das gleiche wie im vorderen Teil der Schaltung, nur dass wir jetzt den Y-Anteil der errechneten Position erhöhen müssen. Sie hängen also einen neuen Mathe-Node mit der Funktion Addieren an den Y-Ausgang des neuen Adapter-Nodes und tragen dort für den zweiten Eingang die Höhe ein, die die Kamera über der Landschaft einhalten soll. Anschließend verbinden Sie den Y-Port des Vektor zu Reale-Nodes mit dem oberen Eingang des Mathe-Nodes. Ein neuer Reale zu Vektor-Node fügt die drei Einzelwerte zu der neuen Position zusammen, die Sie schließlich an den Globale Position-Eingang eines neuen Kamera-Nodes hängen. Die Abbildung 2.79 zeigt Ihnen diesen zweiten Teil der Schaltung noch einmal im Detail.

Animation in Cinema 4D - Fertigstellung der Schaltung

Abbildung 2.79: Fertigstellung der Schaltung

Damit unsere XPresso-Schaltung immer mit den aktuellen Positionen der Kamera arbeiten kann, muss nun nur noch die Priorität der Schaltung in den Basis-Eigenschaften des XPresso-Tags angepasst werden. Dies hängt zudem etwas von der Reihenfolge der Tags hinter der Kamera ab. Wenn unsere Schaltung als letztes Tag einsortiert wurde, also das XPresso-Tag rechts von den anderen Tags liegt, brauchen Sie womöglich gar nichts an der Priorität zu verändern. Die Reihenfolge der Tags spielt bei deren Abarbeitung nämlich ebenfalls eine Rolle. Wenn Sie jedoch ganz sicher gehen möchten, erhöhen Sie die Priorität des XPresso-Tags z. B. auf Expression 20. Damit liegt es höher als die Einstellungen Expression 10 am Ausrichten-Tag und höher als Expression 0 am Auf Spline ausrichten-Tag und wird somit immer als letztes Element berechnet.

Vektoren zu Matrix-Node

Das Prinzip entspricht dem des Reale zu Vektor-Nodes. Sie haben bei der Besprechung des Matrix zu Vektoren-Nodes bereits gesehen, dass eine Matrix aus den vier Vektoren für die Position (Offset) und den drei Objektachsen (V1, V2 und V3) besteht. Dieser Node kann daher benutzt werden, um aus vier derartigen Einzelvektoren wieder eine vollständige Matrix zu generieren.

Die XPresso-Nodes > Boole

Wir haben bereits das Boole-Datenformat kennengelernt. Es ist recht simple aufgebaut, denn es kennt nur zwei Zustände, Richtig und Falsch, An und Aus, 1 und 0, bzw. TRUE und FALSE. Gerade diese Einfachheit macht es aber besonders flexibel in der Anwendung. Denken Sie nur an den Binär-Code, der unsere Computer am Laufen hält. Im Prinzip auch nur Nullen und Einsen, die in der richtigen Kombination alle Zahlen, Zeichen und logischen Zustände darstellen können.

Keine Angst, ganz so weit wollen wir es hier sicherlich nicht treiben. Aber dennoch kann die Kombination von mehreren Boole-Werten helfen, logische Entscheidungen in Schaltungen zu simulieren. Denken Sie z. B. an Situationen, bei denen mehrere Ereignisse zusammentreffen müssen, um eine Aktion auszulösen. Schauen wir uns daher auch die Nodes dieser Gruppe wieder in Ruhe an.

Boole-Node

Dieser erste Node ist dann gleich auch einer der mächtigsten in dieser Gruppe, denn hier lasen sich beliebig viele Boole-Werte miteinander vergleichen. Die Art dieses Vergleichs wird über ein Funktion-Menü geregelt, das Sie bei selektiertem Node im Attribute-Manager finden. Standardmäßig sind zwar nur zwei Eingänge am Node vorhanden, aber Sie können weitere über die blaue Schaltfläche in der Titelzeile des Nodes aufrufen. Gehen wir kurz die verschiedenen Funktionen des Boole-Nodes durch.

Bei der AND-Funktion müssen alle Eingänge ein positives Signal empfangen, also 1 oder TRUE. Nur dann liefert der Boole-Node ebenfalls TRUE an seinem Ausgang. Ist auch nur ein Eingang FALSE bzw. 0, so liefert der Node immer FALSE (siehe Abbildung 2.80). Dies ist somit der richtige Modus, um nur beim Zusammentreffen mehrerer Ereignisse eine Aktion auszulösen.
Animation in Cinema 4D - Die AND-Funktion
Abbildung 2.80: Die AND-Funktion

Der OR-Modus ist da weit weniger strikt, denn hier genügt es bereits, wenn nur ein Eingang TRUE ist, um auch ein TRUE-Signal am Ausgang zu erhalten (siehe Abbildung 2.81). Dies lässt sich also direkt mit dem Begriff „oder“ umschreiben. Sofern mindestens das eine ODER das andere Ereignis eintrifft, kann eine Aktion gestartet werden. Ansonsten liefert diese Funktion auch dann ein TRUE-Signal, wenn mehrere oder gar alle Eingänge TRUE liefern. Das unterscheidet diese Funktion dann auch von der folgenden XOR-Funktion.
Animation in Cinema 4D - Die OR-Funktion
Abbildung 2.81: Die OR-Funktion

Bei der Funktion XOR darf immer nur eine ungerade Anzahl von Eingängen TRUE liefern. Es handelt sich hierbei also um ein „exklusives oder“ (XOR). Wir können dies für zwei Eingänge wie folgt beschreiben: Der Node liefert nur dann TRUE, wenn entweder das eine oder das andere eintritt. Liefert mehr als ein Eingang TRUE, bleibt das Ergebnis FALSE. Gleiches gilt, wenn alle Eingänge mit FALSE besetzt sind.

Beachten Sie bei der Nutzung von mehr als zwei Eingängen, dass sich dadurch das Verhalten etwas verändert. Der Node liefert nur dann TRUE, wenn eine ungerade Anzahl von Eingängen TRUE enthält, also ein, drei, fünf etc. positive Signale anliegen.

Die Funktion NAND ist die Umkehrung der bereits besprochenen AND-Funktion, daher auch der Name, NAND = Not AND. Das bedeutet, dass der Boole-Node nur dann FALSE liefert, wenn alle Eingänge mit TRUE belegt wurden. Mit anderen Worten liefert diese Funktion immer dann TRUE, wenn mindestens ein Eingang FALSE ist. Das Ergebnis der AND-Funktion wird also exakt umgekehrt (siehe Abbildung 2.82).

Animation in Cinema 4D - Die NAND-Funktion

Abbildung 2.82: Die NAND-Funktion

Das gleiche Prinzip findet sich bei der Funktion NOR, denn dies ist die exakte Umkehrung der OR-Funktion. In diesem Modus erhalten wir also nur dann ein TRUE-Ergebnis, wenn alle Eingänge FALSE sind. Mit anderen Worten, sobald nur ein Eingang TRUE ist, liefert der Node FALSE.

Sie können sich sicher schon denken, wofür die letzte Funktion NXOR steht. Richtig, es ist die Umkehrung der Funktion XOR. XOR lieferte nur dann TRUE, wenn eine ungerade Anzahl von Eingängen TRUE enthielt. Dies bedeutet für NXOR, dass wir hiermit eine gerade Anzahl von TRUE-Eingängen für ein positives TRUE am Ausgang benötigen. Bei nur zwei Eingängen entspräche dieser Modus somit der AND-Funktion. Es gibt jedoch noch eine Einschränkung, denn die Anzahl 0 wird ebenfalls zu den geraden Zahlen gezählt. Dies bedeutet für uns, dass dieser Modus auch dann noch TRUE liefert, wenn alle Eingänge FALSE sind.

Animation in Cinema 4D - Die NXOR-Funktion

Abbildung 2.83: Die NXOR-Funktion

Eine mögliche Anwendung des Boole-Nodes zeigt die einfache Schaltung in Abbildung 2.84. Zweck dieser Schaltung ist es, den blauen Würfel vor einer Durchdringung mit dem weißen Würfel zu schützen (siehe rechte Seite der Abbildung). Erreicht wird dies durch einfachen Vergleich der Positionswerte des blauen Würfels. Dazu wird zuerst die Globale Position.Y mit Vergleich-Nodes überprüft, ob diese kleiner oder gleich groß 400, bzw. größer oder gleich -100 ist. Diese Eckdaten sind natürlich willkürlich und müssten jeweils auf die Größe des kollidierenden weißen Würfels angepasst werden. Eine dritte Abfrage betrifft die Globale Position.Z des blauen Würfels (unterer Teil in Abbildung 2.84).

Animation in Cinema 4D - Eine Beispielschaltung mit Boole-Node

Abbildung 2.84: Eine Beispielschaltung mit Boole-Node

Wenn dieser Positionsanteil größer oder gleich -100 ist, wird ebenfalls über einen Vergleich-Node ein TRUE-Signal gesendet. Den Vergleich-Node haben wir zwar noch nicht besprochen, dessen Funktion dürfte jedoch leicht zu verstehen sein. Sie finden diesen Node unter Neuer Node > XPresso > Logik. Über ein Funktion-Menü des Nodes lassen sich die Eingänge miteinander vergleichen, z. B. nach Kriterien, wie >= (größer gleich) oder <= (kleiner gleich). Trifft der Vergleich zu, wird ein TRUE-Signal an den Ausgang geleitet. In unserem Fall müssen alle drei Vergleiche positiv ausfallen, damit Handlungsbedarf entsteht, also der blaue Würfel vor der Kollision mit dem weißen Würfel geschützt werden muss.

Die Auswertung der drei vergleichenden Boole-Signale erledigt der zuvor besprochene Boole-Node im Modus AND, damit nur dann ein positives Signal entsteht, wenn tatsächlich alle Eingänge an diesem Node TRUE sind. Sie müssten also nur über die blaue Schaltfläche des Nodes einen dritten Eingang ergänzen und die Ausgänge aller Vergleich-Nodes mit den Eingängen des Boole-Nodes verbinden. Ähnlich ließen sich nun noch weitere Abfragen ergänzen, um den weißen Würfel rundum vor Kollisionen zu schützen, aber ich denke, das Prinzip wird auch so bereits deutlich.

Das resultierende Ausgang-Signal am Boole-Node leiten Sie an den An-Port eines Objekt-Nodes, der wieder den blauen Würfel als Referenz hat. Auf diese Weise können wir nun immer dann gezielt Daten an den blauen Würfel schicken, wenn eine Kollision erkannt wurde. Im Fall des Beispiels aus Abbildung 2.84 besteht diese Information nur aus der fixen Globalen Position.Z mit einem Wert von -100. Der blaue Würfel lässt sich dadurch nicht in den weißen Würfel verschieben, solange er in dem von uns definierten Höhenbereich zwischen den beiden Extremen für Globale Position.Y bleibt. Schaltungen wie diese fallen oft unter den Oberbegriff Clamping. Eine ganz ähnliche Funktion kennen Sie vielleicht bereits von den Constraint-Tags, die wir ebenfalls noch besprechen werden, oder dem Schutz-Tag, bei dem ebenfalls Grenzwerte für die Beweglichkeit eines Objekts eingestellt werden können. Deren Berechnung läuft also intern ganz ähnlich ab.

NICHT-Node

Nun, dieser Node ist schnell erläutert, denn er kehrt den eingeleiteten Boole-Wert einfach nur um. Aus TRUE wird FALSE und aus FALSE wird TRUE. Eine ähnliche Funktion kennen Sie bereits vom Boole-Node, der ebenfalls bereits einige Umkehr-Modi, wie z. B. NAND enthielt.

Schalter-Node

Ähnlich einfach gestrickt ist dieser Node. Dieser verfügt über gar keinen Eingang mehr, sondern wird ausschließlich über den Attribute-Manager und den dortigen Wert-Parameter bedient. Ist die Wert-Option aktiv, liefert der Ausgang des Nodes ein TRUE-Signal, ansonsten FALSE. Im Prinzip ist dieser Node überflüssig, denn die gleiche Funktion könnte auch der Konstante-Node mit dem Datentyp Boole erfüllen.

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