Material: Glas (de)

  • Modding: Material - Glas (de)

    1 Material: Glas

    Die Herausforderung, um ein Material wie Glas erscheinen zu lassen, sind

    • Transparenz
    • Lichtbrechung
    • Spiegelungen an der Oberfläche

    Die meisten Probleme, die bei der Arbeit mit lichtdurchlässigen Materialien auftreten können hängen damit zusammen, wie die Engine mit diesem Effekt umgeht. Immer wenn wir ein Objekt haben wie z. B. ein Glas, muss Unreal wissen, wie sich das Material auf die dahinter liegenden Objekte auswirkt. Und nicht nur das, es muss auch wissen ob das Bild verzerrt werden muss, wie viel Licht durch die Oberfläche dringen kann oder wie der Schatten aussehen soll, den das Objekt wirft. Einige dieser Probleme lassen sich durch den Einsatz von intelligente Rendering-Methoden, die kostengünstige Lösungen für schwierige Berechnungsprobleme bieten, lösen, dafür müssen dann aber manchmal kleine Fehler zugunsten der Leistung in Kauf genommen werden.

    Im Folgenden findet ihr zwei Glas-Materialien als Beispiele.

    2 Glas Material 1

    Material: Master Glass 1 - Details Material: Master Glass 1

    Mit diesen Einstellungen und einer beliebigen Roughness Textur für kleinere Unebenheiten auf der Glasoberfläche könnt ihr bereits erstaunliche Effekte erzielen. Die rote Node ist zu finden unter "Texture Coordinate".

    Die "Magie" des Glases verbirgt sich hier insbesondere in der Einstellung der Blend Mode "Translucent" (anstelle von "Opaque"), sowie der Fresnel Node (NICHT der Fresnel Function! - diese betrachten wir später).

    Der Begriff "Fresnel" aus der Fresnel Node beschreibt, dass das Licht, das du siehst, je nach Betrachtungswinkel unterschiedlich stark reflektiert wird. Wenn du zum Beispiel über einem Schwimmbecken stehst und geradeaus auf das Becken schaust, siehst du nicht viele Reflexionen im Wasser. Wenn du deinen Kopf so bewegst, dass das Wasser im Becken immer mehr parallel zu deiner Augenhöhe verläuft, wirst du mehr und mehr Reflexionen im Wasser wahrnehmen.


    Beispiel: (unterschiedliche Blickwinkel und Hintergründe)

    Material: Master Glass 1 - Showcase 1 Material: Master Glass 1 - Showcase 2


    3 Glas Material 2

    Das obioge Beispiel sieht schon sehr gut aus. Aber... in der Welt von Conan wird es sicherlich eher selten gewesen sein, dass das Glas so "makellos" ist. Daher brauchen wir Glaseinschlüsse.

    Material: Master Glass 2 - Details Material: Master Glass 2
    1. Erstelle ein neues Material.
    2. Öffne den Material Editor für das neue Material, wähle den main node aus und gehe in den "Details" Bereich.
    3. Der erste Parameter, den wir ändern wollen, ist der Blend Mode, der als zweites Drop Down in der Kategorie "Material" im Detailfenster geändert werden kann. Wähle "Translucent" anstelle der Standardoption "Opaque".
    4. Scrolle nach unten zum Abschnitt "Translucency". Es gibt zwei Parameter, die wir die wir hier ändern wollen: Aktiviere das Kontrollkästchen neben "Screen Space Reflection", ändere den Beleuchtungsmodus (engl. Lightning Mode) in "Surface Translucency Volume ".
    5. Suche in der Kategorie "Usage" nach dem Kästchen neben "Used with Static Lightning". Dieses Kästchen solltest du unbedingt ankreuzen, denn das ist die Art der Beleuchtung, die wir verwenden werden. Klicke auch "Used with Instanced Static Meshes" an um Kompatibilität zu "Amunets Deco Collector" herzustellen. Die anderen beiden Kästchen ... hatten bestimmt auch einen guten Grund, warum sie angehakt sind, aber ich weiß nicht mehr warum... :saint:

    Nachdem wir all diese Änderungen im Material main node implementiert haben, hat dies die Art und Weise geändert, wie die Oberfläche unseres Materials auf das Licht reagiert reagiert und wie sie mit anderen Dingen umgeht, z. B. mit Transparenz, Reflexionen oder die Berechnung der Tiefenschärfe.

    Als Nächstes steht die eigentliche Erstellung der Materiallogik an.

    1. Erstelle einen Vector-Parameter (Constant3Vector -> umgewandelt zu einem Parameter), mit dem wir den "Base Color"-Knoten der main node füttern. Dies wird die Hauptfarbe des Glases sein. Im Beispiel habe ich diesem einen rot-bräunlichen dunklen Farbton gegeben und den Parameter "color" genannt.
    2. Optional: Wirf einen Skalar-Parameter (constant) in den Mix, gib ihm einen Wert von 0,9 und verbinde ihn mit dem Metallic-Knoten des Materials. Auch wenn die Zuweisung eines Metallic-Wertes in einem Glas-Material etwas fragwürdig ist, wird das endgültige Bild dadurch dennoch etwas lebendiger und kommt der Realität näher. Ich habe mich in meinem Material aber dagegen entschieden.
    3. So weit, so gut! Der nächste Teil, den wir machen werden, ist der Teil, der interessant wird. Da wir es mit Glas zu tun haben, müssen wir uns auch mit Reflexionen, der Brechung des Lichts und die Opazität des Materials selbst beschäftrigen. Alle diese Faktoren sind abhängig von der Betrachtungsweise - die Reflexionen auf dem Glas sind am auffälligsten, wenn unser Blick parallel zur Oberfläche des Objekts ist. In diesem Fall müssen wir die Fresnel-Funktion aufrufen, um die Aufgabe zu erledigen. Hier kommt dann tatsächlich die "Fresnel Function" ins Spiel (NICHT die Fresnel Node aus dem Beispiel zuvor). Klicke mit der rechten Maustaste in den Graph-Editor (siehe Material Editor) und beginne mit der Eingabe von "Fresnel". Wähle "Fresnel_Function" (besonders wenn du deine eigenen Meshes verwendest). Die Function ist zwar etwas komplizierter einzurichten als der einfache Knoten, aber er gibt dir auch mehr Kontrolle über die verschiedenen Parameter, die sie enthält.
    4. Füge einen Skalar-Parameter (-> constant, umgewandelt zu einem Parameter) direkt vor die "Fresnel_Function" ein und nenne ihn "Power", da das der Eingangspin ist, mit dem wir ihn in der neu erstellten Funktion verbinden werden. Gib ihm einen Wert von 3. Nicht wundern, in meinem Beispiel ist die "Fresnel_Function" ins lokale Mod-Verzeichnis kopiert worden und hat daher das Kürzel "SvS" voran. Dies ändert aber nichts an der Funktionsweise.

    Mit den beiden vorherigen Knotenpunkten können wir das Aussehen des Materials in die drei erwähnten Kategorien teilen:

    • die Reflexion (engl. Reflection)
    • die Brechung (engl. Refraction)
    • und die Deckkraft (engl. Opacity).

    Wir verwenden die vorherige "Fresnel-Funktion", um die die lineare Interpolation von zwei Werten in diesen Kategorien zu steuern, also erstellen wir sechs skalare Parameter (-> constant, umgewandelt zu einem Parameter) erstellen, zwei pro Kategorie.

    1. Füge zwei skalare Parameter hinzu, um die Reflexionen zu steuern und benenne sie z. B. "Reflexion Front" (vordere Reflextion) und "Reflexion Side" (seitliche Reflextion). Danach erstellst du einen "Lerp"-Knoten und verbindest jeden Parameter mit den Pins A und B (A für die vordere Reflexion, B für die andere).
    2. Wiederhole den Vorgang wie zuvor und erstelle zwei weitere skalare Parameter und den Lerp-Knoten, aber gib ihnen Namen wie "Opacity Front" (Deckkraft vorne) und "Opacity Side" (Deckkraft Seite). Wie man im Beispiel sieht, habe ich die Parameter einfach per copy & paste erstellt und beim "Side" das _1 nicht wegeditiert.
    3. Wiederhole die gleiche Sequenz ein drittes Mal und benenne die neuen Parameter "Refraction Front" und "Refraction Side", und führe noch einmal einen Lerp zwischen ihnen durch.

    Insgesamt sollten wir drei Sätze von zwei skalaren Parametern haben, mit den entsprechenden Lerp-Knoten hinter jedem Satz, wie du im obigen Screenshot sehen kannst. Unter Übrigens, der Grund, warum ich sie "Reflection Front" statt "Front Reflection" genannt habem, ist die leichtere Lesbarkeit, sobald man daraus eine Material Instance erstellt.


    Du musst nicht nur die Parameter erstellen, sondern ihnen auch Werte geben! Zwar können wir sie interaktiv ändern sobald wir eine Materialinstanz erstellen. Aber nimm die folgenden Werte als Start-Werte, die ganz gut funktionieren:

    • 0,05 für Reflexion Front
    • 1 für Reflexion Side
    • 0,05 für Opacity Front
    • 0,2 für Opacity Side
    • 1.2 für Refraction Front (im Beispiel habe ich 0.9 verwendet)
    • 0,8 für Refraction Side (im Beispiel habe ich 0.5 verwendet)

    Verbinde den Ergebnis-Ausgangsknoten der Fresnel_Funktion mit dem Alpha der letzten drei Lerp-Knoten, die wir erstellt haben. Verbinde den Ausgangspin des Lerp-Knotens mit den Eingangspins für Roughness und Refraction des Material main nodes.


    Fügen wir nun noch die Glas-Einschlüsse dazu!

    1. Erstelle eine Texture Sample-Node in der Nähe der skalaren Parameter, die wir für die Opacity nutzen. Weise der Node eine Textur im Detail Fenster zu, die diese Glaseinschlüsse beschreibt. Ich habe hier, wie man sieht, einfach die Roughness Mask vom Glass 1 wiederverwertet.
    2. Erstelle einen weiteren skalaren Parameter und nenne ihn "Opacity Rim" oder etwas Ähnliches (in meinem Beispiel war es "Tiling"). Gib ihm einen Wert von 1.
    3. Erstelle eine TextureCoordinate-Node sowie eine Multiply-Node. Verbinde nun die beiden skalaren Parameter mit den Eingängen A und B der Multiply Node und verbinde den Ausgang der Multiply Node mit dem Eingang der Texture Mask.
    4. Mit Hilfe eines weiteren Lerp-Knotens und eines skalaren Parameters namens "Opacity Max" kannst du nun den Ausgang ersten Lerp-Knotens im Opacity Bereich mit diesem Lerp-Knoten verbinden. Der Ausgang wird dann in den Eingang "Opacity" des Material main nodes.

    Wenn du dann alles richtig gemacht hast (und meine Beschreibung hier nicht zu verwirrend war), sollte dein Material nun wie oben abgebildet aussehen.

    An einem Beispiel sieht es dann etwa so aus (abhängig von dem gewählten Betrachtungswinkel und der Roughness-Mask, die die Einschlüsse beschreibt):

    Material: Master Glass 2 - Showcase 1 Material: Master Glass 2 - Showcase 2

    4 Tutorials

    Create Realistic Glass Material for ArchViz in Unreal Engine 4: https://vrayschool.com/ue4-archviz-glass-material/
    Video: UE4 ArchViz Glass Material:

    External Content youtu.be
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    Video: Unreal Engine 4 - Solid Reflective Glass Tutorial:
    External Content youtu.be
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    Video: UE4 Tutorial Glass (Request):
    External Content youtu.be
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    Guide: Fresnel Node: https://docs.unrealengine.com/…/Materials/HowTo/Fresnel/

    4.1 Quelle

    Unreal Engine 4 Shaders and Effects Cookbook - Brais Brenlla Ramos and John P. Doran, 1. Auflage May 2019, Packt Publishing Ltd., http://www.packtpub.com