Grundmaterial (Metalle)


Hier möchte ich ein recht einfaches, aber doch flexibles Grundmaterial, ein wenig für Metalle optimiert, vorstellen.

Um eins vorweg zu nehmen. Das Grundmaterial besteht quasi aus 5 Bereichen die wir ansprechen müssen. Base Color, Matallic, Specular, Roughness und Normalmap. Einige Bereiche sind vom Aufbau her sehr ähnlich, einige sogar identisch. Warum kann man diese Bereiche nicht einfach an verschiedene Ausgangsnodes heften oder in eine Funktion packen und diese dann halt im Material einfügen?


Das ist ganz einfach. Parameter die den gleichen Namen im Material haben, die werden auch zusammengefasst in der Instanz geändert. Sprich, wenn wir die Basecolor ändern würden, dann würden wir mit derselben Textur und Parametern auch den Bereich Metallic zum Beispiel ändern. Und das wollen wir ja nicht, weil macht keinen Sinn.


Für das Beispiel stelle ich auch gerne meine Missing Textur zur Verfügung. Glaubt mir, sie fällt auf wenn ihr etwas übersehen haben solltet.


[Blockierte Grafik: https://unrealengine4.de/index.php?attachment/11985-t-missing-png/]


Ich werde die benötigten Nodes nach einem Screenshot tabellarisch aufführen, wegen der Übersicht, und welche Einstellungen ich daran vorgenommen habe. Ich hoffe, dass das dann so OK ist und vielleicht etwas zum Verständnis beiträgt. Die Einstellungen findet ihr unter den Details der jeweiligen Node.


Fangen wir also mal an und erstellen einfach mal ein Material. Dieses nennen wir Mat_Basemetall, oder wie auch immer ihr es wünscht. Es ist ein ganz normales Material, an ihm müssen keine weiteren Einstellungen in den Parametern vorgenommen werden.


Kümmern wir uns um den ersten Teil. Die Basecolor. Sie sollte folgende Nodes enthalten.

[Blockierte Grafik: https://unrealengine4.de/index.php?attachment/11984-01-base-png/]


NodeBenennenGroupDefault Value

TextureSampleParameter2D

BaseColorBasecolorMissingTexture

VectorParameterBase ParameterBasecolor0,0,0,0
StaticBoolParameterIsTexturedBaseColorBasecolortrue
ScalarParameterBase MultiplyBasecolor0.5
Switch
Multiply


Das Ganze wird verbunden wie auf dem Screenshot und das Ende vom Multiply geht auf Bascolor.


Als Nächstes gehen wir auf die Metallicparameter wie folgt.

unrealengine4.de/index.php?attachment/11971/


Sieht eigentlich genau so aus wie bei Basecolor, nur halt mit anderen Namen (Sehr wichtig)

NodeBenennenGroupDefault Value
TextureSampleParameter2DMetallic Texture

MetallicMissingTexture
VectorParameterMetallic ParameterMetallic0,0,0,0
StaticBoolParameterIs Textured Metallic

Metallicfalse
ScalarParameterMetallic MultiplyMetallic0.5
Switch
Multiply


Hier geht das Ende von Multiply halt in Metallic.


Als Nächstes kümmern wir uns um Specular. Specular ist ebenfalls sehr ähnlich im Aufbau. Allerdings ist Multiply hier vor dem Switch, weil es macht nur Sinn hier etwas zu verstärken, wenn eine Textur benutzt wird. Und wir brauchen keinen Vectorparameter, da Specular nur mit Grauwerten arbeitet. Wenn wir Vector nehmen würden, dann müssten wir ständig die ersten 3 Werte ändern, so reicht halt ein Parameter.


unrealengine4.de/index.php?attachment/11979/


NodeBenennenGroupDefault Value
TextureSampleParameter2DSpecularSpecularMissingTexture
ScalarParameterSpecular Multiply

Specular1
ScalarParameterSpecular Setings

Specular0.5
StaticBoolParameterIs Textured Specular

Specularfalse
Switch
Multiply


Hier kommt der Ausgang von Switch natürlich in Specular.


Kommen wir zu Roughness.

unrealengine4.de/index.php?attachment/11973/


NodeBenennenGroupDefault Value
TextureSampleParameter2DScratchesRoughnessMissingTexture
VectorParameterRoughness Parameter

Roughness0,0,0,0
ScalarParameterRoughness Multiply

Roughness0.5
StaticBoolParameterIs Textured Roughness

Roughnessfalse
Switch
Multiply


Und wen wundert es. Das Ergebnis geht in Roughness.


Zum guten Schluss kommt noch Normalmap hinzu. Normalmap ist relativ einfach, weil es macht nur mit Texture sinn. Also kann man hier einstellen ob eine Normalmap vorhanden ist oder nicht.

unrealengine4.de/index.php?attachment/11983/

NodeBenennenGroupDefault Value
TextureSampleParameter2DNormalMapNormalmapMissingTexture
ScalarParameterNormal Multiply

Normalmap1
StaticBoolParameterHas NormalmapNormalmapfalse
Switch
Multiply


Und, oh Wunder, das Ergebnis wird an den Ausgang Normalmap geliefert.


Nun wird das ganze gespeichert und mit Apply übernommen. Wenn alles richtig verbinden wurde braucht ihr nicht mehr an dieses Material ran. Ihr könnt sämtliche Metalle per Instanz erstellen. Höchstens wenn ihr noch etwas ganz besonderes einfügen wollt, dann vielleicht.


Nun zur Verwendung des Materials. Wenn wir ein Metall erstellen wollen legen wir von diesem Grundmaterial einfach eine Instanz an.

Nehmen wir einfach mal Silber. Also erstellen wir eine Instanz mit dem Namen Silver_Inst aus dem Grundmaterial.

Hierfür habe ich mir dann einfach noch ein paar Schrammen erstellt, soll ja nicht so Aalglatt aussehen. [Blockierte Grafik: https://unrealengine4.de/index.php?attachment/11986-t-scratches-png/]


Wenn wir nun die Instanz öffnen kriegen wir folgendes zu sehen. Ich mache es mir hier ein wenig einfach, weil da kann jeder selbst seine Experimente starten. Es sollen ja nur Beispiele sein.




[Blockierte Grafik: https://unrealengine4.de/index.php?attachment/11987-silversample-png/]


Bei diesen Einstellung sieht das Ergebnis so aus...

[Blockierte Grafik: https://unrealengine4.de/index.php?attachment/11988-silver-png/&thumbnail=1]


Gold zum Beispiel könnte so aussehen.

[Blockierte Grafik: https://unrealengine4.de/index.php?attachment/11990-goldsample-png/]

[Blockierte Grafik: https://unrealengine4.de/index.php?attachment/11989-gold-png/&thumbnail=1]


Und Kupfer wäre etwas komplexer und bräuchte drei zusätzliche Texturen

Basecolor

[Blockierte Grafik: https://unrealengine4.de/index.php?attachment/11991-t-copper-albedo-png/&thumbnail=1]

Metallic

[Blockierte Grafik: https://unrealengine4.de/index.php?attachment/11992-t-copper-metallic-png/&thumbnail=1]

Roughness

[Blockierte Grafik: https://unrealengine4.de/index.php?attachment/11993-t-copper-rough-png/&thumbnail=1]


In der Instanz würde man es in etwa so einstellen...

[Blockierte Grafik: https://unrealengine4.de/index.php?attachment/11995-coppersample-png/]

[Blockierte Grafik: https://unrealengine4.de/index.php?attachment/11994-copper-png/&thumbnail=1]

Kommentare