Cubemaps aus Portal-Leveln erstellen (und anderen Source-Spielen)

Ein ganz kurzes Intro: Für das Rendering von reflektierenden Oberflächen braucht man eine Cubemap, was im Wesentlichen 6 Bilder in alle sechs Richtungen sind. Davon gibt es haufenweise welche im Netz, aber man kann auch selber welche aus seinem Lieblingsspiel extrahieren, wenn man unbedingt will. In unserem Fall für ein Uni-Projekt, da schreibe ich hoffentlich auch noch mal was zu.

Ich habe das in Portal getestet, grundsätzlich sollte das aber in allen Source-Spielen funktionieren. Ich gehe mal davon aus, das man grundsätzlich mit der Konsole umgehen kann. Die Grundidee ist, sich per Konsole in alle sechs Richtungen zu drehen, und dann immer einen Screenshot zu machen. Zunächst muss das Spiel in der passenden Auflösung gestartet werden, dazu in Steam unter Eigenschaften diese Startoptionen angeben:


-windowed -width 1024 -height 1024

Danach startet das Spiel in einem quadratischen Fenster, was ein wenig seltsam aussieht. Jetzt zur gewünschten Stelle navigieren, noclip kann helfen. Nun geht es los:


sv_cheats 1

cl_drawhud 0

fov 90

fov_desired 90

setang 0 0

setang 90 0

setang -90 0

setang 0 90

setang 0 180

setang 0 270

Nach jedem setang die Konsole kurz zu machen, und einen Screenshot machen (F5), fertig ist die Cubemap 😉 Das sieht dann in etwa so aus:

Es gibt auch noch eine „offizielle“ Variante, Cubemaps zu erstellen, und zwar solche, die Source dann auch selber wieder laden kann. Dazu gibt es den Befehl envmap, wobei, wenn man das wie wir als Skybox benutzen will, vermutlich erst die Auflösung mit mat_envmaptgasize 512 einstellen will. Mehr als 512 geht da aber leider nicht. Das ganze erzeugt dann *.pfm-Dateien, die man mit Imagemagic konvertieren kann, die aber noch eine Gammakorrektur brauchen. Zudem scheint Portal 2 dabei immer zu crashen. Die Variante oben ist da einfacher. Leider kommt man damit nicht über die Auflösung seines Monitors, größer mag Source leider nicht rendern…

Ok, diese Beschreibung war jetzt ein wenig skizzenhaft 😛 Bei Fragen einfach fragen, dafür sind die Kommentare ja da 😉 Es könnte übrigens helfen HDR auszuschalten, ich weiß nicht, ob das Probleme macht, wenn sich die Belichtung ändert und das ganze dann nicht mehr randlos ist. Und natürlich noch der wichtigste Tipp zum Schluss: Um einen Cube zum Companion-Cube zu machen, gibt es ent_fire !picker skin 1. Dabei muss man den Cube anvisieren. (Na, wer hat es im Screenshot oben gemerkt?)

[Update] Aus irgendwelchen Gründen reicht es nicht, fov zu benutzen, man muss auch noch fov_desired benutzen, ansonsten wird das FOV nur ein bisschen größer, aber nicht komplett 90°. Ich habe es oben angepasst, die Bilder sind aber noch die alten, kaputten, falsch sich jemand wundert…

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert