Zum Inhalt springen
FSMW

GIANTS Editor und LS25

LS25-Texturen im GIANTS Editor: von der ARM-Textur zur Spekular-Karte

LS25 packt Glanz, Ambient Occlusion und Metallic in eine einzige Spekular-DDS-Textur (R Glanz, G AO, B Metallic, A 255), statt Roughness und Metallic als eigene Dateien zu laden.

Version
GIANTS Editor 10.0.13 (LS25 ab Patch 1.20.0)
Werkzeug
GIANTS Texture Tool, tools/textureTool.exe im Editor-Ordner
Kanäle Spekular
R Glanz, G Ambient Occlusion, B Metallic, A fix 255
Dauer
rund 30 Minuten je Texturset

Warum LS25 eine Spekular-Karte will und keine Roughness-Textur

Für den Landwirtschafts-Simulator 25 gilt bei Texturen eine andere Logik als in den meisten modernen Spiele-Engines. Wer aus Blender, Unity oder Unreal kommt, bringt fast immer ein PBR-Set aus Diffuse, Normal, Roughness, Metallic und AO mit, oft schon zu ORM gepackt. So ein Set steckt auch in unseren Texturpaketen: _diff, _nor_gl, _rough, _ao, _disp und _arm als gepackte Karte (R AO, G Roughness, B Metallic). Wer das unverändert ins Placeable im GIANTS Editor zieht, bekommt keine Fehlermeldung, aber ein Modell, das im Spiel matt, falsch beleuchtet oder komplett schwarz aussieht.

Der Grund liegt in der GIANTS Engine selbst. LS25 liest für PBR-Materialien keine getrennte Roughness- oder Metallic-Textur, sondern eine einzige Spekular-Karte, in der drei völlig verschiedene Werte in den Farbkanälen einer RGBA-Textur stecken. Wie diese Kanäle belegt sind, haben wir nicht aus einem Tutorial übernommen, sondern am 05.09.2026 selbst an der Basisspiel-Datei default_specular.dds gemessen: Die Werte lagen bei RGBA 0/255/0/255. Ein Metallic-Wert von 0, eine AO von 255 (voll beleuchtet) und ein Glanzwert von 0 – für eine neutrale Standardoberfläche genau das, was man erwartet.

Seit diesem Test rechnet unser Build-Skript die Spekular-Karte für unsere 3D-Modelle automatisch aus der gepackten ORM-Karte. Unsere Texturpakete liefern dagegen die ARM-Karte und keine fertige Spekular-DDS, weil sie auch in Blender, Unity oder Unreal funktionieren sollen. Die Umrechnung für den LS25 machst du mit dieser Anleitung selbst, mit derselben Formel, die in unseren Modellen im Spiel läuft.

Die kurze Antwort: fast immer steckt die Ursache im grünen Kanal der Spekular-Textur, der in GIANTS für Ambient Occlusion steht. Mehr dazu weiter unten, samt der Umrechnung, mit der wir das bei uns behoben haben.

Die vier Kanäle der GIANTS-Spekular-Textur

Kanal Inhalt Bedeutung
R Glanz / Smoothness 255 = Hochglanz, 0 = komplett matt. Entspricht 255 minus Roughness
G Ambient Occlusion hell (255) = voll beleuchtet, dunkel = verschattet
B Metallic 255 = Metall, 0 = nichtmetallisches Material
A fix 255 im Basisspiel auf 255, so setzen wir es auch

Das ist der Punkt, an dem viele Modder aus anderen Engines stolpern: Roughness und Glanz sind zueinander invertiert, und AO landet nicht im Alpha-, sondern im grünen Kanal. Wer eine fertige ORM-Textur (R AO, G Rough, B Metal) einfach als Spekular-Karte umbenennt, vertauscht dadurch Glanz und AO und hebt die Invertierung nicht auf.

Unser erster Versuch ist schiefgegangen

Bevor wir die Kanalbelegung gemessen hatten, folgten wir einem älteren Rezept, das RGB als Spekular-Farbe (bei uns ungefähr 0,04 für nichtmetallische Materialien) und Alpha als Glanzwert vorschlug. Damit landete in unserem G-Kanal ein Wert um 30. Im Spiel bedeutete das: Ambient Occlusion nahe Schwarz, und unsere Testobjekte standen beim ersten Ingame-Test am 05.09.2026 fast komplett schwarz da, egal wie hell die Szene beleuchtet war. Seit wir auf die gemessene Kanalbelegung umgestellt haben, steht das Objekt korrekt im Licht.

