• Texturen sind Bestandteile eines Materials.

    1 Textur

    Texture Lod Bias (rot) und Option für Invertierung der Normal Map (blau)

    Texturen sind Bestandteile eines oder mehrerer Materialien und beinhalten Informationen zu Farbe, Rauheit, Erhebungen oder Vertiefungen oder anderen Material-Eigenschaften.

    1.1 Textur-Import

    Wissenswertes zum Textur-Import: https://docs.unrealengine.com/…phics/Textures/Importing/

    1.2 Häufige Probleme beim Textur Import und deren Lösungen

    Insbesondere wenn ihr Texturen von gekauften Assets aus dem Unreal Market Place importieren wollt, die ggf. auis einer höheren Version von der Unreal Engine stammen, könntet ihr auf die folgenden Probleme stoßen:

    1. Die Erhebungen/Vertiefungen der Normal-Map Texturen sind invertiert.
    2. Beim Export erscheint die Fehlermeldung ""TextureName": Texture is RGBA16 and cannot be represented at such high bit depth in .tga. Color will be scaled to RGBA8."
      Als Ergebnis ist die Normal Map statt blau nun pink, auch beim Importieren und liefert keine vernünftigen Höhen-/Tiefen-Informationen mehr.

    1.2.1 Invertierung der Normal Map Textur

    Lösung:
    Geht auf die importierte Textur und öffne sie. Gehe auf den Bereich der Textur Details (rechter Bereich) und wähle in der Sektion "Texture" die Option "Flip Green Channel" aus. Dies invertiert die Normal Map, sodass die Erhebungen und Vertiefungen wieder die richtige Orientierung haben.

    1.2.2 RGBA16 scaled to RGBA8 (pinke Normal map)

    Lösung:
    Es gibt zwei Möglichkeiten, dieses Problem zu lösen.


    1. Intern im DevKit
    2. Extern via Bildbearbeitungsprogramm

    Möglichkeit 1)


    Erstelle ein Material, in dem die "kaputte" normal map als Textur verwendet wird.

    Erstelle nun folgende Knoten:

    Normal Texture: Kanalwechsel - DevKit

    • Die Normal Map als Texture Sample
    • 2 "Static Component Mask Parameter" Knoten
    • 2 "Append" Knoten

    Verbinde die Knoten wie im Bild links.


    Die beiden "Static Compoinent Mask Parameter" Knoten sind wie folgt konfiguriert (in Details des Knotens):

    • unterer Knoten: nur B angehakt
    • oberer Knoten: nur R angehakt







    Normal Texture: Kanalwechsel - DevKit - Details der unteren Node Normal Texture: Kanalwechsel - DevKit - Details der oberen Node
















    Damit machst du folgendes:

    Mittels des "Append" Nodes erstellst du aus einem skalaren Wert einen Vector mit einer weiteren Komponente. D.h. du baust in deinem Vector erst die Farbkanäle für Blau und Grün zusammen, wobei zuerst Blau, dann Grün in einem Vector zusammen gefasst werden.

    Danach fügst du den roten Farbkanal hinzu, fügst diesen aber zum Schluss an, sodass dein Vector nun B(lau),G(rün),R(ot) lautet, und nicht mehr wie ursprünglich R(rot),G(rün),B(lau).

    Du hast also die Farbkanäle Rot und Blau vertauscht.


    Möglichkeit 2)


    Du kannst ein externes Bildbearbeitungsprogramm benutzen, z.B. das kostenlose GIMP. Lade das Programm herunter und installiere es.
    Starte GIMP nun und lade die entsprechende "kaputte" normal map. Gehe dann im Menü auf "Farben" -> "Komponenten" -> "Kanalmixer".
    Das sieht dann z.B. so aus:

    Normal Texture: Kanalwechsel - Gimp - 01 Klicke nun im Abschnitt Roter Kanal auf "Rot-nach-Rot-Kanal" und setze den Wert von 1auf 0, setze den Wert "Blau-nach-Rot-Kanal" von 0 auf 1.

    Gehe nun in den Abschnitt Blauer Kanal und ändere den Wert "Rot-nach-Blau-Kanal" von 0 auf 1, den Wert "Blau-nach-Blau-Kanal" von 1 auf 0.












    Hast du alles Richtig gemacht, sollte das ganze so aussehen:

    Normal Texture: Kanalwechsel - Gimp - 02














    Um ein DevKit lesbares Format zu erzeugen, musst du das Bild nun aus GIMP exportieren und kannst es dann endlich ins DevKit importieren.

    1.3 Textur-Optimierung

    Je hochauflösender deine Texturen sind, desto mehr Platz nehmen sie ein. So braucht z.B. eine 2k Textur schon bis zu 5 MB Platz, eine 4k Textur um die 10 MB. Hast du nun ein Material, das aus 3 oder mehr Texturen besteht und hat dein Mesh mehrere Texturen, kannst du dir recht schnell ausrechnen, dass du sehr schnell sehr viel Platz für vielleicht nur einen einzigen Gegenstand benötigst.

    Du kannst zwar beim Kochen die Mod komprimieren, aber es gibt einen Trick, mit dem du noch einmal zusätzlich Platz gewinnen kannst und deine Texturen schrumpfst.


    Als erstes überlege dir, wie groß ist der dargestellte Gegenstand tatsächlich zu sehen. Ist dies vielleicht nur ein Ring, den man vermutlich nur als kleines Detail sehen wird, oder ist es ein sehr großer Gegenstand, der Monitor-füllend betrachjtet wird? Je nachdem brauchst du vermutlich gar keine 2k, 4k oder 8k Texturen, vielleicht nicht einmal eine Textur mit der Auflösung 1024x1024 (1k).

    Natürlich kannst du die Texturen mit einem Bildbearbeitungsprogramm skalieren, es geht aber auch einfacher - wenn auch nicht ganz "Verlustfrei" (in Bezug auf die Bildqualität).

    Jede Textur hat, wenn du sie öffnest, ein Feld für den "LOD Bias" (siehe erstes Bild auf dieser Wiki Seite rechts im roten Kästchen). Mit diesem Wert gibst du einen Teiler an, mit der die aktuelle Auflösung durch 2 geteilt wird.
    Beispiel:

    Deine Textur hat 4k.

    LOD Bias = 1 -> die 4k Textur wird durch 2 geteilt -> deine Textur ist nur noch 2k groß.

    LOD Bias = 2 -> die 4k Textur wird durch 2*2 geteilt -> deine Textur ist nur noch 1k groß

    LOD Bias = 3 -> die 4k Textur wird durch 2*2*2 geteilt -> deine Textur ist nur noch 512x512 groß


    Im oberen roten Kästchen siehst du in der zweiten Zeile den entsprechenden Wert, auf den du mit Hilfe des LOD Bias die Textur schon herunter skaliert hast. Darunter befindet sich dann der Wert für die kompilierte Größe der Textur.
    Es ist zwar Arbeit, dies für JEDE Textur anzupassen, hilft aber enorm, die Mod zu komprimieren, sofern du viele Texturen verwendest.