Szenen-Nodes-Einführung

Einleitung

Die Nutzung von Nodes ist für Cinema 4D-Nutzer nichts Neues. Das XPresso-System und natürlich auch das Materialsystem machen bereits seit einigen Versionen Gebrauch von diesem Bedienkonzept. Dabei werden einzelne Funktionen als Node zur Verfügung gestellt, einem grafischen Element, dass mit anderen Nodes Informationen und Rechenergebnisse austauschen kann. Durch das Verbinden mehrerer Nodes können so – wie bei einer Programmiersprache – Berechnungen ausgeführt oder auch Funktionen aufgerufen werden. Dies hat vor allem für technisch orientierte Anwender den Vorteil, dass für wiederkehrende Aufgaben eigene Assets erstellt werden können, also praktisch eigene Funktionen und Werkzeuge entwickelt werden können. Zudem ermöglichen Nodes ohne die Nutzung von Programmierbefehlen und die Kenntnis von Programmiersprachen einen Zugriff auf Funktionen, die teilweise gar nicht über normale Befehle oder Objekte in der Cinema 4D-Umgebung angeboten werden.

Was liegt daher näher, als dieses Bedienprinzip nun auch für die Erstellung von Geometrie zu nutzen? Denken Sie z.B. an selbst entwickelte Deformer oder ganz neue Verteilungsfunktionen und Steuerungsmöglichkeiten für Klone.

Genau dies verbirgt sich im neuen Node-Editor, den Sie über das "Fenster"-Menü von Cinema 4D öffnen können.

Neue Nodes lassen sich dort über die entsprechende Schaltfläche am oberen Rand des Editors aussuchen und hinzufügen.

Der Szene-Node ist bereits vorhanden und stellt die Verbindungsstelle dar zwischen den über Nodes generierten Objekten und dem geöffneten Projekt. Die hier angeschlossenen Geometrien erscheinen nicht nur in den Ansichtsfenstern, sondern auch in einem "Szenen-Manager", dem Gegenstück zum alten "Objekt-Manager", wo Node-Objekte z.B. wie gewohnt hierarchisch gruppiert, umbenannt oder in ihrer Sichtbarkeit gesteuert werden können.

Geometrie aufrufen oder erzeugen

Wie gewohnt, gibt es auch in den Szenen-Nodes Werkzeuge, um typische Grundformen direkt abrufen zu können. Ein Beispiel hierfür sehen Sie hier:

Dort wird ein "Grundobjekt"-Node zur Erzeugung eines Würfels genutzt. Der Ausgang dieses Nodes könnte zwar bereits direkt mit der "Szene" verbunden werden, aber wir ergänzen noch eine individuelle Matrix, um den Würfel durch Daten von außen z.B. drehen oder verschieben zu können. Sie ergänzen daher einen "Matrix zusammensetzen"-Node, geben dort die gewünschte Position und Drehung ein und verknüpfen die so erstellte Matrix über einen "Matrix Op"-Node mit dem Würfel. Der Ausgang des "Matrix Op"-Nodes enthält nun den um eine Lageinformation ergänzten Würfel und kann an die Szene geschickt werden. Der Würfel taucht dann auch an der gewünschten Stelle im 3D-Raum des Ansichtsfensters auf. Alternativ hierzu, bietet auch der "Grundobjekt"-Node selbst Matrix-Einstellungen, zum Platzieren, Rotieren und Skalieren.

Da immer mehrere Wege nach Rom führen, könnte aber noch eine Stufe kleinteiliger gearbeitet werden, denn die Würfelform kann auch als "Geometrie"-Node aufgerufen werden. Im Gegensatz zum "Grundobjekt" fehlt hier die Umschaltmöglichkeit zu anderen Grundformen und es wird nur ein "Geometrie"-Ausgang angeboten, der praktisch nur die Informationen zu Punkten, Kantenzügen und Polygonen enthält. Andere typische Objektinformationen, wie z.B. eine frei wählbare Anzeigefarbe oder eine Option zum Ausblenden aus dem Ansichtsfenster fehlen hier. Diese Informationen können aber ergänzt werden, wenn ein "Geometrie Op"-Node genutzt wird, um aus einer Geometrie eine darstellbare Form zu machen:

Die größte Kontrolle über die Geometrie haben Sie, wenn Sie diese selbst aus Punkten und Kantenzügen zusammensetzen. Sie können dann z.B. Ihre eigene Punktreihenfolge verwenden oder mathematische Berechnungen durchführen, um abstrakte Formen zu entwickeln.

Hierfür müssen Arrays mit Werten gefüllt werden. Dafür stehen z.B. ein "Build"- oder ein "Index-Array aus Text"-Node zur Verfügung. Arrays können Sie sich als Liste mit verschiedenen Werten vorstellen, die durchnummeriert sind. Sie kennen dieses Prinzip bereits aus dem "Struktur-Manager", denn die Punkte oder Polygone eines Polygon-Objekts können dort als ebensolche Listen angezeigt werden.

Über einen "Polygontopologie setzen"-Node können Sie die Nummern der Punkte angeben, die jeweils zu einem Polygon gehören sollen. Da diese Nummernfolgen nicht die Information enthalten, ob z.B. nur Drei- oder nur Vierecke als Polygone entstehen sollen, müssen Sie zusätzlich ein Array anlegen, in dem für jedes Polygon die Anzahl der Punkte nachzulesen ist, die einen zusammenhängenden Kantenzug beschreiben. Diese Information wird am Node "Umrisse" genannt. Schließlich fehlt noch die Information, wie viele solcher Umrisse das Polygon bilden sollen. Normalerweise wird dies immer nur ein Umriss sein, aber es sind auch z.B. N-Gons denkbar, die ein Loch enthalten. In solchen Fällen würde ein Umriss die äußere Form des N-Gons und ein zweiter Umriss die Öffnung in der Fläche beschreiben. Diese Information wird am Node "Gruppen" genannt. Zusammengefasst nennt sich diese Information über die Punkt-Indizes, die Umrisse und Gruppen "Topologie" und kann über einen "Geometrieeigenschaften setzen"-Node zu einer Geometrie zusammengefügt werden. Dazu müssen nur noch die Positionen aller Punkte angegeben werden. Auch dafür wird wieder ein Array verwendet, das in folgender Abbildung mit einem "Build"-Node definiert wurde.

Auf ähnliche Weise lassen sich dann auch Splines selbst zeichnen.

Modellierfunktionen

Auch gängige Modellierfunktionen, wie z.B. das Extrudieren, Innen extrudieren oder Beveln sind verfügbar und können durch angelegte Selektionen auch auf bestimmte Elemente einer Geometrie beschränkt werden. Auch hier helfen die Arrays weiter, mit denen Sie die Indizes der zu selektierenden Punkte oder Polygone an die Modellierbefehle übergeben können. Um Kanten zu selektieren muss eine Sonderart eines Arrays verwendet werden, denn Kanten sind ausschließlich durch ihre Endpunkte definiert.

In beiden Fällen kann jedoch ein "Index-Array aus Text"-Node verwendet werden, um die Indizes der Punkte oder Polygone angeben zu können. Ein "Aktive Selektion"-Node kann zum Auslesen einer bereits abgespeicherten Selektion verwendet werden (mittels "Selektion setzen"-Node) oder aber direkt die zugeleiteten Indizes an der Geometrie selektieren. Nachgeschaltete Modellier-Nodes beschränken sich dann automatisch auf diese aktive Selektion. Alternativ herzu können Indizes auch direkt an die Modellier-Nodes geschickt werden. Die folgende Abbildung zeigt alle gängigen Varianten, wie mit Selektionen umgegangen werden kann.

Die grün markierten Nodes erzeugen aus einer Liste von PunktIndizes eine aktive Kantenselektion, die dann extrudiert wird.

Der gelb markierte Node enthält hier den Index eines Polygons, das anschließend durch den "Löschen"-Node entfernt wird.

Die roten Nodes nutzen ebenfalls eine Liste mit Indizes, die diesmal unter einem eigenen Namen per "Selektion setzen" gespeichert wird. Der nachfolgende "Selektion auslesen"-Node liest die unter dem Namen abgelegte Selektion aus und überträgt diese an einen "Polygon Bevel"-Node, um hier die obere Deckfläche pyramidenförmig zu extrudieren.

Mehrere Objekte erzeugen und verwalten

Wenn mehrere Node-Objekte erzeugt werden, können diese ebenfalls mit dem "Szene"-Node verbunden werden. Dieser verfügt über eine variable Anzahl von Eingängen. Verwenden Sie dafür einfach die "Eingang hinzufügen"- und "Eingang löschen"-Schaltflächen am Node. Ansonsten bieten Nodes, wie z.B. "Grundobjekt" oder "Null" auch selbst über eine variable Anzahl von "Unterobjekte"-Eingängen, um hierarchische Objektgruppen erzeugen zu können.

Auf diese Weise lassen sich auch Hierarchien erzeugen.

Geht es um das Vervielfältigen von Formen kommt z.B. ein "Verteilung Op"-Nodes ins Spiel, denn dieser kann ähnlich wie ein MoGraph Klon-Objekt verwendet werden. Eine angeschlossene Geometrie wird auf die berechneten Positionen geklont und kann dann direkt an die Szene geschickt werden. Über einen "Farbe Op"-Node lassen sich diese Klone dann auch individuell färben. In folgendem Beispiel wird dafür ein "Hash"-Node verwendet, um zufällige Farben zu generieren.

Wer mehr Kontrolle benötigt, kann die Zuordnung von Geometrie zu den berechneten Positionen aber auch selbst übernehmen, denn der "Verteilung Op"-Node kann auch Matrizen ausgeben, die dann z.B. mit einem "Matrix Op"-Node mit geometrischen Formen verbunden werden können:

In diesem Beispiel sehen Sie auch, wie sich Formen aus einer Verteilung löschen lassen. Hier wird ein mathematischer "Modulo" mit dem Wert 2 an den Indexnummern der Klone verwendet, um als Ergebnisse nur die Werte 0 und 1 zu liefern. Diese Werte lassen sich an einem "Filter Op"-Node als Bool-Werte interpretieren und führen dort dazu, dass jede zweite Form automatisch entfernt wird. Es resultiert die typische Bienenwaben- oder Backsteinmauer-Anordnung.

Natürlich lassen sich die so erzeugten Kopien dann auch in ihrer Position oder Form verändern. Dafür stehen verschiedene Effektoren zur Verfügung. Der "Effektor Op"-Node bietet direkt eine große Auswahl an typischen Deformationen, wie z.B. Bulge, Stauchen, Verdrehen oder Biegen an. Zudem können auch eigene Algorithmen mittels eines "Effektorgruppe"-Nodes erstellt werden. Über separate Felder, die sich an einem "Feld Op"-Node auswählen lassen, kann der Effekt der Deformation dann auch wie gewohnt räumlich eingeschränkt werden:

Hinweis:Zu Lernzwecken können einige Assets (grün markiert in der Kategorie "Generator") mit dem Befehl Asset zu Gruppe wandeln in eben eine solche konvertiert werden. Diese Gruppen können Sie öffnen und sehen, wie dort die Basis-Nodes zusammengestellt und verknüpft wurden (z.B. Gras- oder Stufen-Node).