Unsere Umrechnung: von ARM zur GIANTS-Spekular-Karte

Unsere Texturpakete liefern die ARM-Karte immer im ORM-Format: R = Ambient Occlusion, G = Roughness, B = Metallic. Für die GIANTS-Spekular-Karte gilt folgende Zuordnung:

ARM-Quelle Rechenschritt Ziel-Kanal Spekular
G (Roughness) 255 − Wert R (Glanz)
R (Ambient Occlusion) unverändert G (AO)
B (Metallic) unverändert B (Metallic)
– fest auf 255 A

Als Formel: R_spec = 255 − G_arm, G_spec = R_arm, B_spec = B_arm, A = 255.

Kanal-Umrechnung von ARM (R AO, G Roughness, B Metallic) in GIANTS-Spekular (R Glanz, G AO, B Metallic, A 255)KI-generiert
Kanal-Umrechnung von ARM (R AO, G Roughness, B Metallic) in GIANTS-Spekular (R Glanz, G AO, B Metallic, A 255) KI-generierte Darstellung, die echte Oberfläche kann abweichen.

Das lässt sich in wenigen Zeilen Python mit Pillow umsetzen, ohne zusätzliche Werkzeuge:

from PIL import Image

arm = Image.open("FSMW_texture_arm_4k.jpg").convert("RGB")
r_arm, g_arm, b_arm = arm.split()  # R = AO, G = Roughness, B = Metallic

glanz = g_arm.point(lambda p: 255 - p)      # R_spec = 255 - Roughness
ao = r_arm                                   # G_spec = AO
metallic = b_arm                             # B_spec = Metallic
alpha = Image.new("L", arm.size, 255)        # A = 255

specular = Image.merge("RGBA", (glanz, ao, metallic, alpha))
specular.save("texture_specular.png")

Das PNG aus diesem Skript ist die Vorlage für das GIANTS Texture Tool, das daraus die fertige _specular.dds erzeugt. Mehr zu ARM- und ORM-Karten allgemein, auch für andere Engines, steht in unserer Anleitung zu ORM- und ARM-Karten.

DDS-Formate je Karte

GIANTS lädt keine PNG- oder JPG-Dateien direkt, sondern komprimierte DDS-Texturen. Jede Kartenart braucht ein eigenes Format, sonst wirken Normal Maps blockig oder Diffuse-Texturen unnötig groß:

Karte DDS-Format Farbraum Mipmaps
Diffuse BC1 sRGB maximal
Normal (_nor_gl) BC5 linear maximal, normalisiert
Spekular BC3 linear maximal

BC1 reicht für Diffuse-Texturen, weil hier kein zusätzlicher Alpha-Kanal mit hoher Präzision nötig ist. BC5 speichert bei Normal Maps nur zwei Kanäle (X und Y) mit hoher Genauigkeit, was Bänderbildung vermeidet. BC3 behält bei der Spekular-Karte den Alpha-Kanal, den wir wie das Basisspiel auf 255 setzen.

Der Unterschied zeigt sich im Grafikspeicher: Eine 4K-Textur belegt unkomprimiert mit vier Kanälen 4096 × 4096 × 4 Byte, also 64 MB. Als BC1 ist es ein Achtel davon (8 MB), als BC3 oder BC5 ein Viertel (16 MB), jeweils plus rund ein Drittel für die Mipmaps. Bei drei Karten je Material summiert sich das schnell.

Kommandozeile mit dem Aufruf des GIANTS Texture Tool, daneben die erzeugte DDS-DateiKI-generiert
Kommandozeile mit dem Aufruf des GIANTS Texture Tool, daneben die erzeugte DDS-Datei KI-generierte Darstellung, die echte Oberfläche kann abweichen.

Das GIANTS Texture Tool

Das Konvertierungswerkzeug gehört zum GIANTS Editor: Bei Version 10.0.13 findest du es unter tools/textureTool.exe im Installationsordner des Editors. Im GIANTS-Forum wird für PNG-zu-DDS-Konvertierungen ausdrücklich auf dieses Tool verwiesen, wenn Texturen im falschen Format vorliegen.

Wir rufen es bei uns über die Kommandozeile auf, statt jede Textur einzeln per Dialog zu exportieren. Ein Aufruf für die Diffuse-Karte sieht bei uns so aus:

tools\textureTool.exe -inputs FSMW_cracked_concrete_01_diff_4k.jpg -targetFile FSMW_cracked_concrete_01_diffuse.dds -arch dds -format bc1 -colorSpace srgb -numMipmaps max

