Topic mit Navigation öffnen

# Metalness Materialdefinition

Bei der Nutzung von Objekten und Materialien in interaktiven Anwendungen, wie z. B. in Game-Engines, hat sich die Metalness-Materialdefinition durchgesetzt. Diese hat gegenüber der klassischen Materialdefinition den Vorteil, dass die RGB-Kanäle der geladenen Texturen effektiver genutzt werden können. Zudem lässt sich damit die Materialerstellung vereinfachen.

Diese Art der Materialdefinition basiert auf der Überlegung, dass Materialien in "metallisch" und "nicht metallisch" unterteilt werden können. Der Hauptunterschied zwischen diesen Materialgruppen liegt in der Darstellung von Glanz und Spiegelungen. 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. Flach betrachtete Bereiche spiegeln und glänzen besonders intensiv, frontal betrachtete Bereiche zeigen hingegen nur schwache Spiegelungen und Glanzeffekte (Fresnel-Effekt).

Anders sieht es bei metallischen Oberflächen aus. Dort übernehmen die Spiegelung und der Glanz oft die Farbe des Metalls und auch die vom Blickwinkel abhängige Veränderung der Spiegelungs- und Glanz-Intensitäten ist weniger stark ausgeprägt.

Diese metallische Eigenschaft wird daher bei der Metalness-Materialdefinition über einen Zahlenwert zwischen 0 und 1 angegeben oder kann auch mit einer Graustufen-Textur gesteuert werden. Tatsächlich verwenden diese Texturen jedoch oft nur Weiß oder Schwarz, um grundlegend metallische oder eben nicht metallische Eigenschaften anzuzeigen. Durch die Verwendung einer Textur sind auch Variationen des metallischen Verhaltens auf einer Oberfläche möglich, wie z. B. Rost oder abgeblätterte Farbe auf Metall. Dort, wo Lack, Farbe oder Rost auf einem Metall liegt, ist eben keine metallische Oberfläche mehr vorhanden.

Bei Metalness-Materialien legt eine Metalness-Textur grundlegend fest, ob es sich um ein metallisches oder um ein ncht metallisches Material handeln soll. Entsprechend verändert sich die Auswertung der Farbeigenschaften und der Spiegelungsberechnung.

Während wir vom Cinema 4D-Materialsystem gewohnt sind, dass eine Verstärkung der spiegelnden Eigenschaften zu einer Reduzierung der diffusen Farbe führt, ist dies bei der Metalness-Materialdefinition nicht so. Je nach Metalness-Wert wird dort die zugewiesene Farbe entweder für die diffuse Färbung der Oberfläche (bei kleinen Metalness-Werten) oder für die Färbung des Metalls und der Spiegelungen (bei größeren Metalness-Werten) verwendet.

Eine weitere wichtige Komponente ist die "Roughness", also die Rauigkeit der Oberfläche. Wie auch von Standardmaterialien in Cinema 4D her gewohnt, führt eine stärkere Rauigkeit bei nicht metallischen Materialien zu einer homogeneren Schattierung. Die Oberfläche verliert dadurch an Kontrast und wirkt matter. Bei metallischen Materialien führt die Rauigkeit zu einer Weichzeichnung der Spiegelungen, wodurch die Oberfläche aufgerauter wirkt.

Andere Materialeigenschaften, wie z. B. Bump-Mapping (bzw. Relief), Normale, Transparenz, Leuchten oder Displacement lassen sich wie gewohnt nutzen. Hierbei ist jedoch zu beachten, dass brechende Transparenzen in Echtzeitanwendungen derzeit noch nicht realistisch angezeigt werden können. Zudem bieten die meisten Anwendungen keine Unterstützung für Displacement in Echtzeit an.

## Metalness-Materialien in Cinema 4D

Liegen Ihnen Texturen eines Metalness-Materials z. B. aus einer anderen 3D-Applikation vor, können diese auch in Cinema 4D verwendet werden. Am einfachsten funktionert dies, wenn Sie mit Redshift rendern. Dort steht Ihnen u. a. das Standard-Material zur Verfügung, das die Metalness-Eigenschaft direkt unterstützt. Damit die richtige Zuordnung der Texturen zu den Eigenschaften des Redshift-Materials gelingt, können Sie sich oft an den Namen der Texturen orientieren. In der Regel werden dort bereits Standardbegriffe verwendet, um die Materialeigenschaft zu beschreiben, die durch die jeweilige Textur gesteuert werden soll. Dies sind oft diese Begriffe:

- Base Color / Albedo / Diffuse: Einer dieser Begriffe kennzeichnet oft die Textur, mit der die sichtbare Farbe des Materials beschrieben wird. Diese farbige Textur sollte daher mit der Base Color des Redshift-Materials verknüpft werden.
- Metalness: Hierbei handelt es sich in der Regel um eine Graustufen- oder schwarzweiß-Textur, mit der die metallische Eigenschaft beschrieben wird. Je heller die Textur, desto metallischer wirkt die Oberfläche. Diese Textur wird direkt mit der Eigenschaft Base Metalness verknüpft.
- Roughness: Diese Graustufen-Textur beschreibt die Qualität der Oberfläche. Je heller die Textur ist, desto rauer wirkt später die Oberfläche. Dies wirkt sich auf die Schärfe der sichtbaren Spiegelungen und Glanzlichter auf der Oberfläche aus. Diese Textur verknüpfen Sie mit Reflection Roughness
- Normal: Diese Farbtextur beschreibt die Richtung der Oberflächennormalen und beeinflusst dadurch die Schattierung der Oberfläche. Diese Textur liegt in der Regel im tangentialen Achsensystem vor. Verwenden Sie einen Normal Map-Node zum Interpretieren dieser Textur und leiten Sie das Ergebnis dann an den Eingang für Geometry Bump Map am Standard Material von Redshift.
- AO: Diese Graustufen-Textur beschreibt den Ambient Occlusion (AO) Effekt, dient also häufig zur Abdunklung von Riefen oder allgemein zur Verstärkung des Schattierungskontrasts auf der Oberfläche. Im Redshift Standard-Material könnte diese Textur z. B. mit der verknüpften Oberflächenfarbe multipliziert werden, die als Base Color verwendet wird.
- Height: Diese Graustufen-Textur beschreibt die Verformung der Oberfläche, um z. B. feiner Strukturen während des Renderings zu ergänzen, die der Geometrie fehlen. Dieser Effekt entspricht dem Displacement und wird daher über einen Displacement-Node direkt am Displacement-Eingang des Output-Nodes angeschlossen. Eventuell könnten Sie diese Textur auch als Bump-Map verwenden, falls Ihnen eine passende Normale-Textur fehlt.
- Emission: Diese Textur beschreibt die Farbe und Intensität des Leuchtens auf der Oberfläche. Sie können diese Textur direkt mit der Emission Color verbinden. Denken Sie jedoch auch daran, das Emission Weight entsprechend zu erhöhen, damit der Effekt auch sichtbar wird.
- Opacity: Mit dieser Textur wird die allgemeine Deckkraft des Materials beschrieben. Schwarze Bereiche der Textur werden dadurch ausgeschnitten und erscheinen vollständig transparent. Sie können diese Textur mit der Eigenschaft Geometry Opacity des Redshift-Materials verknüpfen.

Beispielhafte Texturen für ein Metalness-Material. Charakteristisch ist dabei die Metalness-Textur, mit der metallische und nicht metallische Bereiche eines Materials gekennzeichnet werden. Entsprechend verändert sich die Auswertung der Base Color-Textur für die Färbung der Oberfläche und der Spiegelungen.

Nutzung der Texturen einer Metalness-Materialbeschreibung mit einem Redshift Standard-Material.

Rendering des oben definierten Metalness-Materials mit Redshift. Durch die Metalness-Textur werden hier die metallisch glänzenden Bereiche und die rostigen Teile deutlich voneinander abgetrennt.

## Metalness-Materialien exportieren

Das Exportieren von Cinema 4D-Materialien, um z. B. texturierte Objekte direkt in interaktiven Anwendungen nutzen zu können, bedarf für die Materialien des Standard-/Physikalischen Renderers einer gewissen Vorbereitung. Dort sind keine direkten Materialkanäle oder Parameter z. B. für die Metalness-Eigenschaft vorhanden. Es existiert jedoch eine Lösung, die nachfolgend beschrieben wird (das Standard Redshift-Material nutzt von sich aus schon das Metalness-Materialsystem, hier kann z.B. glTF direkt exportieren).

Erzeugen Sie ein neues Standard-Material und öffnen Sie dort den Reflektivität-Kanal. Löschen Sie dort alle vorhandenen Ebenen und lassen Sie sich eine neue Beckmann-Ebene erstellen. Die vorhandenen Texturen einer Metalness-Materialbeschreibung müssen nun in die folgenden Materialkanäle und Eigenschaften geladen werden:

- Base Color / Albedo / Diffuse: Laden Sie diese Textur in den Farbe-Kanal des Materials. Alternativ hierzu kann die Textur auch als Farbe in den Reflektivität-Kanal geladen werden. Soll keine Textur verwendet werden, kann die gewünschte Farbe auch direkt über das Farbfeld eingestellt werden.
- Metalness: Laden Sie diese Textur für die Steuerung der Spiegelungsstärke in der Beckmann-Reflektivitätsebene. Ist das Material durchgängig nicht metallisch, braucht keine Metalness-Textur verwendet zu werden (gleichbedeutend mit einer schwarzen Textur).
- Roughness: Laden Sie diese Textur als Rauigkeit in der Beckmann-Reflektivitätsebene. Soll keine Variation durch eine Textur erzeugt werden, kann auch direkt der Rauigkeit-Zahlenwert passend eingestellt werden.
- Normal: Laden Sie diese Textur in den Normale-Materialkanal (Methode: Tangente).
- AO: Laden Sie diese Textur in den Diffusion-Kanal des Materials
- Emission: Laden Sie diese Textur in den Leuchten-Kanal des Materials, Soll das gesamte Material in einer Farbe leuchten, kann auch auf eine Textur verzichtet und direkt die gewünschte Farbe eingestellt werden.
- Opacity: Diese Textur sollte in den Alpha-Kanal des Materials geladen werden. Möchten Sie dem Material nur generell eine gewisse Durchsichtigkeit verleihen, können Sie alternativ auch einen Grauwert für die Farbe im Transparenz-Kanal dafür nutzen. Je heller diese Graustufe ist, desto durchsichtiger wird das Objekt angezeigt.

Das Displacement, also die Height-Textur, wird in der Regel nicht von Echtzeitanwendungen ausgewertet. Diese wird daher auch nicht von Cinema 4D exportiert.
Beachten Sie zudem, dass der Mischmodus Multiplizieren ebenfalls für die geladenen Texturen unterstützt wird. Die Mischstärke und die Farbe spielen dann für den Export ebenfalls eine Rolle.
Wenn Sie in der Reflektivitätsebene die Abschwächung Additiv verwenden, bleibt die Farbe des Materials in den Ansichtsfenstern erhalten, was die Kontrolle des Materials erleichtert. Für den Export wird diese Einstellung nicht berücksichtigt.

Die Textur für die Base Color kann einfach in den Farbe-Kanal geladen werden. Falls Sie die Farben dieser Textur noch verändern möchten, können Sie auch eine normale Farbe verwenden und über den Mischmodus Multiplizieren mit der Textur mischen lassen. Dies ist in der rechten Hälfte der Abbildung demonstriert.

Die Metalness-Textur wird zur Steuerung der Spiegelungsstärke geladen, die Sie auf 100% stellen. Die Roughness-Textur steuert die Rauigkeit, die ebenfalls mit 100% angegeben wird. Damit durch diese Materialbeschreibung die Oberflächenfarbe im Editor sichtbar bleibt, nutzen Sie die Abschwächung Additiv. Diese Einstellung beeinflusst den Export des Material nicht und verbessert nur die Materialdarstellung in Cinema 4D.

Eine vorhandene Normale-Textur wird wie gewohnt in den Normal-Materialkanal geladen.

Ansicht der exportierten Objekte mit dem Rost Metalness-Material in einem glTF-Viewer. Dort kann die gewünschte Lichtstimmung oft noch durch geladene HDR-Bilder angepasst werden.

## Bemerkungen und Limitationen

- Da die Metalness-Textur in diesem Materialaufbau die Spiegelungsstärke steuert, wird das Material in Cinema 4D anders aussehen, als in der externen Applikation. Dies hat auch mit der unterschiedlichen Auswertung der Oberflächenfarbe bei metallischen und nicht metallischen Materialien zu tun. Um vergleichbare Ergebnisse zu erzielen, können Sie zuerst Metalness-Materialien mit Redshift zusammenstellen und in Cinema 4D testrendern. Anschließend laden Sie die verwendeten Texturen in die oben beschriebenen Eigenschaften eines Cinema 4D Standard-Materials und lassen dieses dann exportieren.
- An jedem Material wird nur eine Ebene im Reflektivität-Kanal für den Export ausgewertet.
- Die Auflösung der Texturen für Spiegelungsstärke und Rauigkeit muss identisch sein, da diese Graustufen-Texturen intern zu einer RGB-Textur zusammengefasst werden. Das gleiche gilt für die Farbe- und Alpha-Texturen (Base Color und Opacity).
- Node-Materialien werden aktuell nicht für den Metalness-Export unterstützt.
- Die Beschränkung von Materialien auf Polygon-Selektionen wird derat unterstützt, dass für jede Polygon-Selektion ein einzelnes Objekt mit einem eizelnen Material exportiert wird.
- Mehrere Materialien auf den gleichen Polygonen werden nicht unterstützt.
- Beim Export von Texturen wird bzgl. der Texturinterpolation die in den Programmvoreinstellungen befindliche Interpolation-Einstellung verwendet.
- Shader müssen vor dem Export zu Bitmap-Texturen umgerechnet werden. Dazu können Sie das Material backen-Tag verwenden.