Introduction
Vous désirez créer des textures persos pour Half-Life 2 mais vous ne savez pas comment faire?
Vous avez frappé a la bonne porte
Half-Life 2 utilise un nombre impressionnant d' effets très complexes pour rendre vos textures très réalistes
dont voici une liste non-exhaustive:
Bump-Mapping:
Le jeu va faire appel à une texture complémentaire à la texture affichée qui va lui permettre de
donner des infos sur le relief de la texture, ce sont les heightmaps.
A l' aide du heightmap, le jeu va calculer selon les lumières disposées dans le niveau, les ombres
portées par le relief de la texture (pensez a du crépi avec une lumière venant de coté). Ces ombres
auront pour effet de donner de la profondeur à la texture et la rendre bien plus crédible.
Cube-Mapping:
Cette technique est assez proche du bump-mapping, en effet, elle utilise aussi le système d' heightmaps mais
pour une autre chose, il va en fait refléter les zones alentours de façon ponctuelle et déformer le reflet selon
l' élévation de la texture pour lui donner en, plus d' un effet de relief, une brillance très crédible à la texture
qui est utile pour des effets de murs ou sols humides.
Pixel-Shading:
Le Pixel-Shading est la technique la plus compliquée des trois citées ici (nous n' en parlerons d' ailleurs pas
dans ce tutorial). Elle ressemble dans l' approche au Cube-Mapping mis à part qu 'ici, le reflet n' est pas ponctuel
mais mis à jour en temps réel, à la manière d' un miroir (dont le reflet pourra être déformé pour toujours avoir
cette impression de relief). Cette technique est très utile pour générer des étendues d' eau tout a fait crédibles
reflétant le décor.
"A cause" de ces techniques très pointilleuses, la création et (surtout) la conversion de vos textures persos est
bien complexe. Nous allons dans un premier instant voir comment convertir vos textures, et dans un deuxième temps
voir comme appliquer des effets dessus.
1. La conversion
A] Préparer la texture
La texture que vous allez devoir convertir doit suivre (encore) des règles précises.
La taille:
Vos textures doivent dans un premier temps avoir une taille particulière. Half-Life 2 requière des textures en 64,
128, 256, 512, 1024, 2048 pixels. Les dimensions sont mixables c' est a dire que l' on n' est pas forcés de faire des textures
en 128*128, on peut faire par exemple du 1024*128, 256*512, 64*512.... à vous de juger.
Le format:
Non seulement vous devez prendre garde a la taille mais en plus il va falloir penser au format. Pour cela, rien de
compliqué. Il faut convertir votre texture en .TGA (targa) non compressé en 16 ou 24Bit. Mais comment convertir
ma texture dans ce format? Rien de plus simple, il vous suffit d' utiliser
Irfanview. C' est un
petit logiciel gratuit très pratique qui va vous permettre de convertir votre texture dans pas mal de formats avec
un bon nombre d' options ;-). Pour convertir votre texture, ouvrez votre image sous Irfanview, faites Save As...
et sélectionnez le format approprié, en l'occurence .TGA. Il s' occupera de le mettre en 24Bits tout seul.
Lieu ou mettre le fichier:
Pour finir, il vous suffit de sauvegarder votre texture dans le dossier
C:\Program Files\Steam\SteamApps\[VOTRE COMPTE]\sourcesdk\[NOM DU MOD]\materialsrc
Remplacez [NOM DU MOD] par le mod pour lequel vous allez faire votre texture (cstrike ou hl2). Il se peut que
le dossier materialsrc
n' existe pas, créez le si c' est le cas.
B] Préparer et lancer le convertisseur
C' est ici que les complications commencent réellement et que vous risquez aussi de vous perdre facilement donc suivez avec
attention et relisez si il le faut. Nous allons procéder par étapes:
- Faites un raccourci du fichier situé a cette adresse:
C:\Program Files\Steam\SteamApps\[VOTRE COMPTE]\sourcesdk\bin\vtex.exe
- Allez dans les propriétés du raccourci que vous venez de créer et ajoutez a la fin de la
Cible
du raccourci:
-mkdir -shader LightmappedGeneric ..\[NOM DU MOD]\materialsrc\[NOM _TEXURE].tga
/!\ Ne supprimez surtout pas les " déjà présents dans
Cible
et faites un espace entre l' adresse de vtex et -mkdir
sinon tout risque de planter.
Astuce:Si vous avez plusieurs textures à convertir dans le dossier, mettez *.tga
à la place du nom de
la texture et le programme se chargera de toutes les convertir.
- Démarrez Steam, et en particulier Source SDK de Steam et lancez votre raccourci une fois cela fait. Si tout se
passe bien, au bout d' un certain temps, la fenêtre DOS ouverte va vous marquer
Press any key ton continue...
.
La conversion est donc finie. Vous retrouverez vos textures dans
C:\Program Files\Steam\SteamApps\[NOM DU COMPTE]\[NOM DU MOD]\hl2\materials
2. Régler le material
Maintenant que la texture est convertie, nous allons parler de
material et non plus de textures. Le material
(matériau en français) est un ensemble texture/fichier texte dont voici les précisions:
Les .VTF (textures)
Les fichiers VTF (pour Valve Texture File) contiennent l' information graphique c' est à dire la texture seule de votre material.
C' est la peau, celle qui va donner la base à votre material. je ne vais pas plus m' attarder dessus car nous n' auront pas à
modifier celle-ci.
Les .VMT (fichier texte)
Les fichiers VMT (acronyme de Valve Material File) contiennent les informations qui vont rendre la texture plus interactives et
adaptées à leur environnement. C' est ces fichiers que nous allons éditer a l' aide d' un très puissant outil, j' ai nommé le Bloc-Notes Windows!
Pour ouvrir le fichier, démarrez le Bloc-Notes, et ouvrez tout simplement le fichier .VMT ;-).
Vous allez tomber sur quelque chose de ce genre:
"LightmappedGeneric"
{
"$baseTexture" "mur_0000"
}
A] Propriétés de la surface
Vous voici maintenant devant ce splendide morceau de code. Ne vous inquiétez pas, ce n' est pas si compliqué que ça ^_^.
Les propriétés de la surface, c' est le matériau dans lequel il est fait, le bruit qu 'il va faire quand vous allez taper dessus,
marcher dessus, les impacts que vont laisser les balles ou encore sa manière de réagir quand il va prendre des dégâts.
Pour ajouter cette propriété, regardez ceci:
"LightmappedGeneric"
{
"$baseTexture" "mur_0000"
"$surfaceprop" "[TYPE DE CONSISTANCE]"
}
Il suffira de remplacer
[TYPE DE CONSISTANCE]
par un mot-clé de votre choix, je ne vais pas vous faire la liste complète
car elle s' élève à 150 types différents mais je vais vous en énumérer quelques uns des plus utilisé:
- metal: Bruit métallique, impacts de tôle pliée, tout pour faire de belles textures prêtes à s' oxyder!
- dirt: Boue, terre, sol crasseux, pour toutes textures prête sà rendre un air dégeu à votre map :p.
- grass: Si vous voulez une texture d' herbe avec des brindilles qui dépassent de façon aléatoire.
- tile: Des plaques en polystirène au plafond, du balatom au sol, pour faire un bel intérieur ^_^.
- water: Plouf, de l' eau comme avec toutes ses propriétés ;-).
- glass: Une vitre, belle vitre, une fois touchée, elle se brise en petits morceaux grâce a cette propriété.
- concrete: Murs, pavés, routes de quoi rendre vos textures plus stylées béton!
- rock: Des falaises, des pierres, pour rendre vos textures compactes et dures ^_^.
- wood: Du bois, du bon vieux bois.
- plastic: Plastique, caoutchouc, tout pour faire de la matière synthétique.
- ice: Brrrrr fais froid, bah si vous voulez faire des textures de glace, choisissez cette option ;-).
Avec ça, vous devriez déjà de quoi faire pour un bon bout de temps.
B] Bump-mapping / Cube-mapping
Le bump/cube-mapping, comme expliqué plus haut, nécessite l' intervention d' une seconde texture, complémentaire à la première.
J' expliquerais la création de celle-ci plus bas dans ce tutorial.
Pour le cas du bump-mapping, il vous suffit de rajouter une
ligne de commande dans le fichier .vmt :
"LightmappedGeneric"
{
"$baseTexture" "mur_0000"
"$surfaceprop" "concrete"
"$bumpmap" "mur_0000_bump"
}
mur_0000_bump
est le nom de la texture contenant le heightmap attribué au material. Si vous avez placé votre texture
dans un sous-dossier de materials (prenons
texture_perso
pour l' exemple), il faudra écrire texture_perso
/mur_0000_bump
.
Passons au cas du normal mapping:
"LightmappedGeneric"
{
"$baseTexture" "mur_0000"
"$surfaceprop" "concrete"
"$bumpmap" "mur_0000_bump"
"$envmaptint" "[ 15 18 12 ]"
"$normalmapalphaenvmapmask" 1
"$envmapcontrast" 0.25
"$envmapsaturation" 0.25
"$envmap" "specular"
}
Vache, c' est quoi ces trucs??? vous allez me dire! Ne vous inquiétez pas, derrière ces trucs bizarres ce caches
des choses bien simples en fait.
"$envmaptint"
: Cette propriété permet de changer la couleur de la réflexion en suivant cette méthode:
la valeur 15
représente l' intensité en rouge du reflet sur une échelle de 0 à 255, la valeur 18 représente l' intensité
du vert, et 12 le bleu. Changez ces valeurs à votre guise dans l' échelle imposée.
"$normalmapalphaenvmapmask"
: Laissez la sur 1
"$envmapcontrast"
: C' est tout simplement le contraste du reflet, jouez sur cette valeur pour avoir un reflet
plus ou moins "pétant".
"$envmapsaturation"
: Pareil que pour précédemment, mais pour la saturation (puissance des couleurs) du reflet.
"$envmap"
: Type de reflet, laissez cette valeur.
3. Créer les heightmaps
Installer le Plug-in
Maintenant que vous savez configurez les materials avec de jolis reflets et effets de reliefs, nous allons apprendre à créer
une texture à l' aide de Photoshop. Pour ce faire, commencez par installer
ce plug-in de chez Nvidia. Placez le fichier contenu
dans le zip ici
si vous avez la version anglaise de Photoshop:
C:\Program Files\Adobe\Photoshop\Plug-Ins\Filters
Si vous avez par contre
la version française, placez le plug-in dans ce dossier:
C:\Program Files\Adobe\Photoshop\Modules externes\Filtres
Utiliser le Plug-In
Maintenant que Photoshop est prêt, lancez le. Ouvrez votre fichier texture .tga pour lequel vous voulez faire un heightmap.
Ensuite, ouvrez le menu des
Filtres
(
Filters
). Il devrait s'y trouver en bas le filtre
nvTools/NormalMapFilter
que vous allez vous empresser d'ouvrir. Il se peut qu'une boite de dialogue s'affiche, cliquez sur
OK
si c'est le cas.
Vous devriez vous à peu près cela (sans les chiffres):
Légende:
Nous n'allons apprendre a connaitre que les propriétés utiles.
Dynamic Preview:
C'est un aperçu de votre heightmap que vous aurez au final.
-
Height Génération:
Cette fenêtre est la plus utile. Filter Type
permet de définir le niveau de flou du heightmap.
4x4
est le mode "Sans-flou". Les Invert-X
et Invert-Y
permettent d'inverser le heightmap. Dans la pratique,
ces options vous permettent d'inverser le relief de la texture et donc de faire ressortir ce qui était plus profond. Scale
vous permet quant à lui de définir la profondeur du relief.
Height Source:
Cochez et laissez l'option Average RGB
et n'y touchez pas, cela ira dans 99% des cas.
Alternate Conversions:
Amusez vous avez les différentes options qui vous sont proposées pour arriver au résultat
qui vous plait. Cette propriété vous permet de dire sur quoi doit se baser le plug-in pour créer le heightmap.
3D Preview:
C'est ici la partie la plus intéressante de ce logiciel. Elle permet d'afficher votre heightmap
dans une situation réelle et donc de juger si il est a point ^_^. Ne cochez aucunes des propriétés au dessus du bouton
3D Preview
, elles ne changent rien de toutes façons. Appuyez sur F1 en vue 3D pour connaitre les touches pour vous
déplacer.
3D View Options:
C'est ici que vous allez pouvoir définir tout ce qu'il faut pour la vue 3D.
Cochez les trois options et appuyiez sur [...]
pour aller chercher votre texture de base. Une fois celle-ci sélectionnée,
elle s'affichera et se combinera avec le heightmap pour apprécier le rendu final.
Alpha Field:
Étant donné que vous avez coché Average RGB
dans Height Source
, cette propriété ne vous
sera d'aucune utilité. Tachez seulement de cliquer un des boutons pour ne pas provoquer d'erreur.
Enregistrez votre fichier
Une fois que tous vos réglages sont faits, cliquez sur
OK
et admirez votre heightmap avant de l'enregistrer.
Vous risquez de faire une erreur: Écraser le fichier de la texture en source. POur éviter ceci, fais Enregistrez Sous...
et sauvegardez le fichier sous le nom nomdevotretexture_bump
au format TGA 16 ou 24 Bits comme expliqué plus tôt.
Une fois votre fichier TGA crée, convertissez le material avec la méthode citée plus au dessus, et supprimez le
nomdevotretexture_bump.vmt
crée. Ensuite, réglez le vmt du material de base de telle manière que je vous l'ai expliquez
et admirez le résultat.