eigener Photo-2D-Sky

Dieses Tutorial beschreibt, wie ein eigener 2D-Sky aus Photos für Half-Life 2 mit kostenloser Freeware erstellt werden kann. Das Ergebnis kann hochauflösend sein, hat aber keinen Boden und nur einen einfarbigen Himmel. Das Tutorial ist für fortgeschrittene.

Vorbereitungen

Benötigt wird ein beliebiger Rechner, wobei ein schnellerer Prozessor und größerer Arbeitsspeicher kürzere Wartezeiten erzeugen können. Benötigt wird Software für

  • einfache Bildkonvertierungen → Irfanview,
  • bessere Bildbearbeitung → The GIMP,
  • Photo-Stitching → autostitch,
  • Konvertierung von equirectangularen Panoramen in kubische → Pano2QTVR,

außerdem noch

  • eine Digitalkamera mit mindestens zwei Megapixeln,
  • ein Stativ,
  • ein Ort, der sich als Skyboxhintergrund eignet,
  • ein homogener Himmel,

und Wissen über das erstellen von Materials in Half-Life 2.

Photographieren

Ich gehe davon aus, dass du weißt, wie du deine Kamera auf einem Stativ benutzt. Die Umgebung muss natürlich rein optisch für eine Skybox geeignet sein. Es muss jetzt eine Photoserie erstellt werden, welche die gesamte Umgebung beinhaltet. Folgendes muss beachtet werden

  • Pano2QTVR bietet kaum Einstellungsmöglichkeiten. Die Aufnahme der Photos muss auf einer Ebene stattfinden. Die Kamera darf nicht gekippt, nur gedreht werden.
  • Das Zentrum eines jeden Bildes sollte der Horizont sein. Ist dies nicht der Fall, wirkt die Skybox verzerrt.
  • Die Bilder sollten sich für autostitch jeweils um knapp die Hälfte überlappen.
  • Kein Objekt darf nach oben aus dem Photo herausragen oder muss später wegretuschiert werden.
  • Alle Objekte, die ins Auge fallen, sollten bei einer Weitwinkelaufnahme von 17mm mindestens 500 Meter entfernt sein.

Wenn alles gut geht, entsteht eine Photoserie wie diese

Stitching

Autostitch kann jetzt die einzelnen Bilder in ein einzelnes equirectangulares Panoramabild umwandeln. In den Optionen sollten folgende Einstellungen vorgenommen werden

  • Other Options: JPEG-Qualität auf 100%, Arbeitsspeicherreservierung dem System anpassen.
  • RANSAC Parameters (Matching Options): Kleinere alpha-Werte und kleinere beta-Werte liefern bessere Ergebnisse, führen eventuell aber auch dazu, dass die Bilder nicht mehr alle als Panorama erkannt werden. Hier muss ein individuelles Optimum gefunden werden.
  • Output Size: Zum testen ungefähr mit 10% beginnen. Für das finale Bild 100%.

Mit etwas Glück sieht das Ergebnis so aus:
autostitch-output.jpg

Cropping

Das zusammengesetzte Panoramabild hat links und rechts die von der Aufnahme überlappenden Bereiche, die jetzt stören. Sie müssen abgeschnitten werden. Das kann mit dem GIMP über Zuschneiden oder mit Irfanview über die Batchkonvertierungsfunktion Freistellen bewerkstelligt werden. Die schwarzen Ränder unten können bleiben, wo sie sind. Der gesamte obere Bereich muss aber eine einheitliche Farbe bekommen. Mit dem GIMP sollte es möglich sein, der Oberkante des Bildes ein einheitliches Blau (oder grau oder welche Farbe dein Himmel hat) zu geben. Mit verminderter Deckkraft des Pinsels oder der Verblassen-Funktion kann ein weicher Übergang erzeugt werden. Ich habe diesen Schritt später gemacht. Es ist jedoch bequemer, es an dieser Stelle zu tun.
cropped-pano.jpg

Cubing

In Pano2QTVR muss jetzt ein neues Projekt erstellt werden. Pano2QTVR wird hier nicht für seinen eigentlichen Zweck genutzt. Im ersten Registerkartendialog wird die Möglichkeit angeboten, ein equirectangulares Panorama in ein Kubisches zu verwandeln. Das TIF-Format ist qualitätshalber. Dies soll jetzt geschehen. Hier kann ausgewählt werden, welche auflösung jedes der sechs Skyelemente haben soll. Soll ein hochauflösender 2D-Sky erzeugt werden, kann hier schon eine Größe 2048 Pixeln für jede Seite ausgewählt werden. Die Einstellung „Auto“ wird eine qualitativ optimale Größe auswählen. Die Bilder können später noch mit Irfanview per Batchkonvertierung umgewandelt werden. Pano2QTVR erzeugt einen kubischen Sky mit sechs Elementen: Vier für das Panorama und jeweils eines für Decke und Boden.

