Material: zerbrechliches Glas

In diesem Tutorial wird beschrieben, wie ein Material erstellt werden kann, welches auf einem func_breakable_surf aufgetragen realistisch Zerspringt.

Glas im normalzustand

Zunächst wird eine Grundtextur benötigt. Als abschreckendes Beispiel wird hier dieses kotzgrüne Mosaik verwendet.
buntglas.jpg
Vielleicht weißt du schon, wie man ein Material erstellt, andernfalls gibt es hier einen Crashkurs.

Glas durchsichtig machen

Dieses Mosaik bekommt in einem Graphikprogramm (The GIMP,Photoshop), welches das erstellen von semitransparenten Bildern erlaubt, einen Alpha-Kanal. Der Alpha-Kanal gibt an, wo das Glas durchsichtig ist und wo nicht. Der Beispiel-Alpha-Kanal sieht so aus.

Damit ist die normale Glastextur schon fertig und kann vorerst als ein TGA-Bild gespeichert werden. Auf die RLE-Komprimierung sollte verzichtet werden.

Glas spiegeln lassen

Die Spiegelungen werden in der Source-Engine von specular Maps geregelt.

Dateien in VTF umwandeln

Dies geschieht am einfachsten mit VTFedit. Per File→Import die TGA auswählen, praktischer Weise mit DXT5 komprimieren und im Materials-Ordner abspeichern (der wäre beispielsweise cstrike\materials\deinname\deinglas.vtf bzw. deinglas_spec.vtf). Mit den Funktionen von VTFEdit ist es einfach zu überprüfen, ob der Alphakanal erkannt wurde.

Die VMT des Glases

Exemplarisch sieht sie so aus:

//Inhalt von "cstrike\materials\deinname\deinglas.vmt"
"LightmappedGeneric"
{
	"$basetexture" 	"deinname/deinglas"
	"$surfaceprop" 	"glass" 		//dann klimperts beim Treffer
	"$translucent" 	"1" 			//Aktiviert den Alphakanal
	"$nocull"		"1" 			//Macht die Textur von beiden Seiten sichtbar

	//Die Specular-Map lässt das Glas spiegeln
 	"$envmap" 	"env_cubemap"
	"$envmapcontrast" "1"
	"$envmapmask" 	"deinname/deinglas_spec"

	//Jetzt kommt's
	"$crackmaterial" "deinname/deinglas_break" //Dieses Material soll verwendet werden, wenn die Glassscheibe kaputt ist
}

zerbrochenes Glas

Im Grunde muss dieselbe Textur nur noch Sprünge bekommen. Die meisten besseren Graphikprogramme bieten einen Haufen Filter an, die eine zerbrochene Glasscheibe immitieren können. Ich habe es mir einfach gemacht und die Textur des Materials glass/glasswindowbreak070a mit GCFScape extrahiert, mit VTFedit exportiert und mit dem GIMP als Ebene mit „Faser vermischen“ über die normale Glastextur gelegt.
buntglas_break.jpg
Die Textur wird dann wie bei der ersten wieder als VTF gespeichert, hier als deinglas_break. Die VTF ist eine Kopie der ersten und sieht nun so aus:

//Inhalt von "cstrike\materials\deinname\deinglas_break.vmt"
"ShatteredGlass"
{
	"$basetexture"	"deinname/deinglas_break"
	"$detail"	"deinname/deinglas_break"
	"$surfaceprop"	"glass"
	"$translucent"	"1"
	"$nocull" 	"1"

 	"$envmap" 	"env_cubemap"
	"$envmapcontrast" "1"
	"$envmapmask" 	"deinname/deinglas_spec"
	
	//Der Rest kommt von Valve
	"ShatteredGlass_DX7"
	{
		"$lightmaptint" 0.1
		"$envmaptint" "[.1 .1 .1]"
	}

	"Proxies"
	{
		"BreakableSurface"
		{
		}
	}

}
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/shattered_glass.txt · Zuletzt geändert: 2009/11/22 15:16 von Adrian_Broher