Exemple de normalmap + envmap |
| Lorsque dans un matériau on doit combiner plusieurs effets, par exemple le normal mapping, l'environment mapping et la transparence ou alors si on a besoin de la couche alpha de la texture principale pour un autre but tel que l'auto-illumination(zones lumineuses), on va devoir utiliser une méthode plus complexe pour y parvenir. |
| On va commencer par créer la texture principale au format TGA, on va définir la transparence et l'enregistrer dans la couche alpha. |
| La deuxième étape va être de créer une deuxième texture qui sera la normal map, c'est à dire une texture dont l'information RVB donnera la direction des normales à la surface de la texture. |
| On peut procéder de plusieurs façons, on peut créer un modèle 3d de haute résolution et en extraire une normal map, ou alors partir de la texture dessinées et en extrapoler une normalmap se basant sur la luminosité de l'image et les transitions clair sombre. |
| Il existe un plugin créé par Nvidia pour Photoshop qui donne de très bons résultats. On peut le trouver sur le site des développeur de Nvidia : http://developer.nvidia.com/page/tools.html |
| On va suivre cette méthode pour la création de notre normal map. |
![]() |
| Voici le plugin dans Photoshop, l'usage en est simple, on va surtout jouer sur la variable Scale pour augmenter ou diminuer l'effet. Selon l'image et le résultat on peut modifier les autres paramètres tels que Invert X et Y pour modifier l'orientation des normales ou changer le sample pour éliminer les détails fins comme une granulosité trop importante par rapport aux formes générales. |
| Une fois qu'on a obtenu une normal map satisfaisante, on peut faire un test dans le jeu avant de continuer. |
| Ajout de l'environment mapping: |
| Maintenant on a besoin d'ajouter un effet d'environment mapping, c'est à dire un matériau qui sera capable de refléter son environement de façon plus ou moins importante selon la matière représentée. |
| Une pièce chromée va donner d'importants reflets, mais une pièce de tissus par exemple ne va pas donner de reflets. |
| Comme on a déjà utilisé la couche alpha de la texture principale, on va utiliser celle de la normal map pour les information sur l'envmap. |
| Pour le faire, on va aller dans le panneau des couches de Photoshop et ajouter une couche alpha à la texture de normal map. |
| C'est le petit bouton au bas du panneau. |
![]() |
| Maintenant on a une couche alpha noire et vide. On va y copier une sélection faite sur la texture principale. |
| Cette sélection va contenir toutes les zones de la texture qui seront affectées par l'environment mapping. |
![]() |
Ci-dessus la sélection des zones de la texture sur lesquelles l'envmap
sera appliqué. |
| Ensuite on va copier cette sélection dans la couche alpha de la texture de normal map : |
![]() |
| Le dernier travail sera de modifier la luminosité avec l'outil densité. Plus la zone sera claire, plus l'effet sera important. |
| Sur cet exemple on a la texture d'une paire de botte noires cirées sur lesquelles on va appliquer un effet modéré. Mai on a aussi une boucle de ceinture en métal poli sur laquelle l'effet doit être renforcé. |
| On remarquera que si on utilise cette méthode le normalmapalphaenvmapmask, la couche alpha est inversée par rapport à la méthode basealphaenvmapmask. Le noir et le blanc sont permutés dans la valeur de l'effet. Cette fois c'est le noir qui donnera un effet nul et le blanc le reflet total. |
| On n'a plus qu'à créer les deux fichiers VTF et finalement le fichier VMT : |
"VertexLitGeneric" |
| normalmapenvmapmask 1 signifie que les infos d'envmap sont dans la couche alpha de la texture de normalmap. |
| envmaptint [ .64 .64 .64] permet de modifier la force de l'effet et d'en varier la teinte. En effet, certaines matières peuvent refléter la lumière avec une teinte particulière. les valeurs varient de 0 à 1 . Attention ces valeurs n'ont pas forcément un effet linéaire, il faut agir avec de petites modifications pour trouver le bon réglage. |
| envmapcontrast 0.300000 permet d'augmenter le contraste des reflets, la valeur varie de 0 à 1. |