Nouveautés d’Unity 4 : Les shaders sur le terrain

Bonjour,

Travaillant sur un projet de grande ampleur (dont la finalité est basée sur l’export flash d’Unity actuellement des plus douteux), je n’ai pas trop le temps de rédiger sur mon blog.

J’ai du néanmoins tester les nouveautés de la version 4 d’unity (actuellement en béta) afin de trouver des valeurs ajoutées à notre projet.

Je vais vous présenter l’une d’elle aujourd’hui : L’ajout de shader avec carte de normale et spéculaire à un terrain. On pouvait utiliser un script tiers pour avoir cette fonctionnalité qui pour moi est un manque majeur des versions antérieures. Ce petit tuto nous permettra donc de réaliser une texture spéculaire (pour ceux qui ne savent pas le faire), générer une normale avec un logiciel tiers, et créer notre material sur notre terrain.

Logiciels utilisés :

– Photoshop (Gimp peut tout aussi bien faire l’affaire).

SS bump generator (libre) ou CrazyBump (Payant)

– Unity en version 4 (ici 4.0.0b7)

Avant toute chose, créez un nouveau projet « terrain_test » avec Unity.

1 – Création de la map diffuse/spéculaire

Je vais me baser sur une texture trouvée sur google. Toujours vérifier si vous avez la libre utilisation de la texture.

Voici la texture.

Celle ci pourra être utilisée pour une rue pavée par exemple.

Pour créer la spéculaire, nous allons nous appuyer sur la diffuse, donc l’image téléchargée. Les informations de la spéculaire doivent être dans la couche alpha de la texture.

On duplique le calque avec Ctrl + J. On le désature : Ctrl + U et on baisse la saturation au maximum.

On inverse les couleurs avec Ctrl + I.

Ensuite, on va utiliser les niveaux. Ctrl + L et réglez les niveaux de façon que le contraste entre les zones sombres et claires soit fort.

En effet, le principe de la specular map est de renvoyer la lumière des parties blanches (ou claires, bien évidement) et d’absorber donc ne pas renvoyer la lumière sur les parties noires.

Il ne reste plus qu’a ajouter ce calque dans le canal alpha.

On clique sur la vignette du calque en maintenant la touche Ctrl appuyée.

Ensuite on copie la sélection (Ctrl + C). On sélectionne le calque de la texture de base (ce qui va être la diffuse), on va dans « couches ».

On ajoute une couche, ce qui va automatiquement nous rajouter la couche alpha.

Ensuite on fait Ctrl + V la couche alpha sélectionnée. On revient sur les calques pour supprimer le calque dupliqué qui nous a servi de base pour le specular.

– Export pour Unity de la texture Diffuse/Speculaire

Maintenant la texture est créée, il faut l’exporter vers unity dans un format qui conserve les données du canal alpha.

On fait Ctrl + Maj + S et on choisi le Targa comme format et on active les couches Alpha.
On appelle la texture « terrain_dif_spec.tga » et on l’enregistre dans un dossier « textures » dans le répertoire Assets du projet Unity.

Le Targa enregistre les couleurs en 24 bits, il lui en faut 32 bits pour le canal alpha. Donc on enregistre en 32 sinon on perds l’alpha et donc la spéculaire.

4 – Génération de la normal map

On lance SSBump Generator, on fait "File", "Add Image", et on ajoute la texture précèdente.

Ensuite on sélectionne "Normal Map Only" et on clique sur "Generate Selected".

 

La texture de normale est générée, on lance unity si ce n’est pas déjà fait, on sélectionne la texture de normale qui doit être dans "Assets/textures" et on la renomme en "terrain_nor".

Ensuite, on change le type de texture en "Normal map" et on applique.

4 – Création du material pour le terrain

Maintenant, on va créer le material à partir d’un shader spécifique au terrain d’Unity 4. Pour cela, c’est simple.

On crée un dossier "materiaux" dans lequel on ajoute un material.

On nomme celui-ci "terrain". Ensuite on change le type de Shader par un nouveau shader d’Unity 4 : Nature/Terrain/Bumped Specular

5 – Le terrain

On crée un terrain "Terrain -> Create Terrain", on le sélectionne et on appuie sur "F" dans le viewport pour centrer la vue sur celui-ci.

On va dans l’onglet "Terrain Settings", et on change le Material par celui crée précédemment.

Ensuite on va dans l’onglet "Paint Texture", on ajoute une texture avec le bouton "Edit Textures", et dans Texture on choisit "terrain_dif_spec" et Normal Map "terrain_nor"

 

 

Donc le terrain est couvert entièrement de la texture créée. Si les pavés sont trop gros, on peut baisser le Tiling (Tile Size X / Y) dans "Edit Textures". On peut aussi créer une spéculaire dans le canal Alpha sans se baser sur la texture de base (et faire en sorte qu’elle soit « répétable »), ce qui avec un peu d’entraînement peux donner de superbes effets.

Voici un exemple :

On peut (et on doit!) ajouter d’autres textures pour modifier l’aspect du terrain, de l’herbe, de la terre, du béton…Etc.

 

6 – Conclusion

Une lacune importante du système de terrain enfin comblée, la prochaine étape serait plus de possibilités dans les matériaux (réfléxions par exemple).

 

Texture du tuto avec spéculaire

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Website Protected by Spam Master


*