Post-Processing an den Cubefaces

Ein Panorama-Element enthält in seinem Zentrum die Stelle, an der die Enden des von autostitch erzeugten Panoramabildes lagen. Hier kann eine vertikale Verwerfung auftreten. Mit dem GIMP und etwas Können im Umgang mit dem Kopierstempel, Verwischen und Blur kann diese Verwerfung retuschiert werden. Wenn in Pano2QTVR die automatische Auflösung gewählt wurde und die Bilder verkleinert werden sollen, kann man sich hier kleine Fehler leisten.
cubesides.jpg
Die schwarzen Bereiche im Himmel können jetzt die vorhin verwendete Einheitshimmelfarbe bekommen. Ebenso wird die Decke des Skies mit der einheitlichen Farbe getüncht.
cubesides-withsky.jpg
In meinem Beispiel kann man noch sehen, dass ich den Himmel später einheitlich gefärbt habe, so sind diese hässlichen hellblauen Schnitte nach oben entstanden.

Bildkonvertierung für Half-Life 2

Ich gehe an dieser Stelle davon aus, dass es kein Problem darstellt, die Bilder in Environment Maps umzuwandeln.
Half-Life 2 verwendet für die Seiten des Skies nicht die Suffixe 0 bis 5 sondern FT (front), LF (left), BK (back), RT (right), UP (up) und DN (down). DN bekommt das einfarbig schwarze Bild zugewiesen, es wird der Boden sein. UP wird der Himmel mit Einheitsfarbe werden. Cubefache 0 wird zu RT, 1 zu FT, 2 → LF und **3 → BK*. Die so erzeugten VTFs werden als skyname_suffix.vtf im Ordner materials\skybox des Modverzeichnises abgelegt. Falls der Sky ein hochauflösender ist, dennoch aber in Multiplayer-Maps Anwendung finden soll, muss der nächste Hinweis befolgt werden.

spezielle VMTs mit Fallback für alte Graphikkarten

Für eine einfache Skybox reicht je eine VMT für die Cubefaces. Hier ein Beispiel

//Inhalt von "materials/skybox/skyname_suffix.vmt"
"UnlitGeneric"
{
	"$basetexture" "skybox/skyname_suffix"
	"$nofog" 1
	"$ignorez" 1
}

Damit ein hochauflösender Sky auch in Multiplayermaps zum Einsatz kommen kann, sollte sich der Mapper des Fallbacks bedienen. Ein hochauflösender Sky mit 2048er Cubefaces verballert 6*2048²*24/8000000, also 75 MB Graphikspeicher. Das ist schlecht für Besitzer einer Graphikkarte, die nur 64 MB hat. Eine noch schön anzusehende Skybox mit 1024er Cubefaces verbraucht noch vertretbare 15 MB, eine 512er nur 5 MB. Nach der ganzen Arbeit sollen aber möglichst alle Leute, die gute Graphikkarten haben, den high-quality-Sky auch bewundern können.
Der Trick ist folgender: Es werden zwei (oder drei) Cubeskies in unterschiedlichen Auflösungen abgespeichert, zum Beispiel 512, 1024 (und 2048?). Dennoch wird es nur sechs VMTs geben, die jetzt aber so aussehen:

//Inhalt von "materials/skybox/skyname_suffix.vmt"
"UnlitGeneric"
{
	"$basetexture" "skybox/skyname_suffix_512" //512er Auflösung als Anfang
	"$nofog" 1
	"$ignorez" 1

	//Erkennt Half-Life 2 eine DirectX9-Kompartible Graphikkarte, 
	//die viel Leistung und vermutlich auch viel Graphikspeicher hat, 
	//kann die high-quality-Skybox verwendet werden:
	"UnlitGeneric_dx9"
	{
	"$basetexture" "skybox/skyname_suffix_2048"
	}

	//Auch Zwischenunterscheidungen sind möglich:
	"UnlitGeneric_dx8"
	{
	"$basetexture" "skybox/skyname_suffix_1024"
	}
}

Bemerkungen

Half-Life 2 prüft nicht wirklich die DirectX-Funktionen der Graphikkarte. Valve hat intern eine Liste erstellt, sodass die optimale Performance erreicht wird.
Der Sky hat leider nur einen einfarbigen Himmel. Dieser kann natürlich mit bewegten Wolken wesentlich aufgemotzt werden.

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_2/tutorials/eigener_2d_sky.txt · Zuletzt geändert: 2008/10/05 16:30 von McScore