Niveau : Moyen.
Qu'est ce que c'est ?
Le BumpMapping est une technique qui permet d'économiser des structures 3D, pour les remplacer par des textures qui donnent l'illusion de reliefs. Par exemple, au lieu de faire pleins de demi sphères pour une route pavée, on réalise une texture avec des pavés et on lui applique une seconde texture qui en fonction de la lumière donnera l'illusion du relief.
Un autre exemple pour être les roues d'un camion. Inutile de réaliser tous les crampons. On les dessine, et on les "BumpMap"
Compris ? Ok, passons aux différentes techniques.
Les techniques
J'ai parlé de BumpMapping qui est le terme le plus courament utilisé pour ce type de procédé, mais il existe en fait 3 techniques.
Je poursuit avec l'extrait d'un article publié sur un blog nofrag : http://blogs.nofrag.com/divide/
On part d'un simple texture (texture diffuse) :
Vous êtes tous habitués maintenant à voir du bump mapping, voire du normal mapping dans les jeux video.
Vous savez aussi sans doute comment ces techniques fonctionnent :
Dans le cas du bump-mapping, il s'agit d'une texture supplémentaire en niveau de gris qui vient perturber le calcul de la lumière sur la surface, pour donner l'illusion d'un relief plus complexe.
Le normal mapping (utilisé notamment dans Doom 3 et Far Cry) est une version ameliorée du bump mapping, qui repose non plus sur une seule composante (niveau de gris) mais sur 3 (niveaux de rouge, vert, bleu). Ces 3 informations ne doivent bien sur pas être interpretés comme des informations de couleurs dans ce cas particulier, mais comme les composantes d'un vecteur à 3 dimensions. Ainsi, le rouge codera la composante X du vecteur, le bleu codera pour le Y, et le rouge pour le Z. Pour chaque pixel de cette texture normale, on a donc un vecteur 3D associé.
Mais a quoi correspond ce vecteur 3D ?
Et bien il est orienté selon la normale de la surface à cet endroit la. En gros, il indique dans quelle direction était orienté la surface du modèle high poly (tres détaillé) à cet endroit la par rapport à la version low poly (peu détaillée, utilisé dans le jeu video).
Ca permet d'effectuer un calcul de lumière beaucoup plus juste sur la surface (le calcul de la lumière en lui même est très simple, il s'agit d'un simple produit scalaire du vecteur indiquant la direction de la lumière et du vecteur indiquant l'orientation de la surface).
Le displacement mapping repose sur un principe similaire aux 2 techniques précédentes, sauf qu'il effectue plus qu'une altération de la lumière : il fait également subir une altération à la géometrie.
Techniquement, son codage repose sur un niveau de gris (les points clairs représentant les niveaux les plus élevés).
Mathématiquement, on peut dire que le displacement mapping est l'intégrale du normal mapping (le normal mapping code des pentes, le displacement mapping code des surfaces) - et vice-versa, le normal mapping est la dérivée du displacement mapping.
Il est donc théoriquement possible de calculer une displacement map à partir d'une normal map.
Quelle technique préférer ?
En fait d'aprés les tests que j'ai pu faire et les forums que j'ai pu lire :
- le BumpMapping donne peut de résultat. Pas trés flagrant.
- le Normal Mapping est le plus utilisé notamment dans HL2 et donne de trés bon résultats.
- le displacement mapping est plus dur à obtenir, et, d'aprés certains, Source ne saurait pas le gérer...
Vous l'aurez compris, l'exemple suivant portera sur le NormalMapping
Réaliser son BumMap
Pas trés compliqué en somme.
J'ai utilisé un logiciel extraordinaire et trés complet pour le "texturing" : Texture Maker. http://www.texturemaker.com/download.htm
Ce logiciel n'est pas gratuit, mais vous pourrez réaliser des tests avec la version d'évaluation.
J'ai testé d'autres logiciels ou encore un plug-ins nVidia pour Photoshop et TextureMaker apporte de trés loin les meilleurs résultats.
Il suffit d'ouvrir sa texture dans le logiciel :
Puis faire Fichier\Export\Normal Map. Cliquez sur le bouton "Update" et Hop :
Il suffit ensuite de jouer avec les curseurs "Amplification" et "Details Persistence" pour obtenir le résultat souhaité. Par exemple, içi je veux obtenir des pavés rond. Donc je ne mets pas trop de détails, qui ne rendrait plus mes pavés trop lisses, et par contre je mets une bonne couche d'amplification qui va creuser entre mes pavés
Je mentionne, en bas à gauche, un nom de fichier avec l'extension "_normal.tga" et je click sur "OK". Mon fichier TGA est créé.
J'ai donc maintenant : stone_floor_01.tga et stone_floor_01_normal.tga.
Je convertis ces deux tga en vtf et je créé un fichier vmt (stone_floor_01.tga) comme ceci :
- Code: Tout sélectionner
"LightmappedGeneric"
{
"$baseTexture" "de_volare_new/stone_floor_01"
"$bumpmap" "de_volare_new/stone_floor_01_normal"
"$normalmapalphaenvmapmask" "1"
"$surfaceprop" "concrete"
}
On précise donc la texture de base et la texture de bumpmap.
J'ai placé Trois exemples pour bien voir la différence. (l'exemple ci-dessus est au milieu)
Voici le résultat :
- à gauche, un NormalMap, sans beaucoup d'amplification mais avec beaucoup de détails,
- Au milieu, pas beaucoup de détails, mais beaucoup d'amplification,
- à droite, pas de NormalMap, texture de base.
Merci de signaler les anomalies,
Dawa.

moi je connaissait que le nvidai tool sous toshop merci jva tester ton lien y'à plein de prog qui m'on l'aire fort simpatique...
en 20XX on clique sur le bouton et bouf ça fait une map tout seul 





Sinon c'est un tres bon tuto, j'aime beaucoup