Hier finden Sie verschiedene Datentypen und Datenformate, die zum einfachen Hinzufügen von Ports an Assets und Gruppen genutzt werden können. Bei Bedarf können diese Ports über den Resource-Editor in ihrem Interface, in der Reihenfolge oder Ihrer Beschränkungen angepasst werden. Wir werfen daher in diesem Abschnitt auch einen Blick auf die Arbeit mit dem Resource-Editor.
Nachfolgend finden Sie Erläuterungen typischer Arbeitsschritte zur Nutzung dieser Elemente und wie Sie diese zur Erstellung eigener Assets nutzen können.
Weitere Informationen und Beispiele zur Nutzung von Assets und Benutzerdaten finden Sie bei der Beschreibung der Asset-Konstruktion-Nodes.
Schnellzugriff:
In diesem Beispiel soll ein Asset entwickelt werden, das einer beliebigen Geometrie zusätzliche Details hinzufügt, indem Teile der Oberfläche zufällig ausgewählt, extrudiert und dabei gerundet werden können. Funktionen wie diese lassen sich bereits mit wenigen Nodes erstellen. Herausfordernder kann hingegen das Anlegen eines Dialogs sein, damit die Funktionen des Assets auch ohne den Node-Editor einfach gesteuert werden können. Hierfür kommen verschiedene Optionen infrage, die wir alle betrachten werden.
Beginnen wir jedoch mit dem ersten Schritt, dem Aufrufen einer Nodes-Modifikator-Gruppe aus den Asset-Konstruktion-Nodes im Asset-Browser. Ziehen Sie von dort den Nodes-Modifikator direkt in den Objekt-Manager. Dort funktioniert dieser Eintrag dann wie ein Deformator, muss also Objekten untergeordnet werden. Erstellen Sie daher direkt ein einfaches Grundobjekt, wie z. B. einen Würfel, und ordnen Sie diesem direkt den Nodes-Modifikator unter. Da dieser bislang noch nicht mit Funktionen gefüllt wurde, ändert sich erst einmal nichts an dem Würfel.
Nach dem gleichen Prinzip können Sie übrigens auch die Nodes-Selektion-Gruppe verwenden, nur dass diese hauptsächlich zur Manipulation oder Erstellung von Punkt-, Kanten- oder Polygonselektionen an dem übergeordneten Objekt verwendet wird.
Um den Inhalt der Nodes-Modifikatorgruppe einsehen und bearbeiten zu können, muss der Node-Editor geöffnet werden (siehe folgende Abbildung). Dazu können Sie entweder in das Nodes-Layout von Cinema 4D umschalten oder aber Sie rufen den Node-Editor über das Fenster-Menü auf. Sofern der Nodes-Modifikator-Eintrag im Objekt-Manager ausgewählt ist, sollte der Node-Editor automatisch im Kapsel-Modus öffnen und daher nur den Inhalt und die Ein- und Ausgänge dieses Asset-Konstruktion-Nodes anzeigen. Sie können diese Umschaltung auch jederzeit manuell über das Modus-Menü des Node-Editors vornehmen (siehe Ziffer 1 in der folgenden Abbildung).
Im Bereich bei der Ziffer 2 können Sie zur Sicherheit auch den Namen der aktuell angezeigten Asset-Kapsel ablesen, also in unserem Fall Nodes-Modifikator. Zudem kann es hilfreich sein, direkt den Asset-Browser und den Attribute-Manager an dem linken und rechten Rand des Node-Editors einblenden zu lassen (siehe Ziffer 3 in der folgenden Abbildung). Auf diese Weise können Sie den Node-Editor maximal vergrößern, was bei der Verarbeitung komplexer Schaltungen hilfreich sein kann.
Sofern Sie die beiden Icons bei Ziffer 3 aktiviert haben, werden links der Asset-Browser (siehe Ziffer 4) und rechts der Attribute-Manager (Ziffer 5) sichtbar. Zwischen diesen Bereichen liegt der eigentliche Node-Editor, der links vom Eingangsbereich (siehe Ziffer 6) und rechts vom Ausgangsbereich (siehe Ziffer 7) der ausgewähltenNodes-Modifikatorgruppe eingerahmt wird. Für uns sind daran besonders die Geometrie Ein-und Ausgänge interessant. Der Geometrie-Eingang links stellt die Geometrie des Objekts zur Verfügung, dem die Asset-Konstruktionsgruppe im Objekt-Manager untergeordnet wurde. Dies ist also in unserem Fall der Würfel.
Diese Geometrie kann nun von uns innerhalb der Schaltung verarbeitet werden. Das Ergebnis wird eine veränderte Geometrie sein, die dann an den Geometrie-Ausgang der Gruppe geleitet werden muss, um den ursprünglichen Würfel zu ersetzen.
Um unsere Nodes-Modifikatorgruppe zu einem funktionalen Asset zu entwickeln, reicht bereits das Hinzufügen eines einzigen Nodes aus, der Geometrie verarbeiten kann. Sie finden einen Großteil dieser Nodes in der Geometrie-Modifikator-Gruppe des Asset-Browsers. Wir wählen dort den Unterteilen-Node aus und ziehen diesen aus dem Asset-Browser direkt in den Node-Editor hinein.
Auf der linken Seite dieses Nodes finden Sie den Eingang für eine Geometrie, die verarbeitet werden soll (Ziffer 1 in obiger Abbildung). Stellen Sie einfach durch das Ziehen einer Verbindungslinie mit der Maus eine Verbindung zwischen dem Geometrie-Eingang der Gruppe und dem Geometrie-Eingang des Nodes her. Auf die gleiche Weise stellen Sie eine Verbindung zwischen dem Geometrie-Ausgang des Nodes (siehe Ziffer 2) und dem Geometrie-Ausgang der Gruppe her. Sie sollten anschließend bereits eine Veränderung an der Geometrie feststellen können. Schalten Sie ggf. in der Editoransicht auf die Darstellung Gouraud Shading (Linien) in Kombination mit Drahtgitter um, um die Kanten des Objekts ebenfalls angezeigt zu bekommen (siehe folgende Abbildung).
In unserem Fall wird der Würfel zusätzlich unterteilt. Welche Arten von Selektionen dabei ausgewertet werden sollen (Punkte, Kanten oder Polygone) oder wie oft das Objekt z. B. zu unterteilen ist, können Sie nach Selektion des Unterteilen-Nodes im Attribute-Manager einstellen (siehe Ziffer 3 in obiger Abbildung).
Nodes, wie in unserem Fall der Unterteilen-Node stellen im Attribute-Manager viele EInstellungen zur Verfügung, die teilweise auch für Nutzer der Nodes-Modifikatiorgruppe interessant sein können. Lästig daran ist nur, dass dafür immer erst der entsprechende Node im Node-Editor ausgewählt werden muss, um dessen Einstellungen im Attribute-Manager editieren zu können. Für dieses Problem gibt es eine Lösung, denn beliebige Einstellungen lassen sich auch als Eingangsports an den Nodes anlegen und dann mit der Eingangsseite der Gruppe verknüpfen. Wir werden dies hier zunächst für die Typ-Einstellung des Nodes für Selektionen durchführen, damit ein Nutzer später auswählen kann, welche selektierten Elemente (Punkte, Kanten oder Polygone) zur Beschränkung der Unterteilen-Funktion genutzt werden sollen.
Die obige Abbildung stellt diesen Prozess dar. Wählen Sie zunächst den Unterteilen-Node aus, um dessen Einstellungen im Attribute-Manager einsehen zu können. In der mit der Ziffer 1 im Bild markierten Spalte finden Sie kleine Kreissymbole. Durch einen Strg bzw. Ctrl-Klick auf einen dieser Kreise wird der entsprechende Parameter direkt als Eingangsport am Node sichtbar. Probieren Sie dies mit dem Typ-Parameter aus. Wie bei Ziffer 2 zu sehen, erhalten wir direkt den gewünschten Typ-Port am Node. Dieser Port muss nun mit der Eingangsseite der Gruppe verbunden werden, damit er für einen Nutzer der Nodes-Modifikatorgruppe sichtbar wird. Dazu muss im Eingangsbereich der Gruppe ebenfalls ein Port angelegt werden.
Das Anlegen eines zum Typ Node-Eingang passenden Gruppen-Eingangs kann durch eine einfache Drag&Drop-Aktion erstellt werden. Dies ist in der folgenden Abbildung dokumentiert.
Ziehen Sie eine Verbindungslinie vom neuen Typ-Eingang des Unterteilen-Nodes zum linken Eingangsbereich der Gruppe und lassen Sie dort die linke Maustaste los. Es erscheint ein kleines Kontextmenü, in dem Sie Neuen Eingang hinzufügen auswählen. Wie in der unteren Hälfte der obigen Abbildung zu sehen, entsteht dadurch dort ein neuer Typ-Eingang an der Gruppe, der automatisch mit dem Typ-Eingang des Nodes verbunden wird. Die Typ-Einstellung steht dadurch nicht länger im Attribute-Manager zur Verfügung. Sie erkennen dies auf der rechten Seite der obigen Abbildung, wo die Optionen für Punkte, Kanten und Polygone nun nicht mehr verfügbar sind.
Der Vorteil dieser Arbeitsschritte liegt darin, dass Sie sich keine Gedanken über die Datentypen der Ports machen müssen. Es wird automatisch der Datentyp und das Benutzerinterface des ursprünglichen Node-Parameters übernommen.
Lassen Sie uns dies direkt überprüfen. Selektieren Sie die Nodes-Modifikatorgruppe im Objekte-Manager und werfen Sie einen Blick auf den Eingänge-Tab im Attribute-Manager. Dort sollten Sie nun die Typ-Option direkt einsehen und bedienen können (siehe nachfolgende Abbildung).
Natürlich können Sie dieses neue Bedienelement auch wunschgemäß umbenennen. Führen Sie dazu einen Doppelklick auf den Namen des neuen Gruppen-Eingangs im Node-Editor aus und tragen Sie dort einfach den neuen Namen ein. Wir benutzen hier z. B. den Begriff Beschränkende Selektionsart, damit ein Nutzer direkt versteht, was er mit dieser Einstellung bewirkt (siehe Ziffer 1 der folgenden Abbildung).
Neue Bedienelemente für Nutzer können aber auch unabhängig von vorhandenen Eingangsports an Nodes erstellt werden. Dies kann z. B. hilfreich sein, wenn Sie einen speziellen Datentyp oder ein Bedienelement anbieten möchten, das so standardmäßig an dem zu verbindenden Node gar nicht angeboten wird. So können Sie eine Eingabe z. B. zunächst für mathematische Berechnungen nutzen, bevor das Ergebnis dann an andere Nodes weitergereicht wird.
In unserem Beispiel soll auf diese Weise die Anzahl der Unterteilungen durch den Unterteilen-Node gesteuert werden können. Da es sich dabei um einen ganzzahligen Wert handelt, kommt dafür nur die Integer-Bedienelement infrage. In den Einträgen für die Benutzer-Interface-Elemente des Asset-Browsers finden Sie dazu diese Einträge:
Im Prinzip sind alle drei Elemente für unseren Zweck geeignet, wobei bei der Angabe von Unterteilungsstufen generell nur kleine, positive Werte sinnvoll sind. Wir lernen dazu gleich noch eine Möglichkeit kennen, um die vom Nutzer eingetragenen Werte vor der Anwendung in der Schaltung auf Plausibilität zu überprüfen oder auf Wunsch auch automatisch zu begrenzen.
In unserem Fall halten wir es einfach und ziehen den Eintrag für IO Integer aus dem Asset-Browser in den Node-Editor. Es entsteht automatisch ein neuer Eingang für Integerwerte an der Gruppe. Dieser lässt sich wieder durch einen Doppelklick beliebig umbenennen, z. B. mit Basisunterteilungen (siehe Ziffer 1 in der folgenden Abbildung). Ein Hinweis darauf, dass hiermit die Unterteilungsstufen gewählt werden, bevor die Geometrie dann weiter verarbeitet wird.
Wie bereits bei der Verbindung der Typ-Einstellung, benötigen wir am Unterteilen-Node auch hier wieder einen passenden Eingang, diesmal für die Anzahl der Unterteilungen. Wählen Sie dazu also den Node aus und führen Sie im Attribute-Manager einen Ctrl-Klick auf das Kreis-Symbol neben dem Unterteilungen-Wert aus (siehe Ziffer 1 in der folgenden Abbildung). Der entsprechende Eingang am Node erscheint (siehe Ziffer 2).
Alternativ hierzu können Sie neue Eingänge auch direkt am Node hinzufügen. Führen Sie dazu einen Rechtsklick auf den Node aus und wählen Sie im Kontextmenü Eingang hinzufügen aus. Bei Nodes, die viele Einstellungen zur Verfügung stellen, kann es jedoch aufwändig sein, den richtigen Port-Namen zu finden. Daher ist die oben beschriebene Strg oder Ctrl-Klick-Methode in vielen Fällen vorzuziehen.
Stellen Sie schließlich durch Ziehen mit der Maus die Verbindung zwischen dem neuen Basisunterteilungen-Port an der Gruppe und dem Unterteilungen-Eingang am Node her. Nach dem Selektieren der Nodes-Modifikatorgruppe im Objekt-Manager zeigt der Attribute-Manager beide Benutzereinstellungen an. Durch schrittweises Veränderungen des Werts für die Basisunterteilungen sollten Sie direkt beobachten können, wie der Würfel mehr oder weniger stark zusätzlich unterteilt wird. Etwas störend mag dabei nur sein, dass dieser Wert über der Auswahlmöglichkeit für die Selektionen angezeigt wird (siehe folgende Abbildung). Lassen Sie uns daher nun erkunden, wie Sie die Reihenfolge der Benutzerdaten beeinflussen können.
Die Nutzung der IO-Elemente aus der Gruppe Benutzer-Interface kann nicht nur für Assets, sondern auch für normale Node-Gruppen verwendet werden, um diesen individuelle Eingänge hinzuzufügen. Einziger Unterschied hierbei ist, dass eine geöffnete Gruppe standardmäßig (sofern Sie nicht bereits Nodes enthält, die von außen Werte empfangen) keinen Eingangs- oder Ausgangsbereich anzeigt. Die grauen Bereiche am linken und rechten Rand einer geöffneten Gruppe können also anfangs noch fehlen. Diese entstehen automatisch, wenn Sie neue Ports an der Gruppe anlegen. Die nachfolgenden Abbildungen stellen dies dar.
Neue Eingänge an einer Gruppe lassen sich entweder durch Ziehen eines Eintrags aus der Benutzer-Interface-Gruppe des Asset-Browsers oder - falls sich bereits Nodes in der Gruppe befinden - durch Drag&Drop von einem Port-Eingang in den leeren Node-Editor hinein und Auswahl von Neuen Eingang hinzufügen ergänzen. Ebenso kann mit Ausgang-Ports von Nodes verfahren werden, um Ausgänge an einer Gruppe zu ergänzen. Dies ist auf der linken Seite der obigen Abbildung zu sehen.
Eine weitere Option zum Hinzufügen und Konfigurieren von Ports bietet der Resource-Editor, der im nächsten Abschnitt beschrieben wird.
Die Reihenfolge der Ports lässt sich direkt an Nodes und auch den Gruppen Ein- und Ausgängen per Drag&Drop verändern. Dies ist hilfreich, um z. B. sich überkreuzende Verbindungslinien zu beheben. Für die Funktionen selbst spielt dies zwar keine Rolle, kann aber dabei helfen, die Übersichtlichkeit der Schaltung zu verbessern. Die Reihenfolge, in der die Gruppen-Eingänge im Attribute-Manager präsentiert werden, verändert sich dadurch jedoch nicht. Diese hängt zwar primär von der Reihenfolge ab, in der die Eingänge an der Gruppe hinzugefügt wurden, doch auch dafür gibt es eine Lösung: den Resource-Editor.
Um diesen für die aktuelle Schaltung zu öffnen, führen Sie einen Rechtsklick in den Node-Editor aus und wählen Resource bearbeiten... aus dem Kontextmenü aus (siehe folgende Abbildung).
Für uns ist insbesondere die linke Spalte des Resource-Editors interessant, die im oberen Teil die aktuellen Ein- und Ausgänge an dem Asset auflistet (siehe Ziffer 1 der folgenden Abbildung) und darunter die verfügbaren Optionen für zusätzliche Eingänge anzeigt (siehe Ziffer 2). Diese Optionen sind mit den Benutzerdaten des Asset Browsers identisch, die wir bereits verwendet haben, um den IO Integer-Eingang anzulegen.
Sie können also auch den Resource-Editor verwenden, um die gewünschten Eingänge an der Asset-Gruppe direkt zu erzeugen. Ziehen Sie dazu einfach die gewünschten Einträge aus der unteren Liste (siehe Ziffer 2 der obigen Abbildung) direkt unter den Eingänge-Eintrag in der oberen Port-Auflistung (siehe Ziffer 1). Auch hier können die selbst hinzugefügten Ports durch Doppelklick individuell umbenannt werden.
Die Reihenfolge der Einträge in der Eingänge-Gruppe spiegelt automatisch die Reihenfolge der Parameter im Attribute-Manager wider. Sie können hier nun also die gewünschten Umsortierungen vornehmen. Zudem fällt es hier auch leichter, die ordnenden Elemente UI - Gruppe und UI - Separator aus der unteren Liste direkt an die gewünschten Stellen in der oberen Hierarchie zu ziehen. Damit lassen sich dann Unterkategorien (UI - Gruppe) und einfache Trennstriche (UI - Separator) zur Strukturierung von umfangreicheren Parameterlisten einbeziehen.
Die UI - Gruppe funktioniert dabei wie ein Ordnungselement, dem Sie einen Gruppennamen geben und andere Eingänge im Resource-Editor darunter einsortieren können.
Sorgen Sie durch Umsortierung dafür, dass die Basisunterteilungen erst nach Beschränkende Selektionsart angezeigt wird und schließen Sie diese Einstellungen mit einem UI - Separator-Element ab (siehe Ziffer 1 der obigen Abbildung). Anschließend schließen Sie den Resource-Editor wieder. Die Änderungen werden automatisch übernommen.
Es existieren Parameter, die nur in Abhängigkeit zu anderen Einstellungen relevant werden. Denken Sie z. B. an die Maximaler Winkel-Einstellung vieler Modellierfunktionen, die nur nach Aktivierung der Gruppen erhalten-Option genutzt werden kann. Wenn Sie die Einstellung für Maximaler Winkel also z. B. dem Nutzer einer Asset-Gruppe zur Verfügung stellen möchten, denken Sie daran, entweder auch die dazu gehörende Option zur Erhaltung von Polygongruppen mit herauszuführen oder sorgen Sie innerhalb der Schaltung dafür, dass Maximaler Winkel auch immer verwendet werden kann.
So wie es die folgende Abbildung zeigt, kann es zudem dazu kommen, dass Parameter, die am Node bereits in Gruppen organisiert sind, im Resource-Editor ebenfalls in Untergruppen angezeigt werden und nicht unter der Eingänge-Gruppe.
Je nachdem, welche Eigenschafen oder Funktionen Sie in einer Schaltung durch Nutzereingaben steuern möchten, können das individuelle Anpassen der Bedienelemente eines Parameters und das Vorgeben eines Standardwerts oder von Grenzwerten nützlich sein. Alle diese Aufgaben lassen sich ebenfalls im Resource-Editor erledigen. Öffnen Sie dazu den Resource-Editor zu dem Asset, das die Benutzerdaten trägt und selektieren Sie im linken oberen Listenbereich des Resource-Editors den Eingangswert, den Sie bearbeiten möchten. Wir haben bereits im vorhergehenden Abschnitt gesehen, dass Sie in diesem Bereich auch die Reihenfolge der Eingänge individuell anpassen können und sich hier auch Gruppen oder Trennstriche einfügen lassen (mit den Elementen UI - Gruppe und UI - Separator). Um jedoch das Interface eines Parameters zu bearbeiten, werfen Sie einen Blick in die mittlere Spalte des Resource-Editors.
Wie in obiger Abbildung zu erkennen, werden zwei Einstellungsseiten angeboten, Allgemein und Weitergehendes, wobei die Allgemein-Einstellungen bereits die wichtigsten Funktionen enthalten. Wir gehen diese der Reihe nach durch:
Wie Sie an obigen Einstellmöglichkeiten erkennen können, lassen sich dort auch sehr einfach noch nachträgliche Schieberegler zu einfachen IO - Float-Parametern hinzufügen oder z. B. die für die Eingabe zulässigen Werte beschränken oder anpassen.
Schauen wir auch noch kurz auf die Weitergehendes-Einstellungen im Resource-Editor.
In vielen Fällen macht es Sinn, eingegebene Werte zu überprüfen oder umzurechnen, um z. B. keine zu hohen Eingaben für die Unterteilungen zuzulassen, durch die es Speicherprobleme geben könnte. Auch in anderen Fällen, z. B. wenn Prozentwerte über einen IO Fließkomma - Stärke - Regler eingegeben werden, können diese dann für die Weiterverarbeitung in andere Zahlenwerte umgerechnet werden. Wie im obigen Abschnitt nachzulesen, lassen sich derartige Grenzen für die Werteingabe direkt im Resource-Editor für jeden Parameter vorgeben, der auf eine Zahleneingabe wartet. Manchmal müssen solche Grenzen aber auch direkt in der Schaltung, z. B. für bestimmte mathematische Berechnungen, umgerechnet werden. Wir schauen uns daher in diesem Abschnitt an, wie Sie Zahlen umrechnen oder auf den gewünschten Wertebereich beschränken können.
Der erste Node, der sich dafür anbietet ist der Begrenzen-Node, den Sie in der Mathe-Kategorie des Asset-Browsers finden können. Verbinden Sie dessen Eingang-Port testweise einmal mit dem Basisunterteilungen-Port der Gruppe und verbinden Sie anschließend den Ergebnis-Ausgang des Begrenzen-Nodes mit dem Unterteilungen-Eingang des Unterteilen-Nodes. Da jeder Eingang-Port nur über eine Verbindung verfügen kann, wird die alte Verbindung hierdurch automatisch gelöscht. Ansonsten können Sie aber auch vor dem Verbinden des Begrenzen-Nodes die alte Verbindung durch einen Doppelklick darauf entfernen lassen.
Der Begrenzen-Node bietet nun im Attribute-Manager zunächst einen Datentyp an, der dem Wert entsprechen sollte, den Sie an seinem Ergebnis-Ausgang erhalten möchten. Dies sollte also wieder Integer (Kürzel: Int) sein.
Bei seinen Vorgaben für Minimum und Maximum geht es dann darum, welchen Wertebereich Sie maximal zulassen möchten. Selbst wenn der Eingangswert unter Minimum liegt, wird nur der Wert von Minimum ausgegeben. Entsprechend wird maximal der Wert von Maximum ausgegeben, selbst wenn viel höhere Werte eingegeben wurden.
Auch dieser Node ist in der Kategorie der Mathe-Nodes zu finden. Hiermit lassen sich Wertbereiche umrechnen. Werden also z. B. Werte zwischen 0% und 100% eingegeben, können z. B. Werte zwischen 0.0 und 5.0 ausgegeben werden. Die Werte für Kleinster Eingang und Größter Eingang legen dabei den Wertebereich fest, zwischen dem zulässige Benutzereingaben liegen sollen. Der Bereichswandler sorgt dabei nicht selbst für eine Begrenzung dieser Maximalwerte. Sie können daher auch hier wieder einen Begrenzen-Node vor den Eingang des Bereichswandlers schalten, damit nur Werte zwischen Kleinster Eingang und Größter Eingang verarbeitet werden. Die folgende Abbildung gibt dazu ein Beispiel.
Im obigen Beispiel wird ein Prozentwert über einen IO Fließkomma - Stärke - Schieberegler-Port als Eingang der Gruppe genutzt. Sollen dort z. B. nur Eingaben zwischen 0% und 100% erlaubt werden, schließen wir wie im letzten Beispiel einen Begrenzen-Node an. Prozentwerte werden intern als Fließkommazahlen behandelt, wobei 100% dem Wert 1.0 entsprechen. Wir müssen daher den Wert 0.0 für Minimum (siehe Ziffer 1 in obiger Abbildung) und den Wert 1.0 für das Maximum des Begrenzen-Nodes verwenden (siehe Ziffer 2). In unserem Beispiel tragen wir diese Werte nicht direkt am Node ein, sondern benutzen dafür Wert-Nodes, die Sie auch in der Mathe-Rubrik des Asset-Browsers finden. Dieser Node stellt einfach nur den gleichen Wert am Ergebnis-Ausgang zur Verfügung, der am Node eingetragen wurde. Dies bietet sich immer dann an, wenn identische Werte an mehreren Nodes genutzt werden sollen. In dem Fall muss dieser Wert nur ein Mal am Wert-Node bearbeitet werden und steht dann direkt an allen damit verbundenen Nodes zur Verfügung.
In unserem Fall betrifft dies die beiden bereits angesprochenen Eingänge für Kleinster Eingang und Größter Eingang am Bereichswandler-Node. Stellen Sie daher die entsprechenden Verbindungen zwischen diesen Eingängen und den Wert-Nodes her. Damit wurde ein fester Eingangsbereich definiert und Sie können sich auf die Werte für Kleinster Ausgang und Größter Ausgang konzentrieren, die Sie direkt am Bereichswandler eintragen können. Die Berechnung des Ergebnis-Ausgangs findet dann nach dem klassischen Dreisatz statt. Die Eingaben zwischen 0% und 100% können dann automatisch auf die Werte zwischen Kleinster Ausgang und Größter Ausgang umgerechnet werden.
In einigen Fällen kann es hilfreich sein, dass ein Looping-Verhalten für Werte simuliert wird. Stellen Sie sich z. B. Winkelwerte vor, die automatisch auf den Wertebereich zwischen 0° und 359,999° umgerechnet werden, auch wenn Sie unter 0° oder über 360° liegen. Anders als bei der harten Begrenzung der eingegebenen Werte, wie z. B. beim Begrenzen-Node, führen Erhöhungen oder Reduzierungen eines Eingangswerts dann weiterhin zu angepassten, neuen Werten, die aber ebenfalls zwischen festen Grenzen liegen. Die Winkeleingabe 400° führt dann z. B. zum Ergebniswert 40°, da volle 360°-Rotationen von 400° abgezogen zu einem Restwinkel von 40° führen.
Diese mathematische Funktion gibt es als Modulo-Node in der Gruppe der Mathe-Nodes.
Wie in obiger Abbildung zu erkennen, verfügt der Modulo über zwei Eingänge. Am unteren Eingang tragen Sie immer den maximal zulässigen Wert ein. Wenn Sie Winkelwerte z. B. zwischen 0° und 360° begrenzen möchten, tragen Sie dort also 360 ein. Der Modulo arbeitet generell mit einer Untergrenze von 0, lässt als Ergebnis also nur Werte zwischen 0 und dem Wert des unteren Eingangs zu.
Beachten Sie bei der Verarbeitung von Winkeln, dass viele Mathe-Nodes Winkel im Bogenmaß erwarten. 360° entsprechen dabei dem Wert 2*pi. Für diese Umrechnung verwenden Sie den Winkeleinheit-Node aus der Konvertierung-Nodegruppe.
Am oberen Eingang leiten Sie z. B. den vom Nutzer vorgegebenen Wert an den Modulo-Node. Am Ergebnis-Ausgang erhalten Sie dann immer Werte, die zwischen 0 und dem Wert des zweiten Eingangs liegen. Auf die Beispiele der oberen Abbildung bezogen kommen die Ergebnisse also so zustande:
Der Wert an Eingang 2 wird generell positiv verwendet, aber der Wert an Eingang 1 darf auch negativ sein. In unserem Beispiel mit den Winkeln würde eine Eingabe von -400° also zu dem Ergebnis -40° führen.
Oft lassen sich die Eingaben eines Nutzers an mehreren Stellen innerhalb der Node-Schaltung nutzen. Aus diesem Grund können die Eingänge einer Gruppe oder eines Assets auch gleichzeitig zu mehreren Eingängen eines Nodes oder verschiedener Nodes verbunden werden. Je nach Lage dieser Nodes in der Schaltung kann es dadurch jedoch schnell unübersichtlich werden, wenn Verbindungen kreuz und quer durch eine Schaltung verlaufen. In solchen Fällen kann es helfen, Eingang-Ports abzulösen. Dazu ein kleines Beispiel.
Wie im obigen Beispiel zu sehen, verbessert sich die Lesbarkeit und Übersichtlichkeit der Schaltung durch die Verwendung der Eingangswerte direkt an den Nodes, dort wo sie verarbeitet werden. Ziehen Sie dazu einfach den Namen des entsprechenden Eingangs vom linken Rand der Gruppe in die Schaltung hinein. Es entsteht ein spezieller Node-Typ, der den Wert des entsprechenden Eingangs zur Verfügung stellt. Von diesen Schwebendes IO-Nodes lassen sich beliebig viele in der Schaltung erzeugen.
Mit wenigen zusätzlichen Nodes können wir unsere Schaltung nun fertigstellen und ein interessantes Ergebnis damit erzielen. Eine Noiseselektion erstellt eine zufällige Auswahl von Polygonen an dem unterteilten Objekt. Legen Sie dazu den Schwellwert und die Invertieren-Option als Benutzer-Eingänge an der Gruppe an.
Das Ergebnis der Noisselektion leiten Sie an einen Polygon Bevel-Node, um diese Polygone zu extrudieren und dabei bei Bedarf zu skalieren. Hier können Sie z. B. die Werte für den Offset und Innen extrudieren nach außen führen.
Das Ergebnis lassen Sie mit einem Neu erzeugt-Node mit der Geometrie der Noiseselektion vergleichen. Dadurch erhalten Sie eine Selektion, die nur die neu durch Polygon Bevel erzeugten Polygone enthält. Wenn Sie diese Polygon Selektion schließlich an einen weiteren Unterteilen-Node leiten, der diesmal auch die Weich-Option aktiviert hat, wird dessen rundende Unterteilung nur auf diese neuen Bereiche der Geometrie begrenzt. Die ausgegebene Geometrie verbinden Sie mit dem Geometrie-Ausgang der Gruppe, um das Ergebnis der Berechnung auch in den Editoransichten betrachten zu können.
Nachfolgend finden Sie eine komplette Auflistung aller IO-Elemente, die Sie für Assets oder auch Gruppen in Node-Schaltungen verwenden können, um individuelle Ein- und Ausgänge zu definieren.
Diese Elemente bieten sich an, wenn Sie Nutzern ein Auswahlmenü oder mehrere Modi als Schaltflächen zur Verfügung stellen möchten. Diese Elemente verfügen standardmäßig jeweils über drei Auswahloptionen, die Sie im Resource-Editor beliebig umbenennen können. Beide IO-Elemente liefern Integerwerte, die bei 0 für das erste Listenelement beginnen. Sie können diese Werte z. B. mit einem Schalter-Node zu beliebig anderen Werten umrechnen lassen.
Hierüber können Sie einen individuellen Ausgang-Port z. B. an einer Gruppe hinzufügen. Der Datentyp dieses Ausgangs ist noch nicht festgelegt, kann aber über den Resource-Editor individuell eingestellt werden.
Dieses Element stellt ein einfaches Options- bzw. Ankreuzfeld zur Verfügung, z. B. um eine Funktion ein oder aus zu schalten. Die Ausgabe kann als Zahlenwert genutzt werden, wobei 0 im ausgeschalteten und 1 im eingeschalteten Zustand ausgegeben wird. Gleichzeitig lassen sich die Ergebnisse aber auch als false (ausgeschaltet) und true (eingeschaltet) interpretieren und somit z. B. direkt mit einem Boolscher Operator-Node auswerten.
Hierbei handelt es sich um ein spezielles Vektor-Datenformat, das ausschließlich zur Übertragung der Seitenverhältnisse und Größe einer Bounding Box gedacht ist. Aus diesem Grund stellt dieses Element auch kein Benutzerinterface zur Verfügung. Dieses Element könnte z. B. mit dem Bounding Box-Ausgang des gleichnamig Nodes verbunden werden.
Für den Eingabe und Weitergabe von Farbinformationen stehen zwei Elemente zur Verfügung, IO - Farbe und IO - Farbe Alpha. Diese sind grundsätzlich identisch, nur, dass bei Farbe Alpha ein zusätzlicher Prozentwert zur Bestimmung der Deckkraft der Farbe enthalten ist. Beide Elemente liefern Vektordaten, bei denen die Komponenten X, Y, und Z für die Farbanteile Rot, Grün und Blau stehen und als Fließkommawerte zwischen 0.0 und 1.0 gespeichert werden. Bei IO - Farbe Alpha ist eine zusätzliche Alpha-Komponente enthalten, deren Wert ebenfalls zwischen 0.0 und 1.0 liegen kann. Beide Datentypen lassen sich sowohl als Color bzw. ColorAlpha, als auch als Vector3d bzw. Vector4d auslesen und weiterverarbeiten.
Fließkommawerte, also Zahlenwerte, die auch über einen Nachkommaanteil verfügen, wie z. B. 3,4151, sind besonders flexibel bei mathematischen Berechnungen einsetzbar oder wenn es um die präzise Eingabe von Werten geht. Dieser Datentyp kann auch mit Einheiten verknüpft werden, um z. B. Prozentwerte, Winkel oder Abmessungen darzustellen. Es stehen daher verschiedene Varianten dieses Datentyps zur Verfügung. In allen Fällen erhalten Sie jedoch einfache Zahlenwerte. Nur die angezeigten Einheiten und Bedienelemente unterscheiden sich. Zudem sind einige dieser Elemente bereits auf einen Zahlenbereich begrenzt, sodass u. U. nicht beliebige Zahlen eingetragen werden können.
Dieser Datentyp ist speziell für den Austausch von Informationen gedacht, die mit der Geometrie eines Objekts zu tun haben. Darunter fallen z. B. die Punktpositionen einer Oberfläche oder eines Splines, die Punktpaare, die mit Kanten verbunden sind, die Punkte, die Polygone begrenzen oder aber die Tangenten eines Splines. Aufgrund der Komplexität dieses Datentyps ist kein Bedienelement vorgesehen. Sie müssen stattdessen die Geometrie-Ports der Nodes verwenden, um an diesem Port Daten zu übergeben oder zu übernehmen.
Mit diesen Elementen lassen ganzzahlige Werte austauschen. Verwenden Sie diesen Datentyp nur dann, wenn Sie keine komplexeren Berechnungen mit diesen Werten vorhaben. Ansonsten bietet sich der Datentyp IO- Fließkomma an. Sinnvoll sind Integer-Werte z. B. um eine Anzahl von Unterteilungen oder Kopien einzustellen.
Eine Matrix besteht aus verschiedenen Vektoren, durch die u. a. die Position, Größe und Drehung eines Achsensystems oder Objekts im Raum beschrieben werden kann. Dieses Bedienelement ist daher mit der Koordinaten-Rubrik von Objekte identisch.
Hierbei handelt es sich um ein spezielles Datenformat (Tuple), durch das zwei Vektoren gleichzeitig übertragen werden können. Gedacht ist dieser Datentyp für die Steuerung eines Tangentenpaars. Jeder Vektor steuert die Richtung und Länge einer Tangenten an einem Spline-Punkt (gilt nur bei Bezier-Splines). Dieser Datentyp verfügt über kein Benutzerinterface und ist daher nur zum Verbinden von Nodes gedacht, die Tangenten-Informationen zur Verfügung stellen.
Dieses Element stellt ein String-Eingabefeld zur Verfügung, durch das z. B. Namen für ein Objekt oder eine gespeicherte Selektion eingetragen werden können.
Wie bereits beim Element IO- Text wird hier ein Feld für eine String-Eingabe zur Verfügung gestellt. Zusätzlich finden Sie ein Ordner-Symbol rechts neben dem Textfeld, durch das Sie einen Dateidialog öffnen. Auf diese Weise lässt sich ein beliebiges Verzeichnis, z. B. zum Laden oder Speichern von Daten auswählen.
Vektoren bestehen aus mehreren Fließkommawerten, durch die dann z. B. ein RGB-Farbwert, eine Position im Raum oder ein Richtungsvektor beschrieben werden können. Die folgenden Vektor-Elemente stehen zur Verfügung:
Dieses Element bietet ein Eingabefeld für eine Bildnummer an, um einen Zeitpunkt innerhalb einer Animation angeben zu können. So eine Information könnte z. B. genutzt werden, um eine Funktion oder Berechnung erst ab einem bestimmten Zeitpunkt auszuführen.
Unter diesem Begriff finden Sie die diverse Datentypen wieder, die oben bereits als Einzelelemente beschrieben wurden. Der Unterschied hier besteht darin, dass IO - Arrays kein Benutzer-Interface zur Verfügung stellen können. Ein Array entspricht einer Liste mit variabler Länge. Es können auf diese Weise mehrere Werte eines bestimmten Datentyps gespeichert werden. Denken Sie z. B. an ein IO Array - Vektoren - Punkte, durch das alle Punktkoordinaten einer Geometrie gespeichert werden können.
Arrays können z. B. mit einem Build-, einem Array setzen- oder einem Füllen-Array-Node selbst erstellt und durch Zuleitung von Werten befüllt werden. Generell finden Sie den Großteil der Nodes, die mit den Werten von Arrays umgehen, in der Datenstrukturen-Gruppe des Asset-Browser.
Da alle IO - Array-Datentypen kein direktes Interface für die Eingabe von Werten zur Verfügung stellen, sind diese IO-Elemente hauptsächlich für Ports interessant, die für das Ein- oder Ausgeben von Arrays an Gruppen zuständig sind. Nachfolgend finden Sie ein einfaches Beispiel dazu, wie ein Array erstellt und ausgelesen werden kann.
Wir in obiger Abbildung zu erkennen, legen wir Benutzerdaten für IO - Vektor - Größe und IO - Fließkomma - Größe an, um an einer Nodes-Modifikator-Gruppe eine Position und einen Radiuswert vorgeben zu können. Der Effekt des Assets soll der sein, dass automatisch alle Polygone ausgewählt und extrudiert werden, deren Punkte innerhalb eines Kugelradius um eine vorgegebene Position liegen. Technisch setzen wir dies wie in der folgenden Abbildung um:
Wir verwenden einen Geometrieegenschaften auslesen-Node mit der Typ-Einstellung 3D Punkte, um ein Array mit allen lokalen Punktpositionen der zugeleiteten Geometrie zu erhalten. Es handelt sich hierbei also um ein Array mit 3D-Vektoren. Um ein Array Eintrag für Eintrag auslesen zu können, wird ein Sammlung iterieren-Node (siehe Ziffer 1 in der Abbildung) angeschlossen. Aus dem Array wird dadurch ein Datenstrom, der nacheinander alle Elemente des Arrays zur Verfügung stellt. Auf diese Weise können Sie generell alle Elemente eines Arrays der Reihe nach ausgeben lassen.
Die einzelnen Vektoren des ausgelesenen Arrays stellen die lokalen Punktpositionen der Geometrie dar und können durch Multiplikation mit der globalen Matrix des Objekts, aus dem die Geometrie stammt, zu globalen Punktpositionen umgerechnet werden. Dafür kommt der Transformationsvektor-Node zum Einsatz. Der Abstand zwischen dem so umgerechneten Punkt und der Vorgabe Selektionszentrum wird mit einem Abstand-Node berechnet und mit der Funktion <= mit dem Selektionsradius verglichen. Ist der berechnete Abstand also kleiner oder gleich der Vorgabe, liefert der Vergleichen-Node den Wert 1 (bzw. true), ansonsten den Wert 0 (bzw. false).
Über einen Build-Node (siehe Ziffer 2) definieren wir ein neues Array vom Datentyp Integer, damit wir uns darin die Nummern der Punkte merken können, die auszuwählen sind. Durch Anklicken der Kürzen-Schaltfläche am Build-Node entfernen wir alle Einträge, damit ein komplett leeres Array entsteht. Durch einen nachgeschalteten Elemente anhängen-Node (siehe Ziffer 3) lassen sich nun Integer-Werte zu dem Array hinzufügen. Die Anzahl der Einträge im Array erhöht sich dabei automatisch um den Anzahl-Wert am Node. Wird dort das Ergebnis des Vergleichen-Nodes angeschlossen, wird das neue Array immer nur dann um einen Eintrag verlängert, wenn ein Punkt innerhalb des Suchradius gefunden wurde (Ergebnis = 1). Die Indexnummer dieses Punkts wird dadurch an dem Array hinzugefügt (siehe Verbindung zwischen dem Index-Ausgang des Sammlung iterieren-Nodes und dem Wert-Eingang des Elemente anhängen-Nodes) . Auf diese Weise entsteht ein Selektion-Array, das sich überall verwenden lässt, wo sich z. B. Modellierfunktionen auf eine Selektion beschränken lassen.
In unserem Fall muss am Ende nur noch die Punktauswahl in eine Polygonauswahl umgerechnet werden, damit z. B. der Extrudieren-Befehl wie gewünscht verwendet werden kann. Hierfür steht der Selektion übertragen-Node zur Verfügung.
Diese Elemente sind nicht zur Übermittlung von Daten gedacht, sondern zur Strukturierung des Interfaces bei Verwendung mehrerer IO-Elemente. Mit IO - Gruppe entsteht eine Gruppe, unter der Sie andere IO-Elemente einordnen können. So eine Gruppe lässt sich über den Resource-Editor mit Einträgen befüllen. Im Interface erscheint dadurch der Name der Gruppe und die darunter einsortierten Einträge können durch das Auf- oder Zuklappen der Gruppe beliebig sichtbar gemacht oder auch ausgeblendet werden.
Bei IO-Separator handelt es sich um eine horizontale Linie, mit der längere Listen von IO-Elementen unterteilt und zusammenhängende Einstellungen optisch stärker voneinander getrennt werden können. Auch hier kann der Resource-Editor verwendet werden, um einen IO - Separator an der gewünschten Stelle zwischen den Einstellungen zu platzieren.
Beide Elemente, IO - Gruppe und IO - Separator, können nur im Resource-Editor erstellt werden.