Fallout 3 utilise des textures au format DDS de divers types:

Généralement on a tout d'abord une texture de base qui peut posséder une couche alpha qui contiendra des informations sur la transparence.

Puis on a une deuxième texture contenant des informations de normal mapping dans les couches RGB et des information sur la spécularité (brillance) dans la couche alpha.

La dénomination des textures a une importance, chaque texture principale peut avoir un nom au choix, mais la deuxième texture doit obligatoirement utiliser le même nom avec _n à la fin. Par exemple la texture rochers.dds doit avoir son complément rochers_n.dds situé dans le même dossier.
 
Il faut bien faire attention et être très rigoureux, sinon on va se retrouver avec des effets indésirables. En effet si on ne prend pas garde au contenu de la couche alpha des textures on risque d'avoir des textures sans reflets ou totalement brillantes, ou sans la transparence voulue.
Les textures standard sont généralement enregistrées au format DTX1 avec couche alpha ou sans couche alpha pour certains cas isolés. Les textures de normal mapping sont au format DTX5 avec la couche alpha interpolée.
 
Bon maintenant qu'on a vu de quel type de texture nous avons besoin, il faut savoir comment les créer.
On va le faire avec Photoshop et le plugin Nvidia destiné au travail des textures et des normal maps. On peut utiliser un autre programme, mais il faut qu'il puisse gérer les couche RGB et Alpha, générer des normal maps et exporter les textures au format DDS désiré.
 
 
Créer une texture de base ne pose pas de problème, c'est juste une image RGBA 8 bits standard. Comme on l'a vu la couche alpha peut contenir des informations de transparence. S'il n'y a pas de transparence cette couche aplha sera blanche par défaut.

Pour créer une texture, il suffit d'ouvrir une image de n'importe quel format RGB dans Photoshop, de lui donner une taille respectant les standards, c'est à dire des multiples de 2. Dans un jeu comme Fallout 3 les textures standars ont une taille de 512x512 et 1024x1024 pour les grandes textures, mais on peut bien sur aller jusqu'à 2048x2048, mais alors attention car des trop nombreuses grandes textures vont causer des à-coups lors des chargement continuels lorsque le joueur se tourne ou se déplace.

En effet Fallout 3 ne charge pas tout en mémoire, mais charge les ressources au fur et à mesure que le joueur avance. Ceci a été surtout fait pour que le jeu passe sur les consoles et les PC peu performants. C'est un problème gênant car sur un PC moderne pouvant utiliser 4 gigas de mépmoire ou plus avec un système 64 bits on pourrait charger plus de textures et éviter ces à-coups continuels.

Alors évitez les grandes texture en 2048x2048, mieux vaut une bonne texture en 1024x1024 très nette et détaillée qu'une grosse de qualité grossière.
Une fois la taille définie, il faut simplement enregistrer sous le format DDS de type DTX1 avec couche alpha. Photoshop ne gère pas le format DDS d'origine, il faut impérativement installer le plugin Nvidia qui gère également les normal maps. Ce plugin est gratuit et peut être chargé sur le site Nvidia.
Nvidia Texture Tools
En enregistrant au format DDS, la fenêtre de dialogue Nvidia va nous donner les réglages possibles.
 
