Treffpunkt der Zocker
 
StartseiteTS³ ServerGalerieFAQSuchenMitgliederNutzergruppenAnmeldenLogin

Teilen | 
 

 19 - Eigene Texturen

Nach unten 
AutorNachricht
Cratoz
General
avatar

Anzahl der Beiträge : 102
Deine Erreichten Punkte : 3276
Dankesgaben : 0
Anmeldedatum : 27.07.10
Alter : 25
Ort : Schönebeck

Charaktere
Skin: Alesia
Waffe: Colt commando
Heahlt Points:
100/100  (100/100)

BeitragThema: 19 - Eigene Texturen    Di 28 Sep - 13:24

Ok, also als erstes, was sind Texturen? Texturen heißen nur dieeigentlichen Bilder, für moderne Spiele werden sogenannte Materialserstellt, aber oftmals wird dazu trotzdem noch Textur gesagt. EineTextur ist also in unserem Sprachgebrauch ein (sich gegebenenfallswiederholendes) Bild, das auf Brushes geklebt wird, um der Umgebung einGesicht zu verleihen.

Vorweg ist noch zu sagen, dass ich euch nicht beibringe, wie manTexturen erstellt, sondern nur wie man sie in das Spiel exportiert.

Hinweis, alle wichtigen Version der höchauflösenden Textur könnt ihr von mir downloaden wenn nötig.

Also erst einmal zu den Grundzügen einer Textur. Wie ihr einen Brushmit einer Textur belegt wisst ihr schon, jedoch ist das Bild, egal wiegroß die Textur wird nie zu Ende. Die Textur für die Wand könnte z.B.so aussehen:



Nun wirklich groß ist sie nicht, aber sie ist kachelbar. Das heißt mankann sie immer wieder nebeneinander legen und man sieht keinenÜbergang, höchstens eine Wiederholung des Musters. Zur Erklärung hierein Bild:



In der Mitte stoßen beide aneinander, jedoch ist dort ein sanfterÜbergang und man erkennt die Kante nicht. Bei genauem hinsehen erkenntman jedoch die Wiederholung des Musters, hier links und rechtseingerahmt.


Textur für Sourcegames verwendbar machen

Nun wollen wir unsere Textur natürlich auch im Spiel verwenden.
Ich werde euch nicht erklären wie man eine kachelbare Textur erstellt,sondern nur wie man sie ins Spiel bringt. Ihr könnt hierfür entwedereure eigene Textur verwenden, oder meine. Wir werden die Textur mit denStandarttools von Valve importieren, diese benötigen das TargaBildformat.

Also erst einmal zu den Grundzügen einer Textur für die Source Engine.Die Seitenlängen der Textur müssen immer eine Potenz von 2 sein.

Es gehen also die Werte 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096.

Die Standarttexturgröße von Valve ist 512*512 ab und zu wird jedochauch 1024*1024 benutzt, prinzipiell muss man jedoch für jede Texturentscheiden wie hochauflösend sie sein muss. Meine Textur hat übrigenseine Auflösung von 1024*1024.

Um die Textur nun ins Spiel zu bringen benötigen wir 2 Dateien, eineVMT und eine VTF. Die VTF Datei steht für "Valve Texture Format", inihr werden die Bildinformationen gespeichert, die später die VMTbenutzt.
VMT steht für "Valve Material File". In ihr wird der Pfad zur Grundtextur angegeben und weitere Infos für die Engine.

Also, um anzufangen müssen wir erst einmal die Grundlagen dafür schaffen, dass alles funktionieren kann.
Wir erstellen dazu zwei Ordner, einmal unter
Code:
C:\Programme\Steam\steamapps\ACCOUNTNAME\counter-strike source\cstrike\materials
Und einmal unter

Code:
C:\Programme\Steam\steamapps\ACCOUNTNAME\sourcesdk_content\cstrike\materialsrc
Den Ordner könnt ihr nennen wie ihr wollt, jedoch empfehle icheuch, hierfür euren Namen zu verwenden, um das Ganze übersichtlich zuhalten.

Nun noch eine letzte Sache, bevor wir anfangen können. Geht in den Ordner

Code:
C:\Programme\Steam\steamapps\ACCOUNTNAME\sourcesdk\bin\ep1\bin
Und erstellt eine Verknüpfung der Vtex.exe.
Diese speichert ihr unter

Code:
C:\Programme\Steam\steamapps\ACCOUNTNAME\sourcesdk_content\cstrike\materialsrc\EUERORDNER.
Nun da wir alles vorbereitet haben, können wir anfangen. Fallsihr gerade kein passendes Bild parat habt, könnt ihr meins benutzen, hier könnt ihr es downloaden. Indem wir als erstes unser TGA Bild nach

Code:
C:\Programme\Steam\steamapps\ACCOUNTNAME\sourcesdk_content\cstrike\materialsrc\EUERORDNER kopieren.
Zieht nun das Bild mit der Maus auf die Verknüpfung, dabei wirdeine leere Textdatei aus. Nun macht ihr das ganze noch einmal undfertig.
Unter
Code:
C:\Programme\Steam\steamapps\ACCOUNTNAME\counter-strike source\cstrike\materials\EUERORDNER
wurde nun ein VTF-File erstellt.
Nun müssen wir noch das VMT-File erstellen.
Geht dazu nun in den Ordner
Code:
C:\Programme\Steam\steamapps\ACCOUNTNAME\counter-strike source\cstrike\materials\EUERORDNER
Erstellt nun eine neues Textfile und benennt es um in TEXTURNAME.vmt.

(Falls ihr keine Dateiendungen seht, so könnt ihr dies ändern indem ihr unter
Start>>Systemsteuerung>>Ordneroptionen>>Ansicht das Häkchen bei „Bekannte Dateitypen ausblenden“ wegmacht.)

Nun doppelklickt ihr eure VMT.

(Falls sich ein Fenster öffnet mit "Die folgende Datei kann nichtgeöffnet werden" macht ein Häkchen bei "Programm aus einer Listeauswählen" und klickt auf Ok.
Jetzt öffnet sich ein Fenster, mit einer Liste wo ihr den Editorauswählt und ein Häkchen macht, bei "Dateityp immer mit ausgewähltemProgramm öffnen."
Nun könnt ihr eure VMT ganz normal mit dem Editor öffnen.)

In die VMT tragt ihr folgendes ein:
Code:
"lightmappedgeneric" {
"$basetexture" "EUERORDNER/TEXTURNAME"
"$surfaceprop" "brick"
}
"lightmappedgeneric"
Gibt den Shader an, in diesem Fall, das das Ganze mit einer Lightmapbelegt werden soll, dies ist der Standartshader für Brushes.

"$basetexture"

Gibt den Pfad zu eurer Textur und deren Namen an.

"$surfaceprop"

Gibt die Materialeigenschaften an, dies ist wichtig damit bei Beschuss die richtigen Effekte zu sehen sind.

Eine ausführliche Erklärung mit allen Surfacepropertys findet ihr in der Valve Developer Community[/URL]

Nun habt ihr eure erste Textur fertiggestellt, und könnt sie im Editor verwenden. Bei mir im Spiel sieht das ganze so aus:




Normalmap erstellen

Nun da wir unsere Basistextur fertig haben, wollen wir sie natürlichauch noch verschönern. Dafür gibt es verschiedene Methoden, die manverwenden kann, ich fange jetzt hier einfach mal mit der Normalmap an,da sie am besten bei dieser Textur wirkt.



Wie ihr seht, sind die Farben komplett anders wie bei der Mauer, zu der sie gehört.
Das liegt daran, dass in der Normalmap die Informationen gespeichertwerden, wie schräg die Textur an jeder Stelle ist. Welche Farbe fürwelche Richtung steht kann man ziemlich gut ablesen indem man einfachdie Normalmap mit der Originaltextur vergleicht.
Nun wollen wir die Normalmap ins Spiel importieren, falls ihr zu eurereigenen Textur keine Normalmap habt, so könnt ihr die Normalmap für dieTextur von oben hier downloaden.

