Le Displacement Mapping

Écrit le 08/12/2004 par Bl@de
Dernière mise à jour : 30/01/2006

Introduction

Un displacement geometry est un brush qui a été converti et subdivisé, qui peut être librement déformé et sculpté dans diverses formes. Les displacement geometry servent le plus souvent à créer des terrains : collines, fossés, pentes.
Mais ne vous attendez pas à avoir un résultat comme dans UT2004 (de belles collines toutes lisses), les développeurs de source on beaucoup moins privilégié cette fonction et n'ont alloué que très peu de polygones au displacement, il sert essentiellement à faire des petites déformations de terrain, qu'un environnement entier, bien qu'on peut assembler plusieurs displacement ensembles.

Voici un exemple de displacement geometry :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement00.jpg

Un second exemple de displacement geometry avec une texture blend :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement01.jpg

Description des outils

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement02.jpg

TOOLS :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement03.jpg

Select : c'est l'outil qui va vous permettre de choisir quels faces de votre brush vont être subdivisées et déformées, CTRL+Clic pour sélectionner plusieurs face d'un même brush.

Paint Geometry : c'est l'outil qui vous permet de déformer et sculpter votre terrain. Ces outils ne sont pas bien compliqués à comprendre, il y a le « Raise/Lower » qui sert à augmenter ou diminuer la hauteur du terrain, l'outil « Raise To » sert à remettre à plat le terrain, « Smooth » sert à lisser un peu la déformation du terrain. « Distance » définit avec quelle force votre outil agira, et « Radius » est la taille de votre pinceau.

Paint Alpha : Cet outil est à utiliser avec les textures blend, il vous permet de peindre le canal alpha de votre displacement choisi. Le canal alpha intervertit la visibilité de deux textures séparées sur la même surface. Les outils Paint Alpha sont décrits plus en détail dans le chapitre « Utilisation des textures blend »

Invert Alpha : tout simplement, cet outil inverse le canal alpha.

Create : cet outil crée un nouveau displacement sur les faces choisies.

Destroy : supprime le displacement créé précédemment avec l'outil create.

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement04.jpg

Subdivise : Créez une surface douce de subdivision sur deux surfaces choisies ou plus de déplacement. (Create a smooth subdivision surface out of two or more selected displacement surfaces.)
Note : La subdivision d'un grand nombre de surfaces exige beaucoup de calcul, et peut prendre pas mal de temps.

Noise : Cet outil créera une déformation aléatoire du terrain selon les valeurs que vous rentrez en Min et Max. Si vous avez une valeur de 10 en Min et un Max de 50, les endroits les plus bas de votre displacement commenceront à 10 unités plus haut que là où se trouve la base de votre displacement, et les points les plus hauts seront à 50 unités plus haut que les points les plus bas.
Voici un exemple de noise avec un Min de 0 et un Max de 50 :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement05.jpg

Sew : Sew sert à assembler plusieurs displacements ensemble, qu'ils soient de même degré de subdivision ou pas, ou bien encore un displacement et un brush, nous en reparlerons plus bas dans le chapitre « Assemblage de plusieurs displacement (outil Sew) ».

ATTRIBUTES :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement06.jpg

Power : Degré de subdivision du displacement, valeur de 2 à 4.

Elev : Elève le displacement du nombres d'unité que vous indiquez.

Scale : étire le displacement dans le sens de la hauteur.

Voici un petit exemple :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement07.jpg

Apply : sert tout simplement à appliquer les trois paramètres Power, Elev et Scale.

MASKS & STATE:

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement08.jpg

Grid : En cochant Grid, vos edges blancs sur le displacement disparaîtront, pratique pour voir ce que ça donne dans le jeu.

Select : Les surfaces sélectionnées dans hammer sont mises en rouge, et de même pour les displacements, en cochant Select, la couche rouge disparaîtra.

Création d'un displacement classique

Commencez par créer un brush pas trop grand, 512*512 est idéal pour un brush de displacement :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement09.jpg

Cliquez sur l'outil « Toggle texture application » ou « shift+A », allez dans l'onglet Displacement, puis sélectionnez une des 6 faces du brush :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement10.jpg

Une fois la face sélectionnée, cliquez sur create, une petite fenêtre apparaît, vous demandant un nombre entre 2 et 4, ce nombre définira le degré de subdivision de la face, il pourra être modifié à tout moment :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement11.jpg

Voici une capture d'écran montrant les 3 niveaux de subdivision possible 2, 3 et 4 :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement12.jpg

Sélectionnez l'outil Paint Geometry, et modifiez comme bon vous semble le terrain. Clic-gauche pour élever le terrain, clic-droit pour rabaisser le terrain.

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement13.jpg

