Topic mit Navigation öffnen

# Cinema 4D-Parameter in Unreal nutzen

Übersicht

- Parameterverknüpfungen nutzen

- Vorbereitung der Cinema 4D-Szene
- Übernahme der Parameter in Unreal
- Editor-Blueprints für Parameter nutzen
- Spezielle Node-Funktionen

# Parameterverknüpfungen nutzen

Der hier beschriebene Import einer Cinema 4D-Szene über Datasmith bietet keine Option an, innerhalb von Unreal noch auf die Parameter, z. B. eines Generators der Cinema 4D-Szene zuzugreifen und dort Einstellungen zu editieren. Dies ist jedoch ebenfalls möglich und wird nachfolgend beschrieben. Auf diese Weise kann dann z. B. die Anzahl der mit einem MoGraph Kloner erzeugten Objektanzahl auch direkt im Unreal Editor verändert werden. Beachten Sie jedoch, dass derartige Veränderungen nur in der Unreal Editor-Umgebung möglich sind und nicht zur Laufzeit (Runtime) Ihres Spiels ausgeführt werden können. Zudem ist diese Möglichkeit nur beim Import über Datasmith verfügbar und nicht bei Nutzung der Interchange-Funktionalitäten.

## Vorbereitung der Cinema 4D-Szene

Damit der Zugriff auf Cinema 4D-Parameter direkt im Unreal Editor funktioniert, muss in Cinema 4D zunächst zumindest ein separater Take angelegt werden, um dort die zu übertragenden Parameter anzugeben. Die folgenden Bilder beschreiben dabei die nötigen Arbeitsschritte in Cinema 4D.

Diese Szene mit einem MoGraph Klon-Objekt soll als Beispiel verwendet werden.

Die oben abgebildete Szene soll hier als Beispiel dienen. Ein MoGraph Klon-Objekt erzeugt dort eine Gitter-Platzierung von Würfeln, die durch einen Zufall-Effektor zufällig verschoben und ggf. auch rotiert werden. Damit z. B. die Anzahl der geklonten Würfel und deren zufällige Variation direkt in Unreal editiert werden kann, muss zunächst ein neuer Take angelegt werden. Dazu öffnen Sie den Take-Manager und klicken dort auf das + Symbol, um einen neuen Take zu erzeugen, der automatisch unter dem Basis-Take entsteht. Der neue Take hat dadurch Zugriff auf alle Elemente des Basis-Takes, der immer alle Materialien, Tags und Objekte des Projekts enthält.

Durch Betätigung der +-Schaltfläche im Take-Manager entsteht ein neuer Take, der automatisch aktiviert wird.

Diesem neuen Take lassen sich nun nahezu beliebige Parameter hinzufügen, solange es sich dabei um folgende Datentypen und Einstellungen handelt:

- Integer-Zahlenwerte
- Fließkomma-Zahlenwerte
- Vektoren
- Farben
- Texte
- Optionen (Bool-Werte)
- Auswahlmenüs

Dazu stellen Sie sicher, dass der neue Take aktiv ist (siehe helles Symbol links neben dem neuen Take im Take-Manager) und selektieren dann das Material, Tag oder Objekt, dessen Parameter Sie an Unreal übergeben möchten. Wir entscheiden uns hier zunächst für das Klon-Objekt.

Markierung von Parametern für das Überschreiben durch den aktiven Take.

Ein Blick in den Attribute-Manager zeigt, dass nun alle Parameter des Klon-Objekts ausgegraut sind. Standardmäßig übernimmt der neue Take alle Einstellungen des Basis-Takes, weswegen alle Parameter gesperrt angezeigt werden. Durch einen Rechtsklick auf den Namen eines Parameters kann jedoch im Kontextmenü Überschreiben aufgerufen werden, wodurch dieser Parameter und sein aktueller Wert dem aktiven Take hinzugefügt wird. Wir entscheiden uns z. B. für den Anzahl-Vektor am Klon-Objekt, um die Anzahl der geklonten Würfel nachträglich verändern zu können. Der Parameter wird dadurch entsperrt und kann wieder normal verwendet werden. Allerdings wird jede Veränderung nur ausgewertet, solange der Take aktiv bleibt. Ein Wechsel zurück zum Basis-Take (durch Aktivieren der Symbols links vor dem Take im Take-Manager) macht die ursprünglichen Einstellungen aller Parameter wieder sichtbar. Auf diese Weise lassen sich beliebige Parameter überschreiben und somit für Veränderungen markieren, die später eventuell in Unreal vorgenommen werden sollen.
Falls Sie mehr als nur einen neuen Take verwenden möchten, ist dies ebenfalls möglich. Es werden alle Parameter für den Export berücksichtigt, die in manuell angelegten Takes überschrieben wurden.