Wir fangen also an, indem wir unsere Normalmap umbenennen. Ich würdesie der Übersichtlichkeit halber "TEXTURNAME_normal" nennen.
Wichtig ist, der Zusatz "_normal" den Anhand dieses Zusatzes erkenntder Compiler das es eine Normalmap ist und wendet automatisch dierichtigen Einstellungen an. Der Compiler ist übrigens der selbe wieoben.

Nun sollte eure Normalmap im selben Ordner sein, wo auch eure Textur liegt. Geht nun in diesen Ordner und öffnet die VMT.
Diese ergänzt ihr um folgendes:

"$bumpmap" "EUERORDNER/TEXTURNAME_normal"
Der Eintrag "$bumpmap" gibt genauso wie auch bei "$basetexture"den Pfad zur Bilddatei an. Und lasst euch nicht davon verwirren, dasses dort Bumpmap heißt, eine Bumpmap ist etwas anderes als eineNormalmap, aber wir haben hier eine Normalmap eingefügt.

Bei mir sieht das ganze danach so aus:
Code:
"lightmappedgeneric" {
"$basetexture" "EUERORDNER/TEXTURNAME"
"$bumpmap" "EUERORDNER/TEXTURNAME_normal"
"$surfaceprop" "brick"
}
Fertig.

Im Spiel sieht das Ganze dann so aus:



Wie man hoffentlich im Vergleich erkennen kann sieht die untere Texturplastischer aus, als die obere, dadurch dass die Kanten der Steineabgedunkelt bzw. aufgehellt wurden. Der Effekt ist hier noch sehrdezent, besonders offensichtlich wird er jedoch wenn man dieTaschenlampe anschaltet.


Specularmap erstellen

Jetzt wollen wir uns an Spiegelungen wagen. Dafür brauchen wir eine Specularmap, oder kurz auch Spec.
Wir fangen wieder mit einer Textur an.



Diese Fassadentextur wollen wir importieren. Damit die Fenster undwirklich nur die Fenster spiegeln müssen wir der Engine irgendwo sagen,welcher Bereich spiegeln soll, und welcher nicht. Und genau hier kommtdie "Spec" ins Spiel. Die Spec für diese Textur sieht so aus:



Eigentlich relativ einfach. Weiß heißt volle Spiegelung und Schwarzheißt keine Spiegelung. Mit den Zwischenstufen kann man das Ganzenatürlich auch etwas genauer regeln.
Wir fangen also wie immer an, indem wir unsere Textur konvertieren.Falls ihr keine eigene habt könnt ihr natürlich auch meine benutzen, ihr findet sie hier.
Beim kompilieren müsst ihr nichts beachten, ich rate euch trotzdem derÜbersichtlichkeit halber "_spec" an den Namen eurer Spec anzuhängen

Nun müssen wir wieder in der VMT etwas anpassen, zu den Standartangaben fehlen jetzt noch 3 Stück:

"$envmapmask" "SPECNAME"

Gibt genauso wie "basetexture" oder "bumpmap" den Pfad zu einer Texturan, in diesem Fall zur Spec. Falls die Textur generell an jeder Stellegleichstark spiegeln soll, so kann man die Spec auch weglassen und mussnur die beiden folgenden Einträge hinzufügen.

"$envmap" "env_cubemap"
Gibt an, welche Spiegelungen benutzt werden sollen, da Spiegelungenmeißtens vorberechnet werden. Sollte nicht verändert werden.

"$envmapint" "[x.x.x]"
Gibt an, wie stark gespiegelt wird, das kann zwar auch über die Specgeregelt werden, jedoch kann man so am schnellsten Änderungenvornehmen, wenn die Spiegelungen zu stark oder schwach sind. Mussvorhanden sein.

Nachdem alles eingefügt wurde, sieht meine Vmt so aus:

Code:
"lightmappedgeneric" {
"$basetexture" "EUERORDNER/TEXTURNAME"
"$envmapmask" "EUERORDNER/TEXTURNAME_spec"
"$envmap" "env_cubemap"
"$envmaptint" "[ 0.4 0.4 0.4 ]"
"$surfaceprop" "concrete"
}
Nun könnt ihr das ganze Testen, bei mir sieht es so aus:



Falls bei euch die Fenster unnatürlich spiegeln, schaut euch das entsprechende Tutorial noch einmal an.

Alphakanäle

Nun wollen wir etwas komplett anderes in Spiel bringen. Diesmal keineFeste Mauer sondern ein Gitter mit Lücken, das Prinzip ist das gleichjedoch ist hier natürlich auch etwas zu beachten. Fangen wir ersteinmal mit der Grundtextur an. Die sieht so aus:



Wie ihr seht sind die Lücken zwischen den Metallstäben nichtdurchsichtig. Das liegt daran, dass die Engine hierfür ein extra Bildbraucht, das angibt, wie durchsichtig die Textur an welcher Stelle ist.Dieses Bild kann jedoch im Alphachannel der Textur untergebrachtwerden. Der Alphachannel für diese Textur sieht so aus:



Die Funktion wird denke ich mal deutlich. Weiß heißt undurchsichtig undSchwarz komplett durchsichtig. Die Zwischentöne, also Grau, geben anwie stark durchsichtig dieser Pixel ist.

Wie genau erstelle ich einen Alphakanal in Photoshop/Gimp?

Spoiler:

Anleitung von M3rl1n:

Wir gehen in unseren Kanälechannel (unten rechts neben den Ebenenchannel) und erstellen einen neuen Kanal :



Sollte euer Alphakanal nicht weiß sein , färbt ihn weiß

Jetzt blenden wir unseren Alphakanal aus und unsere RGB Kanäle wieder ein Nun sollte unsere Grafik weder normal sichtbar sein.

Jetzt nehmen wir unser Zauberstab Werkzeug und wählen alles aus was später Transparent sein soll.

Bei mir ist als nun alles schwarze Ausgewählt :


Jetzt wechseln wir auf unseren Alphakanal (den RGB Kanal ausblenden) gucken nach ob wir Schwarz / Weiß als Grundfarben haben (ganz wichtig!) und löschen alles schwarze durch betätigen der Entf-Taste.

Jetzt solltet ihr das Muster in eurem Alphakanal haben.

Jetzt könnt ihr den RGB Kanal wieder einblenden und eure Grafik als 32-Bit .tga Datei abspeichern!




Nun wollen wir die Textur mal ins Spiel bringen.

Fangt also an, indem ihr eure Textur wieder ganz normal konvertiert. Wie immer könnt ihr hier meine Textur downloadenIm Gegensatz zur Normalmap muss hierbei nichts besonderes beachtetwerden. Wenn ihr sie konvertiert habt, dann müssen wir die Vmtschreiben. Die Grundzüge sind wieder dieselben, jedoch muss diesmalnoch dazu:

"$translucent" 1
Der Befehlt gibt an, das im Alphachannel der Textur ein Bild ist,anhand dessen die Engine dann feststellen kann, welche Stellendurchsichtig sind, gemeint ist das Schwarzweiß Bild von oben. Falls dieTextur für ein Model bestimmt ist, so muss anstelle von "translucent""alphatest" verwendet werden.

Optional könnt ihr noch weitere Parameter hinzufügen, interessant könnten diese hier sein für euch:

"$nocull" 1
Wenn dieser Parameter vorhanden ist, kann man die Textur von beiden Seiten sehen.

"%compilepassbullets" 1
Brushes die mit dieser Textur belegt sind blocken nun keine Kugeln mehr.


