Topic mit Navigation öffnen

Übersicht

- Assets aus Cinema 4D importieren

- Den Maßstab anpassen
- Unterstützte Eigenschaften

- Position, Größe, Winkel
- Geometrie
- Materialien

- Farbe-Kanal
- Diffusion-Kanal
- Leuchten-Kanal
- Transparenz-Kanal
- Reflektivität-Kanal
- Relief-Kanal
- Normale-Kanal

- Allgemeines zu Texturen
- Kameras
- Lichtquellen

- Punkt-Lichtquellen
- Spot-Lichtquellen
- Unendliche-Lichtquellen
- Fläche-Lichtquellen

- LOD-Objekt

# Assets aus Cinema 4D importieren

Nachdem Sie die Importeinstellungen unter Global Asset Import Setting kontrolliert haben, können Sie die gewünschte Cinema 4D-Szene laden. Ein Teil dieser Einstellungen lässt sich jedoch auch noch nach dem Import anpassen und ein erneuter Import mit aktualisierten Einstellungen auslösen.

Den eigentlichen Import von Cinema 4D-Assets lösen Sie durch einen Rechtsklick in den Assets-Bereichs des Project-Fensters und die Wahl von Import New Asset… aus. Dieser Befehl ist zusätzlich über das ‚Assets‘-Menü von Unity erreichbar. In dem sich öffnenden Dateidialog wählen Sie anschließend die gewünschte *.c4d-Datei aus.

Die folgenden Limitationen bestehen dabei:

- Der Animator Controller funktioniert nicht mit Geometrie, die durch Joint-Objekte und den Skin-Deformator animiert wurden.
- Es kann Probleme mit dem Pose Morph-Tag geben, wenn diese in Cinema 4D zuerst einem parametrischen Grundobjekt zugewiesen wurde, das anschließend zu einem Polygon-Objekt konvertiert wurde. Achten Sie daher darauf, die Pose Morph-Funktionalität nur Polygon-Objekten zuzuweisen.
- In Cinema 4D durch Expressions, Dynamics und andere parametrische Funktionen erstellte Animationen müssen dort vor dem Export gebacken werden. Dies betrifft z. B. Auf Spline ausrichten-Expressions, inverse Kinematik-Funktionen und physikalische Simulationen.

Nach dem abgeschlossenen Import finden Sie die Objekte, Materialien, Texturen und ggf. Animationen im Project-Fenster von Unity.

Der 'Project-'Bereich (im Bild unten links zu sehen) listet alle importierten Assets und deren Komponenten auf. In diesem Beispiel für das Modell eines Bogens importiert und dann aus dem 'Assets'-Bereich direkt in das 'Hierarchy'-Fenster gezogen. Das Objekt erscheint dadurch in der Szene (siehe 'Scene'-Bereich).

Wie im obigen Bild zu erkennen, öffnet ein Klick auf ein importiertes Cinema 4D-Asset im Inspector ebenfalls Einstellungen, die wir bereits teilweise aus den Global Import Settings kennen. Hier können diese Einstellungen für bereits geladene Assets dann ggf. korrigiert und durch einen Klick auf die Apply-Schaltfläche auch neu angewendet werden.

Zudem erhalten Sie in diesem Dialog auch Rückmeldungen dazu, wie lange Sie Cineware noch ohne Registrierung nutzen können. Cineware ist zwar kostenfrei, benötigt zur zeitlich unbeschränkten Nutzung jedoch eine Registrierung, die Sie durch einen Klick auf die Sign In-Schaltfläche vornehmen können. Sie gelangen dadurch auf eine Webseite, auf der Sie über den Register-Link ein eigenes Maxon-Benutzerkonto anlegen können.

Webseite zum Einloggen oder Registrieren eines Maxon-Benutzerkontos zur zeitlich unbeschränkten Nutzung von Cineware.

## Den Maßstab anpassen