Voilà vous venez de créer un displacement classique.

Utilisation des textures blend

Les textures blend vous permettent de mélanger deux textures différentes sur une même surface de displacement en peignant le canal alpha. Le canal alpha contient des données au sujet de la transparence des deux textures assignées à la surface. Ceci peut être employé pour créer des transitions comme de l'herbe à la saleté, ou du sable à la roche...
Reprenez votre displacement créé précédemment, allez dans le browser de texture et tapez blend dans le champ filter.

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement14.jpg

Vous avez maintenant devant vous toutes les textures blend, si un matériau standard (non blend) est employé, les outils alpha n'auront aucun effet.

Choisissez la texture blend de votre choix, puis allez dans le Toggle texture application et enfin dans l'onglet Displacement.
Cliquez sur l'outil Paint Alpha :

À l'aide de l'outil « Raise/Lower » augmentez ou diminuez la valeur alpha des vertex affectés. Clic-gauche pour augmenter la valeur alpha, Clic-droit pour l'abaisser.
Le « value » détermine à quelle vitesse le canal alpha est peint.
Il y a différentes tailles et types de pinceaux, adaptés à différentes situations, je vous laisse découvrir tout ça.
L'outil « Smooth » fait la moyenne des valeurs alpha, lissant efficacement le canal alpha.
Voilà un aperçu de ce qu'on peut obtenir avec les textures blend :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement15.jpg

Assemblage de plusieurs displacements (outil Sew)

L'outil sew est employé pour assembler deux ou plusieurs displacements. Vous pouvez assembler des surfaces de déplacement dans n'importe laquelle des circonstances suivantes :
- Deux déplacements quelconques dont la base des surfaces partagent un bord commun ;
- Plusieurs displacements avec des degrés de subdivision différent ;
- Un displacement à un brush normal, tant qu'il partage un bord commun ;
- Une surface de déplacement avec une autre mais de taille différent.

Commencer par créer un displacement, puis dupliquez-le :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement16.jpg

Mettez les 2 bords côte à côte, comme sur le screen suivant :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement17.jpg

Sélectionner l'outil « Toggle texture application », allez dans l'onglet Displacement, et sélectionnez l'outil « select ».
Dans la vue 3d, sélectionnez un displacement, puis en laissant la touche CTRl enfoncée, sélectionnez l'autre displacement :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement18.jpg

Il ne vous reste plus qu'à appuyer sur le bouton sew, et les 2 displacements seront parfaitement assemblés.

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement18a.jpg

Voici quelques exemples de différents types d'assemblage possibles :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement19.jpg
Assemblage de deux displacements avec des degrés de subdivision différent
http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement20.jpg
Assemblage d'un displacement avec un brush normal
http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement21.jpg
Assemblage de deux displacements de taille différent

D'autres méthodes pour modifier les displacements

Vous pouvez découper votre displacement avec l'outil clipping tool comme bon vous semble, mais ça ne donne pas de très bons résultats.

Par contre l'outil vertex tool, peut être très utile, surtout si vous avez plusieurs displacements sélectionnés.

Exemple :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement22.jpg

Créer un trou dans un displacement

Créez un brush de la taille de votre choix, qui fera le displacement, pour ma part j'ai choisi 640*640*48.
Créez un deuxième brush de la taille de votre trou, et placez-le où vous voulez avoir le trou :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement23.jpg

Sélectionnez le petit brush (celui qui fera le trou) puis avec la touche CTRL sélectionnez le gros brush (celui pour le displacement), une fois ces deux brushes sélectionnés dans le bon ordre allez dans Tools>carve, une fois cette opération faite, supprimez le petit brush :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement24.jpg

Maintenant il vous faut dégrouper ces quatre blocs, utilisez donc l'outil « Ungroup selected groups » qui se trouve sur la barre d'outils supérieure :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement25.jpg

Sélectionnez les deux rectangles les plus grands puis cliquez sur l'outil vertex tool :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement26.jpg

À l'aide de cet outil, dans la vue 2D supérieure, choisissez le point faisant le coin, et déplacez-le vers le centre, comme montré ci-dessous, puis répétez l'opération pour les trois autres coins :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement27.jpg

Sélectionnez les deux autre rectangles, puis en utilisant de nouveau le vertex tool, faites comme sur le screen :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement28.jpg

Sélectionnez les 4 face, puis créez un displacement en utilisant create :

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement29.jpg

Et voilà, il ne vous reste plus qu'à déformer le displacement !

http://www.game-lab.com/images/tuts/hl2_displacement_mapping/displacement30.jpg

Conclusion

Voilà, maintenant vous devez être incollables sur les displacement, à vous de créer et de vous amuser avec les displacements map !