Für die Normal Map ändern sich Format und Farbraum, dazu kommen zwei Schalter für Normal Maps:

tools\textureTool.exe -inputs FSMW_cracked_concrete_01_nor_gl_4k.png -targetFile FSMW_cracked_concrete_01_normal.dds -arch dds -format bc5 -colorSpace linear -numMipmaps max -normalMapFormat rgb -normalizeMipmaps true

Und für die selbst gerechnete Spekular-Karte:

tools\textureTool.exe -inputs texture_specular.png -targetFile FSMW_cracked_concrete_01_specular.dds -arch dds -format bc3 -colorSpace linear -numMipmaps max

Alle drei Aufrufe lassen sich in ein Batch-Skript packen, das ein ganzes Texturset in einem Durchgang durchkonvertiert.

Normal Maps bleiben unverändert

Anders als Diffuse und Spekular braucht die Normal Map keine Umrechnung. GIANTS nutzt die OpenGL-Konvention für Normal Maps, bei der der grüne Kanal nach oben zeigt. Unsere _nor_gl-Dateien liegen bereits in dieser Konvention vor und gehen unverändert ins Texture Tool. Wer stattdessen eine DirectX-Normal-Map (grüner Kanal invertiert) aus einem anderen Workflow übernimmt, muss vorher genau diesen einen Kanal umkehren, sonst wirken Beulen und Vertiefungen im Spiel seitenverkehrt. Details zur OpenGL/DirectX-Umrechnung für andere 3D-Programme stehen in unserer Anleitung zu Normal Maps.

Vergleich: Normal Map in OpenGL-Konvention zeigt Beulen korrekt, unkonvertierte DirectX-Normal-Map zeigt sie seitenverkehrt.KI-generiert
Vergleich: Normal Map in OpenGL-Konvention zeigt Beulen korrekt, unkonvertierte DirectX-Normal-Map zeigt sie seitenverkehrt. KI-generierte Darstellung, die echte Oberfläche kann abweichen.

Material im GIANTS Editor zuweisen

Im i3d hängen die drei DDS-Dateien am Material der Shape. So schreibt es unser eigenes Build-Skript für unsere 3D-Modelle, und so kannst du es in jeder i3d-Datei mit einem Texteditor nachprüfen:

<Files>
  <File fileId="1" filename="FSMW_cracked_concrete_01_diffuse.dds"/>
  <File fileId="2" filename="FSMW_cracked_concrete_01_normal.dds"/>
  <File fileId="3" filename="FSMW_cracked_concrete_01_specular.dds"/>
  <File fileId="4" filename="$data/shaders/placeableShader.xml"/>
</Files>
<Materials>
  <Material name="concreteMat" materialId="1" customShaderId="4">
    <Texture fileId="1"/>
    <Normalmap fileId="2"/>
    <Glossmap fileId="3"/>
  </Material>
</Materials>
i3d-Eintrag Datei Inhalt
Texture _diffuse.dds Farbe
Normalmap _normal.dds Oberflächenrelief
Glossmap _specular.dds Glanz, AO und Metallic

Die Spekular-Karte heißt im i3d also Glossmap. Wer das weiß, findet sie auch in fremden Mods auf Anhieb.

Schritt 1: Shape auswählen

Öffne dein i3d im GIANTS Editor und wähle das Objekt im Scenegraph-Panel aus (Menü Window, Eintrag Scenegraph, falls das Panel nicht sichtbar ist).

Schritt 2: Material prüfen

Öffne über Window das Attributes-Panel. Es zeigt die Eigenschaften der ausgewählten Shape. Prüfe dort oder direkt im i3d, ob das Material die drei Dateien in den richtigen Einträgen trägt: Diffuse unter Texture, Normal unter Normalmap, Spekular unter Glossmap. Laut GIANTS-Dokumentation markiert der Editor ein Attributfeld rot, sobald darin ein ungültiger Wert steht.

Material-Block einer i3d-Datei mit den Einträgen Texture, Normalmap und GlossmapKI-generiert
Material-Block einer i3d-Datei mit den Einträgen Texture, Normalmap und Glossmap KI-generierte Darstellung, die echte Oberfläche kann abweichen.

Schritt 3: Speichern und im Spiel ansehen

Speichere das i3d und sieh dir das Objekt im Spiel an. Stimmen Glanz und Verschattung nicht, liegt es fast immer an der Kanal-Umrechnung oder an vertauschten Einträgen. Eine Normal Map unter Glossmap erzeugt beim Speichern keinen Fehler, nur ein merkwürdig schattiertes Modell.

Kachelmaß und UV

Jede unserer Texturen ist auf eine feste Kantenlänge in Metern kalibriert, damit sie ohne Umrechnen auf ein 1:1-UV passt:

Textur Kachelmaß
Cracked Concrete 01 1 × 1 m
Oak Planks 01 1,2 × 1,2 m
Rusty Corrugated Metal 01 0,988 × 0,988 m
Cobblestone 01 1,5 × 1,5 m
Corrugated Metal 01 0,684 × 0,684 m

Legst du im GIANTS Editor oder in deinem 3D-Programm eine Fläche mit einer Kantenlänge an, die einem Vielfachen dieser Maße entspricht, und setzt die UV-Koordinaten entsprechend, kachelt die Textur ohne sichtbaren Versatz. Ein Beispiel mit dem passenden Kachelmaß ist unsere Cracked Concrete 01.

Bei einer Wandfläche von 4 × 3 Metern und einer Kachel von 1 × 1 Meter setzt du die UV-Koordinaten also auf vier Wiederholungen in der Breite und drei in der Höhe. Rechnest du stattdessen mit krummen Werten oder einer falschen Kachelgröße, verschiebt sich das Muster an den Kanten sichtbar, selbst wenn Diffuse-, Normal- und Spekular-Textur technisch korrekt konvertiert sind. Das Kachelmaß gehört deshalb schon in die Planung der UV-Koordinaten, nicht erst in den letzten Schritt vor dem Speichern.

Jede unserer Texturen liefern wir in drei Auflösungsstufen: 2K (2048 Pixel), 4K (4096 Pixel) und 8K (8192 Pixel), jeweils mit denselben sechs Karten (Diffuse, Normal, Roughness, Ambient Occlusion, Displacement, ARM). Für die GIANTS-Spekular-Karte reicht in der Regel die 4K-Version der ARM-Datei, außer bei sehr großformatigen Flächen wie Hallenwänden, wo sich 8K noch sichtbar auszahlt.

Häufige Fehler

Problem Ursache Lösung
Objekt im Spiel fast schwarz AO-Wert im grünen Spekular-Kanal liegt nahe 0 ARM-Kanäle korrekt zuordnen: G_spec = R_arm, nicht die Diffuse-Farbe als Spekular-RGB verwenden
Objekt wirkt zu glänzend oder zu stumpf Roughness wurde nicht invertiert Formel R_spec = 255 − G_arm prüfen, Roughness nicht direkt in den Glanz-Kanal kopieren
Beulen und Vertiefungen wirken seitenverkehrt Normal Map liegt in DirectX- statt OpenGL-Konvention vor Nur _nor_gl verwenden oder den grünen Kanal einer DirectX-Normal-Map vor der Konvertierung invertieren
Textur wirkt aus der Distanz unscharf oder flimmert Mipmaps beim Texture-Tool-Aufruf nicht auf maximal gesetzt -numMipmaps max bei jedem der drei Texture-Tool-Aufrufe setzen

Wie du GIANTS Editor und Texture Tool überhaupt installierst, steht in unserer Einstiegsanleitung zum GIANTS Editor.

Häufige Fragen

Warum reicht in LS25 keine Roughness- und Metallic-Textur wie in Blender oder Unity?

LS25 läuft auf der GIANTS Engine, die Glanz, Ambient Occlusion und Metallic in einer einzigen RGBA-Spekular-Textur zusammenfasst, statt getrennte Roughness- und Metallic-Karten zu laden.

Welches DDS-Format braucht die Spekular-Textur?

BC3 im linearen Farbraum, mit der maximalen Anzahl an Mipmaps.

Wie rechne ich eine ARM-Textur in die GIANTS-Spekular-Karte um?

Der Roughness-Wert aus dem grünen ARM-Kanal wird invertiert und wandert in den roten Spekular-Kanal, der AO-Wert aus dem roten ARM-Kanal wandert in den grünen, der blaue Metallic-Kanal bleibt blau, Alpha wird auf 255 gesetzt.

Wo finde ich das GIANTS Texture Tool?

Es liegt im Installationsordner des GIANTS Editors unter tools/textureTool.exe und lässt sich auch über die Kommandozeile aufrufen.

Warum steht mein Modell fast schwarz im Spiel, obwohl die Diffuse-Textur stimmt?

Meist liegt der AO-Wert im grünen Kanal der Spekular-Textur zu nah bei 0. Sobald die Umrechnung von ARM zu Spekular korrekt läuft, verschwindet der Effekt.