Si on veut utiliser une texture avec des zones transparentes, il suffit d'ajouter une couche alpha dans photoshop.
Ici on a une texture de route en asphalte composées d'éléments qui peuvent être appliqués sur une autre texture. Par exemple on peut rajouter une ligne blanche ou jaune endommagée sur une autre texture.
Si on rend visible la couche alpha, les parties transparentes sont mieux visibles. Pour créer ces zones de transparence, on peut très bien dessiner dans la couche alpha, le noir est complétement transparent et le blanc opaque, avec des nuances de gris pour un effet intermédiaire.
Lors de l'exportation de léa texture au format DDS, il faudra bien sur choisir le format DTX1 ARGB 4bpp 1 bit alpha
 
 
Créer une texture de normal mapping n'est pas une chose facile, il y a bien le plugin Nvidia qui peut extrapoler une normal map à partir de la texture de base, mais le résultat n'est pas terrible. Normalement il faut commencer par créer une bump map de la texture puis la convertir en nomal map avec le plugin Nvidia.
Une bump map est une image en niveau de gris représentant le relief de la texture, on peut la créer manuellement pour des textures simples ou convertir la texture en niveaux de gris et corriger le relief en travaillant avec un outil permettant d'assombrir ou d'éclaircir des zones de la texture. Avec un peu d'entrainement on arrive à de bons résultats, on peut bien sur mélanger les méthodes en combinant du dessin par dessus une texture convertie en niveaux de gris.
Mais il y a un outil assez génial qui permet de réaliser de très bonnes normal maps très rapidement, c'est Crazy Bump. Cet outil n'est pas gratuit, mais si vous voulez de bonnes normal maps rapidement c'est le must. Il y a une version complète pour 99 $ ou une version étudiant pour 49$.
Crazybump
Voyons divers essais comparatifs pour créer une normal map à partir d'une texture.
La texture de base choisie :
Essayons d'abord de créer une normal map directement avec le plugin Nvidia à partir de la texture en RGB.
Le réglage choisi favorise les plus gros détails avec une hauteur modérée de 10.
Le résultat n'est pas mauvais, mais ça restera assez plat avec simplement les petits détails qui donneront un relief granuleux, mais les gros objets ne ressortiront pas du fond.
C'est une méthode rapide pour juste donner un peu de relief à une texture, c'est très bien adapté pour du gravier ou des surfaces comme du béton qui ont un relief très léger. Pour ce genre de textures ce résultat est tout à fait satisfaisant, mais pour la texture que nous avons choisi, ça reste nettement insuffisant.
Voyons maintenant ce qu'on peut obtenir rapidement avec Crazybump :
On peut choisir le sens du bump mapping.
Voilà le résultat après quelques petits réglages rapides, on peut avoir une prévisualisation très pratique comme ci-dessous pour mieux juger du résultat.
Sur cette prévisualisation on remarque que le résultat est très satisfaisant, on peut toutefois remarquer que l'étiquette sur la bouteille en plastique jaune au centre a un relief qui est erroné, on peut facilement remédier à ça en retouchant la texture avant de l'importer dans Crazybump.
Voilà la normal map terminée, on voit immédiatement l'énorme différence et la qualité très supérieure de celle ci par rapport à celle obtenue directement avec le plugin Nvidia.
Crazybump est vraiment un outil indispensable si on veut de bonne normal maps rapidement. Tout le monde n'est pas un génie de la création de normal map manuelles qui demandent beaucoup de temps et de patience pour arriver à un résultat souvent inférieur à ce que Crazy bump peut nous offrir.
Avec un peu d'expérience et quelques retouches sur la texture de base avant de l'importer dans Crazybump (étiquette de la bouteille) on obtient un résultat excellent.
 
On va maintenant créer la texture de spécularité:
 
Cette texture va servir pour définir la brillance de la texture, la façon dont elle va réfléchir ou non la lumière.
Des textures représentant des surface métalliques, du verre, ou même n'importe quelle autre surface seraient ternes si il n'y avait pas cet effet de spécularité qui va créer un effet de réflexion de la lumière incidente. Cet effet est vraiment indispensable avec des éclairages dynamiques, il ajoute une nouvelle dimension à l'objet.
Cette texture est en fait une simple image ne nuances de gris, le noir représente une surface mat et le blanc une surface brillante. On peut jouer sur les nuances de gris pour obtenir des zones plus ou moins brillantes.
On va commencer par convertir notre texture en nuances de gris, puis on va jouer sur la luminosité et le contraste pour obtenir la quantité globale de brillance désirée.
Ensuite on peut agir localement sur certaines zones pour accentuer ou diminuer l'effet. On peut bien sur partir de zéro et dessiner la map de spécularité en nuances de gris et se basant sur la texture comme référence, mais c'est rarement utile, normalement la conversion de la texture en nuances de gris et sa modification suffisent.
L'image en niveaux de gris de la texture.
La modification de l'image en niveaux de gris avec des zones plus claires qui seront plus brillantes.
Les deux images prêtes pour l'assemblage en une image RGBA avec couche alpha contenant l'information de spécularité.
On ajoute une couche alpha dans l'image de normal map et on y copie l'image en niveaux de gris de spécularité.
Voilà la texture de normal map/spéculaire terminée avec toutes les couches visibles. Il ne reste plus qu'à exporter la texture au format DDS.
On va exporter au format DDS DTX5 8bpp interpolated alpha. Et voilà c'est terminé on a notre texture de normal map/spécularité prête, il ne faut pas oublier de la nommer correctement en rajoutant _n au nom de la texture de base correspondante.
On doit toujours avoir des paires de textures composées d'une texture de base et de sa texture de normal/spécularité en respectant bien la règle de nomination.