Auch Parameter des Zufall-Effektors sollten übergeben werden.

Im nächsten Schritt stellen wir erneut sicher, dass der zuletzt neu hinzugefügten Take im Take-Manager aktiviert ist und selektieren dann den Zufall-Effektor im Objekt-Manager. Dort überschreiben wir die Position- und Winkel-Werte in den Parameter-Einstellungen, um die zufällige Verschiebung und Drehung der Klone steuern zu können (siehe obige Abbildung). Über die rechte Spalte des Take-Managers haben Sie jederzeit einen Überblick über alle Parameter, die für die Überschreibung freigegeben wurden (siehe nachfolgende Abbildung). Versehentlich hinzugefügte Parameter lassen sich dort einfach durch Selektieren und Betätigen der Entf-Taste wieder löschen.
Damit sind bereits alle Vorbereitungen für die Übergabe an Unreal abgeschlossen und Sie können die Szene wie gewohnt, z. B. über Datei>Projekt speichern als... sichern lassen.

Auflistung aller überschriebenen Parameter im Take-Manager.

## Übernahme der Parameter in Unreal

Importieren Sie die Cinema 4D-Szene wie hier beschrieben in den Unreal-Editor. Ein Blick in den Content-Browser zeigt innerhalb des importierten Verzeichnisses eine zusätzliche Komponente mit einem Cinema 4D-Symbol, wenn die Szene überschriebene Parameter enthält. Die nachfolgende Abbildung zeigt diese Komponente unten auf der linken Seite rot markiert. Ein Doppelklick darauf öffnet ein separates Einstellungsfenster, in dem alle übergebenen Parameter aufgelistet werden (siehe rechte Seite der folgenden Abbildung). Dort können Sie die Werte dieser Parameter beliebig editieren.
Ein Klick auf die Reimport-Schaltfläche wendet die veränderten Werte auf die Cinema 4D-Szene an, wodurch diese neu geladen wird. Ansonsten lassen sich einzelne Veränderungen durch einen Klick auf das Pfeilsymbol rechts neben editierten Parametern wieder auf den ursprünglichen Wert zurücksetzen oder Sie benutzen die Reset All-Schaltfläche, um alle Veränderungen rückgängig zu machen. Auch diese Elemente finden Sie auf der rechten Seite der folgenden Abbildung rot markiert.

Öffnen und Editieren der Parameter in Unreal.

## Editor-Blueprints für Parameter nutzen

Alternativ zu der oben beschriebenen Ausgabe und Veränderung der Parameter in dem Einstellungsfenster, lassen sich die übergebenen Werte auch in Blueprint-Schaltungen auslesen oder überschreiben. Dies funktioniert jedoch ausschließlich im Editor-Kontext und nicht für Runtime-Blueprints. Dafür gehen Sie so vor, dass Sie z. B. über die + Add-Schaltfläche des Content Browsers den Eintrag für Editor Utilities>Editor Utility Blueprint auwählen. Es erscheint ein zusätzlicher Dialog, über den sich die übergeordnete Klasse für diese Blueprint-Schaltung zuweisen lässt (siehe nachfolgende Abbildung). Dort können Sie z. B. Editor Utility Actor auswählen.

Erstellen und Konfigurieren eines Editor Utility Blueprints.

Es öffnet sich anschließend automatisch der Blueprint-Editor. In der linken Spalte finden Sie dort eine Option zum Hinzufügen neuer Variablen (Plus-Icon). Die neu erstellte Variable kann anschließend konfiguriert werden. Lassen Sie dafür am besten nach dem Begriff Cineware suchen, um direkt zur Kategorie Cineware Asset Instance zu gelangen, wo Sie die Object Reference auswählen. Abschließend müssen Sie im Details-Bereich, der standardmäßig auf der rechten Seite des Blueprint-Editors zu finden ist, noch den passenden Default Value für diese Variable auswählen, damit die Verbindung zwischen der Variablen und den Parametern des Assets hergestellt werden kann. Sind mehrere Cinema 4D-Assets mit übergebenen Parametern vorhanden, wählen Sie dort das gewünschte Asset aus (siehe nachfolgende Abbildung).

Erstellen und Konfigurieren der Cineware Asset-Variablen

Durch das Ziehen der Cineware Asset Instance-Variable aus der rechten Spalte in den Blueprint-Editor hinein, kann eine Instanz dieser Variablen der Schaltung hinzugefügt werden. Dabei öffnet sich automatisch ein Kontextmenü, in dem Sie zwischen den Get- und Set-Methoden für diese Variable wählen können (siehe nachfolgende Abbildung). Wir wählen hier die Get-Methode.

Hinzufügen der Cineware Asset Instance-Variable zur Blueprint-Schaltung und Auswahl der gewünschten Methode.

Cineware stellt zahlreiche Asset Getter- und Asset Setter-Nodes zur Verfügung, mit denen gezielt Parameter eines bestimmten Datentyps ausgelesen oder geschrieben werden können. Dabei ist jeweils notwendig, den Namen des entsprechenden Parameters zu kennen und entsprechend an diesen Nodes einzutragen. Die Schreibweise muss dabei derjenigen entsprechen, die auch in dem bereits hier erwähnten Einstellungsfenster verwendet wird. Als Bestätigung dafür, dass die derart adressierten Daten im Asset tatsächlich auch gefunden wurden, werden generell Bool-Signale als ReturnValue an diesen Nodes ausgegeben (true für eine gelundene Operation, false für eine misslungene).

Cineware stellt diverse Get- und Set-Methoden für die Abfrage und das Setzen von Asset-Variablen zur Verfügung.

Ausgelesene Daten werden in einem speziellen Datenformat zur Verfügung gestellt, das durch spezielle Break CinewareDataContainer-Nodes entpackt werden kann, so wie es in der folgenden Abbildung beispielhaft mit ausgelesenen Vector3-Daten demonstriert wird.

Cineware stellt auch unterstützende Nodes zum Entpacken der verschiedenen Datentypen zur Verfügung.

Wie oben bereits erläutert, muss der Name eines übergebenen Parameters bekannt sein, um den entsprechenden Wert überschreiben oder auslesen zu können. Ist der Namen jedoch nicht bekannt und nur dessen Datentyp, gibt es auch dafür eine Lösung. Die vorhandenen Parameter eines Cinema 4D-Assets lassen sich nacheinander im Rahmen einer Iteration ausgeben. Dazu verwenden Sie zunächst einen Begin Iteration-Node und lassen diesem die gewünschte Anzahl an Get Next-Nodes des gesuchten Datentyps folgen. Zusätzlich stehen auch noch Get HasNext-Nodes zur Verfügung, die ausschließlich zum Überprüfen geeignet sind, ob innerhalb einer Iteration ein bestimmter Datentyp gefunden wurde oder nicht. Die folgende Abbildung stellt die entsprechenden Nodes zum Überprüfen und zum Auslesen von Datentypen eines Cinema 4D-Assets innerhalb einer Iteration dar.

Verfügbare Nodes zum iterativen Auslesen und Überprüfen von Daten eines bestimmten Typs.

Die folgende Abbildung gibt ein Beispiel zu so einer iterativen Nutzung von Get Next-Nodes innerhalb einer Schaltung. Das hier verwendete Asset enthält zwei Parameter vom Typ Vector 3, die hier nacheinander ausgelesen werden (über Get Next Vector 3-Nodes). Die entsprechenden Werte werden über Break CinewareDataContainer Vec3-Nodes entpackt und mit Print String-Nodes im Output Log ausgegeben. Dies geschieht jedoch nur, wenn über die Branch-Nodes ein positives Bool-Signal der ReturnValue-Ausgänge geleitet wird, also auch tatsächlich Vektor-Werte am Asset gefunden wurden.

Beispiel zur iterativen Ausgabe von Asset-Daten vom Typ Vector 3.

## Spezielle Node-Funktionen

Cineware stellt zusätzlich zwei Node-Funktionen zur Verfügung, mit denen sich Positionsdaten umrechnen lassen. Dies kann hilfreich sein, da Cinema 4D ein von Unreal abweichendes Achsensystem verwendet. In Cinema 4D weist die Y-Achse in die Höhe, in Unreal ist dies die Z-Achse. Sie finden diese Nodes direkt in der Cineware-Rubrik der Nodes (siehe nachfolgende Abbildung). Diese Nodes lassen sich auch zur Runtime nutzen.

Spezielle Cineware-Funktionen zum Umrechnen von Cinema 4D- und Unreal-Koordinaten.