Nach alldem sieht meine Vmt so aus:
Code:
"lightmappedgeneric" {
"$basetexture" "EUERORDNER/TEXTURNAME"
"$translucent" 1
"%compilepassbullets" 1
"$surfaceprop" "metalgrate"
"$nocull" 1
}
Nun ist die Textur fertig und ihr könnt sie euch im Spiel angucken, bei mir sieht das Ganze dann so aus:



Kombination von Normalmap und Specularmap

Eine letzte Sache noch und dann seid ihr fertig und könnt diewichtigsten Features des Textursystems der Source Engine. Bis jetzthaben wir jeden Effekt nur einzeln benutzt, und nichts kombiniert, abergenau das, wollen wir jetzt ändern.
Das Problem dabei ist, das Source ein Problem damit hat, wenn eineTextur aus mehr als 2 Bildern besteht. Wie kann man also zum Beispieleine Normal und eine Spec Map gleichzeitig benutzen? Wir haben so etwasähnliches schon gemacht bei der Transparenz. Und auch diesmal könnenwir den Alphachannel benutzen.
Man kann den Alphachannel der Textur und der Normalmap benutzen, jedochmuss man die Specmap invertieren, wenn man sie in den Alphachannel derTextur packt.
Darum nehmen wir einfach den der Normalmap.
Ich habe schon eine kleine Textur vorbereitet:



Die oben 3 Bilder sind die Textur, die unteren beiden sind Normal und Specmap.
Das Ganze soll einmal eine Fliesentextur in 3 Farben werden. Die Fugender Fliesen sind zwar weiß, jedoch fällt das nicht mehr auf, da siedank der Normalmap schattiert werden, und dank der Specmap nichtspiegeln. Im Spiel sehen sie also dunkler aus.
Falls ihr eine eigene Textur benutzen wollt könnt ihr das natürlich wieder gerne machen, wenn nicht könnt ihr meine hier downloaden, die Specmap ist in dem Alphachannel der Normalmap.
Also wieder Texturen konvertieren, beim Konvertieren darauf achten,dass bei der Normalmap „_normal“ angehängt ist, sonst wird sie falschkompiliert.

Schreibt euch nun eine Vmt, die eine Normalmap und eine Specmap hat, nur das "$envmapmask" lasst ihr weg.

Eine Sache müsst ihr noch hinzufügen:
"$normalmapalphaenvmapmask" 1
Dieser Parameter gibt an, dass sich die Spec im Alphachannel derNormalmap befindet. Eine Pfadangabe ist nicht nötig, da wir ja schonden Pfad zur Normalmap angegeben haben.

Nachdem ich fertig bin, sieht meine Vmt wie folgt aus, ich habe die weiße Fliesentextur gewählt:

Code:
"lightmappedgeneric" {
"$basetexture" "EUERORDNER/TEXTURNAME"
"$bumpmap" "EUERORDNER/TEXTURNAME_normal"
"$normalmapalphaenvmapmask" 1
"$envmap" "env_cubemap"
"$envmaptint" "[ 0.1 0.1 0.1 ]"
"$surfaceprop" "tile"
}
Im Spiel sieht es bei mir nun so aus:




So, nun seit ihr fertig. Ihr könnt alles was wichtig ist, hier noch ein paar Extras:

Nützliche Commands:
"%keywords" "keyword1,keyword2,..."
Hinzufügen von Schlüsselwörtern, die beim Suchen berücksichtigt werden.

_________________
Der Mensch hat keine Zeit,

wenn er sich nicht Zeit nimmt,

Zeit zu haben.
Nach oben Nach unten
Benutzerprofil anzeigen http://chaser.forumieren.com
 
19 - Eigene Texturen
Nach oben 
Seite 1 von 1

Befugnisse in diesem ForumSie können in diesem Forum nicht antworten
Chaser Forum :: Counter Strike Bereich :: Tutorials :: Source SDK Hammer Editor-
Gehe zu: