Detailtexturen

Seit es Steam gibt, kann man Detailtexturen in Half-Life benutzen. Detailtexturen verleihen den normalen Texturen eines Levels zusätzliche Struktur oder können auch eine höhere Texturauflösung faken.

Voraussetzungen

Detailtexturen sind nicht für jedermann zu haben. Es gibt einige Vorraussetzungen:

  • Steam + Half-Life
  • Eine DirectX 8 kompatible Grafikkarte mit entsprechenden Treibern
  • Eine oder mehrere Detailtexturen (unkomprimiertes TGA, 24 Bit, Graustufen, 512*512 Pixel oder kleiner)
  • Die Variable r_detailtextures muss in Half-Life via Konsole auf 1 gesetzt sein
  • Eine Map, auf die wir die Detailtexturen anwenden

Die Grafikkarte

Detailtexturen sind zwar eine an sich einfache Angelegenheit, dennoch können sie in Half-Life nicht nicht von allen Grafikkarten dargestellt werden.

Auf der sicheren Seite ist man mit einer halbwegs aktuellen Grafikkarte von ATI (z.B. einer Radeon) oder einer Nvidia der Familie Geforce TI oder besser. Wichtig ist, dass sie DirectX 8 kompatibel sind. Aktuelle Treiber sind selbstverständlich auch erforderlich.

Auch mit einer GeForce 4 mx oder älterem Gerät kann man versuchen, Detailtexturen zum Laufen zu bringen. Dazu benötigt man das Programm Riva Tuner.

In diesem Programm kann man unter OpenGL Settings den OpenGL hardware acceleration mode verstellen. Hier experimentiert man am besten ein wenig mit den angebotenen Modi. Das ganze kann am Ende Detailtexturen zum laufen bringen, muss aber nicht funktionieren und kann auch die Performance stark beeinträchtigen.

Erfahrungsgemäß bringtder Modus NV40 die besten Ergebnisse, doch ob es letztendlich funktioniert, und wenn ja, wie gut, das ist letzlich einfach Hardware-Abhängig.

Funktionieren Detailtexturen bei mir?

Das lässt sich schnell raufinden: Einfach Half-Life mit Konsole starten, einen beliebigen Level laden und versuchen r_detailtextures 1 in die Konsole einzugeben. Das Steam-Interface müsste den Befehl schon vorschlagen, wenn r_de eingegeben ist; steht in der Auswahlliste dann nur r_decals aber nicht r_detailtextures, dann sieht es für Detailtexturen auf deinem Rechner eher düster aus. Wenn es funktioniert sollten wir die Variable r_detailtextures direkt auf 1 setzen, denn das brauchen wir für weitere Schritte.

Die typische Detailtextur

Eine normale Detailtexur trägt eine bestimmte einfache Struktur (z.B. Metall oder Stein), die über normale Texturen in den Levels gelegt werden. Dadurch haben die Texturen, auch wenn man direkt vor ihnen steht, einen beachtlichen Detailgrad.

Detailtexturen sind immer Graustufenbilder, bei denen die Grundfarbe 50% Grau (RGB 128 128 128) ist. Dunklere Teile erhellen später im Spiel an dieser Stelle die Grundtextur, *helle Teile verdunkeln* hingegen.

Eine typische Detailtextur sieht in etwa so aus: (Bild)

Der technische Aspekt

Eine Dateiltexur für Half-Life muss folgende Kritieren erfüllen:

  • Sie darf höchsten 512*512 Pixel groß sein.
  • Sie muss als unkomprimiertes 24Bit-TGA vorliegenn.

Werden diese Kritieren nicht eingehalten, stürzt Half-Life ab.

Anwendung

Wenn alle Vorraussetzungen erfüllt sind, können wir uns daran machen, die Detailtextur anzuwenden.

Wohin damit?

Zunächst müssen wir die Detailtextur dort ablegen, wo Half-Life sie auch wiederfindet. Das ist das Verzeichnis gfx/detail. Existiert dieses nicht, erstellen wir es einfach. Anmerkung: Wenn die Map released wird, ist von Vorteil wenn die eigenen Detailtexturen ein eigenes Unterverzeichnis in gfx/detail bekommen, z.B. gfx/detail/cs_leetness. Das verhindert, dass sich Custom Maps gegenseitig die Detailtexturen überschreiben.

Die Definitions-Datei

Jetzt müssen wir HL verklickern, auf welche Gametextur die Detailtextur angewendet werden soll. Dazu erstellen wir im maps-Verzeichnes (genau da, wo auch die BSP der Map liegt) eine Textdatei mit dem Namen mapname_detail.txt (z.B. cs_leetness_detail.txt).

In diese Datei schreiben wir jetzt mit einem einfachen Texteditor Zeilen in folgendem Format: Gametextur Detailtextur X Y Das ganze aufgeschlüsselt bedeutet:

  • Gametextur: Der Name der Textur, auf die die Detailtextur angewendet werden soll.
  • Detailtextur: Der Name der Detailtextur ohne .tga, die verwendet werden soll.
  • X: Eine Zahl zwischen 1 und 25 (kann vermutlich auch höher sein, ist aber kaum noch sinnvoll), die beschreibt wie oft die Detailtextur auf der Gametextur wiederholt wird. Dadurch legt man die X-Skalierung/Streckung der Detailtexturen fest.
  • Y: Eine Zahl zwischen 1 und 25 (kann vermutlich auch höher sein, ist aber kaum noch sinnvoll), die beschreibt wie oft die Detailtextur auf der Gametextur wiederholt wird. Dadurch legt man die Y-Skalierung/Streckung der Detailtexturen fest.

Es folgen ein paar Beispiele für die Skalierung, deren System nicht ganz leicht zu Verstehen ist.

  • Gametextur: 256*256 Pixel
  • Detailtextur: 256*256 Pixel
  • Ziel: Die Detailtextur soll genau ein Mal pro Gametextur vorkommen
  • X/Y-Werte: 1.0 1.0
  • Gametextur: 64*64 Pixel
  • Detailtextur: 256*256 Pixel
  • Ziel: Die Detailtextur soll genau ein Mal pro Gametextur vorkommen
  • X/Y-Werte: 1.0 1.0
  • Gametextur: 512*512 Pixel
  • Detailtextur: 128*128 Pixel
  • Ziel: Die Detailtextur soll genau 4 Mal pro Gametextur vorkommen
  • X/Y-Werte: 4.0 4.0
  • Gametextur: 256*64 Pixel
  • Detailtextur: 128*128 Pixel
  • Ziel: Die Detailtextur soll pro Gametextur genau 2 Mal auf der X-Achse und ein Mal auf der Y-Achse vorkommen
  • X/Y-Werte: 2.0 0.5

Nach etwas herumprobierei ist das ganze aber zu überblicken :)

Und jetzt?

Jetzt speichern wir die Definitionsdatei, starten Half-Life, laden unsere Map und geben, falls noch nicht geschehen, r_detailtextures 1 in die Konsole ein. Detailtexturen sollten jetzt auf allen Flächen zu sehen sein, die in der Definitionsdatei eingetragen sind.

Anhang

Detailtexturen kann man zu mehr als zu einfachen Strukturgebung verwenden. LePrau hat beispielsweise eine Methode ausgetüftelt, wie man Detailtexturen zur performanceschonenden Verschönerung von Textlights einsetzen kann.

Im Tutorial farbige Detailtexturen wird eine Methode beschrieben, mit der sich mithilfe von Detailtexturen hochauflösende und farbechte Texturen in Half-Life verwenden lassen.

Die Verwendung aller Dokumente einschließlich der Abbildungen ausschließlich zu nichtkommerziellen Zwecken. Verbreitung des Dokuments auf Speichermedien, (insbesondere auf CD-ROMs als Beilage zu Zeitschriften und Magazinen oder sog. "Mission-Packs" etc.) ist untersagt.
 
half-life/tutorials/detailtexturen.txt · Zuletzt geändert: 2011/03/14 15:19 von ToTac