In den Asset-Einstellung finden Sie auch eine zusätzliche Option für Modeled in Units, mit der Sie den Maßstab der Geometrie anpassen können. Der Wechsel von 'Centimeter' auf 'Meter' führt dann z. B. dazu, dass die Geometrie dann in Unity 100 mal größer dargestellt wird.

## Unterstützte Eigenschaften

Diese Rubrik fasst die Objekttypen und deren Parameter zusammen, die vom Cineware-Import in Unity unterstützt werden.

### Position, Größe, Winkel

Die grundlegenden Eigenschaften für Position, Größe und Winkel samt deren Animation bleiben an den importierten Meshes erhalten und werden in Unity direkt auf die Eigenschaften Transform.localPosition, Transform.localScale und Transform.localRotation übertragen.
Für Winkel-Animationen gilt, dass diese beim Import automatisch gebacken und als Quaternion-Rotation interpretiert werden. Dadurch werden Gimbal-Lock-Probleme vermieden und zwischen Keyframes interpolierte Drehungen folgen immer der Drehrichtung mit dem betragsmäßig kleinsten Winkel.
Hier finden Sie weitere Informationen zur Interpolation von Winkeln und deren Animation.

### Geometrie

Alle importierten Objekte werden trianguliert und als Mesh interpretiert. N-Gons und viereckige Polygone werden also generell in dreieckige Polygone unterteilt. Vorhandene Polygon-Auswahl-Tags aus Cinema 4D führen zu einem Import diese Flächen als Sub-Mesh. Dadurch bleiben auch Darstellungen von Objekten erhalten, an denen mehrere Materialien vorhanden sind und diese auf verschiedene Abschnitte der Oberfläche mittels Polygon-Auswahl-Tags gelegt wurden. Weiterhin werden folgende Eigenschaften übernommen:

- Die Oberflächennormalen eines Normale-Tags werden in der Mesh.normals Eigenschaft gespeichert. Ist an dem Objekt kein Normale-Tag vorhanden, werden die Normalenrichtungen anhand des Phong-Tags errechnet. Fehlt auch dieses, berechnet Unity selbst die Oberflächennormalen.
- Vorhandene UV-Koordinaten werden in der Eigenschaft Mesh.uv übernommen.
- Zuweisungen aus einem Vertex-Farben-Tag (Nur Punkte- oder Polygonpunkte-Modus) werden in der Mesh.color-Eigenschaft übernommen.
- Wichtungen für eine Joint-Deformation mittels Skin-Deformator werden in Mesh.boneWeights überführt. Dabei sind maximal vier Wichtungswerte pro Oberflächenpunkt möglich.
- Die Posen eines Pose Morph-Tags werden in Unity zu Blendshapes. Dazu wird am importierten GameObject ein Skinned Mesh Renderer hinzugefügt. Die Grundpose wird dabei als Standardform für das Mesh verwendet und direkt der Mesh.vertices-Eigenschaft zugewiesen. Beachten Sie bei der Namen der Posen, dass Unity dort Sonderzeichen automatisch durch Unterstriche ersetzt. Die Stärke jeder Pose wird in Unity der Eigenschaft für Blend Shape influence zugewiesen. Dabei werden auch Animationen der Cinema 4D Stärkewerte unterstützt.

### Materialien

Innerhalb von Unity werden die Eigenschaften der Cinema 4D-Materialien zum Autodesk Interactive Shader konvertiert. Dieser arbeitet mit einer Metalness-Definition, wie sie z. B. auch beim Export zum GLTF-Format aus Cinema 4D zum Einsatz kommt. Dabei werden einige Eigenschaften des Reflektivität-Kanals anders interpretiert als in Cinema 4D. Dies betrifft vor allem die Spiegelungsstärke, die in Unity als Metalness interpretiert wird. Damit wird grundsätzlich gesteuert, wie metallisch eine Oberfläche erscheinen soll. Es ist daher wichtig, dass die Materialien in Cinema 4D vor dem Speichern für Cineware entsprechend kontrolliert und ggf. angepasst werden. Sie finden dazu hier eine entsprechende Erläuterung zum Umgang mit Metalness-Materialdefinitionen in Cinema 4D.
Grundsätzlich werden folgende Materialeigenschaften übernommen:

Eigenschaften der MeshRenderer-Komponente für den importierten Bogen. Dort ist auch das zugewiesene Material zu erkennen.

Die Einstellungen und zugewiesenen Texturen der Materialien können z. B. durch Anklicken des Materials im Project-Bereich angezeigt werden.

Farbe-Kanal

Sofern hier eine Textur geladen oder ein einfacher Farbwert eingestellt wurde, wird diese Eigenschaft als Albedo in das Unity-Material übernommen. Falls der Farbe-Kanal deaktiviert ist, werden stattdessen die Farbe und Farbtextur aus dem Reflektivität-Kanal dafür verwendet.
Bedenken Sie bei der gleichzeitigen Nutzung einer Farbe und einer Textur im Farbe-Kanal, dass die Textur standardmäßig mit der Farbe multipliziert wird. Verwenden Sie daher weiß als Farbe, wenn Sie die Textur unverändert übergeben möchten.
Zudem wird der Helligkeit-Wert beim Export zu Unity nicht ausgewertet. Stellen Sie daher immer die Farbe selbst in der gewünschten Helligkeit ein, indem Sie z. B. bei Nutzung der HSV-Systems den V-Wert dafür verweden.

Diffusion-Kanal

Die Stärke dieser Eigenschaft wird als Occlusion Strength interpretiert und eine hier zugewiesene Textur als Occlusion Texture.

Leuchten-Kanal

Durch Multiplikation der Farbe mit der Helligkeit errechnet Unity einen HDR-Farbwert der als Emission interpretiert wird.

Transparenz-Kanal

Hier wird die Helligkeit als Alpha-Anteil des Unity-Materials interpretiert. Eine Helligkeit von 100% erzeugt ein vollständig transparentes Material. Bei 0% Helligkeit erhält das Material keine transparenten Eigenschaften. Beachten Sie, das Realtime-Anwendungen in der Regel nicht in der Lage sind, Lichtbrechungen in refraktiven Materialien zu berechnen. Der Brechungsindex der Transparenz wird daher nicht ausgewertet.

Reflektivität-Kanal

Die Rauigkeit wird als Roughness-Eigenschaft interpretiert und steuert damit die Streuung an der Oberfläche. Hier kann auch eine Textur verwendet werden. Die Spiegelungsstärke wird als Metalness interpretiert. Ein Metalness-Wert von 1 (bzw. in Cinema 4D 100%) führt dazu, dass Spiegelungen und der Glanz die Färbung des Metalls übernehmen und auch die ansonsten typische Veränderung der Spiegelungsintensität bei verschiedenen Blickwinkeln auf die Oberfläche weniger stark ausgeprägt ist. Die Oberfläche wirkt dadurch metallisch.
Anders beim anderen Extrem, einem Metalness-Wert von 0 (bzw. 0% Spiegelungsstärke in Cinema 4D). Hierbei wird das Material als nicht-metallisch interpretiert. Bei nicht metallischen Oberflächen (z. B. Kunststoff, Wasser, Glas oder Holz) erhält der Glanz in der Regel die Farbe der Lichtquelle. Zudem verändert sich die Intensität des Glanzes mit dem Blickwinkel auf die Oberfläche (Fresnel-Effekt). Flach betrachtete Bereiche spiegeln und glänzen besonders intensiv, frontal betrachtete Bereiche zeigen hingegen nur schwache Spiegelungen und Glanzeffekte.
Diese Eigenschaft kann auch per Textur auf der Oberfläche variiert werden, z. B. um den Wechsel zwischen vorrosteten und blank polierten Abschnitten eines Metallteils darzustellen. Die Farbe und deren Textur aus der Reflektivität können als Albedo-Farbe übernommen werden, falls der Farbe-Kanal des Materials deaktiviert wurde. Auch hier gilt wieder, dass eine geladene Textur für den Export mit der Farbe multipliziert wird. Ist der Reflektivität-Kanal ausgeschaltet, nimmt Unity automatisch Metalness- und Roughness-Werte von jeweils 0,5 an.

Relief-Kanal

Die Relief-Stärke wird in Unity als Height Map Strength interpretiert. Eine zugewiesene Textur wird entsprechend zu einer Height Map in Unity. Alternativ können Sie auch die Normale-Eigenschaft des Cinema 4D-Materials verwenden.

Normale-Kanal

Eine hier geladene Textur wird automatisch auch als Normal Map in Unity interpretiert.

### Allgemeines zu Texturen

Die in Cinema 4D-Materialien verwendeten Texturen werden automatisch durch den Textur-Importer von Unity geladen. Sollte es dabei dazu kommen, dass Texturen nicht am vorgegebenen Verzeichnis zu finden sind, erscheint automatisch ein Warnhinweis, über den auch ein neues Suchverzeichnis angegeben werden kann. Dieses wird automatisch auch auf andere, nicht gefundene Texturen angewendet. Dieser Warnhinweis erscheint nur, wenn die Option Ask for missing Textures in den Global Import Settings aktiviert ist.
Generell macht es Sinn, Texturen für Unity quadratisch anzulegen, da diese dann einfacher komprimiert werden können und somit weniger Ressourcen belegen.

### Kameras

Um Cinema 4D-Kameras in Unity zu übernehmen, muss die Option für Import Cameras in den Global Import Settings von Unity aktiviert sein. An den Kameras werden die Position du Ausrichtung übernommen. Ebenso wird der vertikale Öffnungswinkel der Kamera ausgewertet (Gesichtsfeld(vertikal)) und zur Berechnung der Field of View-Eigenschaft in Unity verwendet (in Verbindung mit FOV Axis Vertical).

### Lichtquellen

Lichtquellen aus Cinema 4D werden übernommen, wenn die Import Lights-Option in den Global Import Settings von Unity aktiviert ist.
Wie bei Polygon-Objekten oder Kamera-Objekten, werden auch die Positionen und Ausrichtungen der Lichtquellen übernommen. Zudem werden generell die Farbe und Intensität, sowie die Art der Schattenberechnung der Lichtquellen übernommen. Dabei gilt:

- Die Lichtfarbe (siehe Farbe in den Allgemein-Einstellungen der Lichtquelle) wird samt einer dafür angelegten Animation für die Color-Eigenschaft der Unity-Lichtquelle übernommen.
- Die Intensität der Lichtquelle (siehe Intensität in den Allgemein-Einstellungen der Lichtquelle) wird ebenfalls inklusive eventuell vorhandener Animationen auf die Intensity-Eigenschaft der Unity-Lichtquelle übertragen. Dabei entsprechen 100% in Cinema 4D einem Wert von 1.0 in Unity.
- Die Schatten-Einstellung aus Cinema 4D wird entsprechend auf Unity-Lichtquellen übertragen. Dabei gilt:

- Kein Schatten entspricht dem No Shadows-Modus in Unity.
- Raytraced (Hart) in Cinema 4D entspricht dem Hard Shadows-Modus in Unity.
- Shadow Maps (Weich) und Flächenschatten aus Cinema 4D werden in Unity zu Soft Shadows.

Die zusätzlich beim Import berücksichtigten Parameter werden nachfolgend jeweils für die verschiedenen Lichtquellentypen aufgeführt.

Die Markierungen zeigen die bei allen Lichtquellenarten unterstützten Einstellungen in Cinema 4D an.

Punkt-Lichtquellen

In den Details-Einstellungen der Cinema 4D-Lichtquelle finden Sie die Abnahme-Einstellung, mit der die Reichweite und der Intensitätsverlust des abgegebenen Lichts eingestellt wird. Ist dort Keine Abnahme aktiviert, arbeitet Unity mit dem Standardradius 10 für die Reichweite der Lichtquelle. Bei allen anderen Abnahmemodi wird der Wert für Äußere Distanz als Range in Unity verwendet. Auch hierbei werden Keyframes an diesem Parameter unterstützt.

Die relevanten Einstellungen in den Details-Einstellungen der Lichtquellen, durch die die Reichweite des Lichts an Unity übergeben wird.

Spot-Lichtquellen

Auch bei dieser Lichtquellenart wird die Abnahme aus den Details-Einstellungen ausgewertet. Das Prinzip entspricht dabei der Auswertung von Punkt-Lichtquellen.
Zusätzlich wird die Einstellung für Äußerer Winkel aus den Details-Einstellungen ausgewertet und auf den Spotwinkel (Spot Angle) der Unity-Lichtquelle übertragen. Auch hierbei werden Animationen unterstützt.

Der äußere Winkel eines Spots wird zu Unity übertragen.

Unendliche-Lichtquellen

Hierbei gibt es neben den Basiseigenschaften Farbe, Intensität und Schattenart keine anderen Einstellungen, die unterstützt werden.

Fläche-Lichtquellen

Bei Flächenlichtquellen werden die folgenden Formen unterstützt, die Sie in Cinema 4D in den Details-Einstellungen der Flächenlichtquellen finden können:

- Scheibe, Zylinder und Hemisphäre werden in Unity zu einer scheibenförmigen Lichtquelle.
- Rechteck, Würfel, Objekt/Spline, Linie und Zylinder (senkrecht) werden in Unity als Rechteckfläche interpretiert.

Dabei werden die Abmessungen aus den Größe X- und Größe Y-Parametern direkt für die rechteckigen Unity-Lichter verwendet. Bei den scheibenförmigen Lichtquellen wird der betragsmäßig größere dieser beiden Parameter als Radius in Unity verwendet.

Bei Flächen-Lichtquellen werden deren Form und Größe exportiert und in Unity entsprechend interpretiert.

Ansonsten können auch bei Flächenlichtern die Abnahme-Einstellungen übernommen werden. Ist in Cinema 4D Keine Abnahme aktiviert, arbeitet Unity mit dem Standardradius 10 für die Reichweite der Lichtquelle. Bei allen anderen Abnahmemodi wird der Wert für Äußere Distanz als Range in Unity verwendet. Anders als bei den zuvor genannten Lichtquellen wird hierbei jedoch keine Animation des Äußerer Radius-Parameters unterstützt. Dies liegt daran, dass die Wirkung von Area Lights in Unity generell gebacken werden. Daher ist auch keine Animation der Flächenform oder -größe möglich.

### LOD-Objekt

Das LOD-Objekt in Cinema 4D kann Objekte mit unterschiedlichen Detailstufen verwalten und z. B. passend zum Betrachterabstand eine entsprechende Version des Objekts anzeigen. Diese Eigenschaft wird dabei in Unity der LOD-Gruppenkomponente zugewiesen. Damit verknüpfte Polygon-Objekte erhalten in Unity automatisch die entsprechenden Mesh-Render-Eigenschaften.
Damit dies funktioniert, muss am LOD-Objekt in Cinema 4D der LOD-Modus Unterobjekte mit dem Kriterium Vertikale Bildschirmgröße kombiniert werden. Dabei wird die angezeigte Höhe der Objekt Bounding-Box in Relation zur vertikalen Bildschirmgröße gesetzt. Der daraus resultierende Wert steuert das Umschalten zwischen den untergeordneten Objekten entsprechend der Konfiguration der LOD-Leiste. Bei anderen Modi können in Unity die individuellen Werte der LOD-Leiste nicht übernommen werden und werden gleichmäßig verteilt angenommen.