Les Decolayers
Intérêt du Decolayer
Le problème quand on vient de créer un terrain tout beau tout propre tout neuf, avec une belle Skybox et tout le tralala, c'est qu'il est relativement plat : pas de rochers qui sortent du sol, pas d'herbe folles qui viennent vous chatouiller les pieds etc. Si vous utilisez des Static-Mesh, la manipulation peut être longue suivant l'étendue de votre terrain. De plus, votre herbe sera tout ce qu'il y a de plus solide, et il faudra retirer la collision de chaque Static-Mesh à la main ce qui sera long pas franchement passionnant. Heureusement que l'on vient à votre secours.
Le Decolayer est un outil spécial du Terrain Editing Tool qui permet d'appliquer facilement des Static-Mesh sans collision ni ombres de végétations ou de détails sur un terrain. Il fonctionne un peu à la manière de layers qui appliquent des textures : une texture dite "alpha" est choisie, et sert à déterminer la densité des Static-Mesh sur chaque zone de la map. Mais assez de théorie, passons aux actes.
Decolayer en action
Voilà le terrain qui me servira d'exemple : il est tout ce qu'il y a de plus bête : une Skybox, une zoneinfo et un terrainfo. Dans un premier temps, il faut choisir le Static-Mesh d'herbe que vous allez appliquer sur votre terrain. Si vous voulez mettre plusieurs Statics à la fois, il faudra, il faudra créer plusieurs Decolayers. Commençons :
Dans le Static-Mesh browser, j'ai choisi le package arborea hardware, group Organics, Static-Mesh ArbGrassA :
Bien, maintenant, il va falloir créer un layer dédié à ce Static-Mesh et le paramétrer. Dans le terrain Editing Tool, ouvrez l'onglet "Decolayer". Le grand champ vide va regrouper vos Decolayers et vous permettre de les gérer. Cliquez sur NEW et plusieurs infos ainsi que trois cases rayées apparaissent :
Il va falloir maintenant entrer un alpha et votre Static-Mesh pour pouvoir appliquer ce Decolayer. Pour appliquez le Static-Mesh, rien de moins compliqué : cliquez droit sur une des trois cases et choisissez "set Static-Mesh from current". Le champ "no Static Mesh" est remplacé par le nom de votre Static.
Rien d'autre ne se passe ? Pas d'herbe sur le terrain ? Normal, le moteur sait quel Static-Mesh vous voulez mais il ignore où vous voulez le placer. Il va falloir créer une texture spécial que nous allons lui donner et qui servira comme d'une "heigtmap de Static-Mesh" : les zones sombres seront recouvertes d'herbe, alors que les zones noires seront absolument vide. Le mieux est de créer une texture tout blanche puis de l'appliquer, avant d'éditer le résultat à la main : créer une image sous paint, de la même taille que votre heightmap, que vous laisserez totalement blanche, et importez cette texture dans MyLevel. Ensuite, sélectionnez cette texture.
Cliquez droit sur votre Decolayer et choisissez "Set Density Texture From Current". Le moteur sait maintenant ce qu'il doit faire ! Si vous observez votre terrain avec espoir, vous vous apercevrez qu'il n'y a toujours pas l'ombre d'un brin d'herbe sur votre belle plaine. En effet, il y a maintenant des réglages à faire à la main pour fignoler : ouvrez les propriétés du Terrainfo lui-même :
Et là vous allez voir que ce n'est vraiment pas aussi compliqué que ca en a l'air. Dans les propriétés du terrainfo, onglet TerrainInfo, cliquez sur le petit "+" à coté de Decolayer, puis sur le petit "+" du champ qui apparait en dessous. La liste de propriété est longue :
Align To Terrain : Par défaut à 0, cette propriété force les Static-Mesh d'herbe à être perpendiculaire à la surface du terrain. Si vous mettez 1, tout les Static-Mesh pointeront vers le ciel, parfaitement droit. Sur une pente, l'effet sera affreux car l'herbe ne suivra pas la courbure de la pente. Laissez donc à 0.
Color Map : Propriété très particulière et à ne jamais utiliser : si vous y entre une texture, les Static-Meshes prendront la couleur de la texture. Bref, un effet ignoble.
Density Map : Pas touche ! Il s'agit de la texture que vous avez entrée pour que le moteur sache où placer l'herbe.
Density multiplier : Utile si vous trouvez votre herbe trop touffue ou trop clairsemée : plus vous augmentez vers 1, plus la densité de l'herbe est importante. Plus vous descendez vers 0, plus la densité est faible.
Détail Mode : si vous voulez que l'herbe ne s'affiche qu'à partir d'un certain niveau de détail, pour ne pas ralentir les machines les moins puissantes, augmentez cette propriété.
Disregard Terrain Lightning : Une propriété à laisser à 0 : si vous la mettez à 1, tout les Static-Mesh de l'herbe seront éclairé uniformément à fond, ils seront en "Unlit" blanc. Laissez à 0 pour que l'herbe reçoive l'éclairage de la map.
Draw Order : A laissez comme elle est, cette propriété est particulière : elle permet de modifier l'ordre du rendu. Cela permet de voir les Static-Mesh lointain PAR DESSUS les Static-Mesh proche et vice-versa. Par défaut, il est à NoSort, et l'effet est très moyen : si vous vous aplatissez contre votre terrain et que vous regardez au loin, une partie de votre herbe est supprimé pour afficher à la place... L'herbe lointaine. Ayez à l'esprit que les éléments rendus en premiers sont recouverts par les éléments tracés en dernier, donc dans notre cas, il faut que les Static-Meshes lointains soient rendus en premier pour que les plus proche soient dessinés à l'écran après eux, et les recouvre. Mettez donc cette propriété à SORT_BackToFront.
Fade Out Radius Voici la propriété qui va faire apparaitre l'herbe. Par défaut, min et max sont à 0. Donc l'herbe n'est pas rendue. Il faut modifier le max pour que votre végétation apparaisse. En effet, la propriété min défini à partir de quelle distance, les Static-Mesh proche disparaissent, et la propriété Max défini à quelle distance les Static-Meshes lointains disparaissent. Le mieux est de monter la propriété Max à environ 2000 pour que l'herbe soit présente sur une bonne distance autour du joueur, et de laisser le min à 0 pour que l'herbe vienne jusque sous ses pieds.
Lit Directionnal : Je ne sais pas ce que cherche à faire cette propriété, mais elle fusille l'éclairage de l'herbe. A ne pas toucher donc.
Max Per Quad : défini le nombre de Static-Mesh qui apparaissent sur UN QUAD de terrain. Suivant la taille de votre terrain, il peut être judicieux de baisser cette propriété pour ne pas que de trop nombreux Static apparaissent sur de toute petite zones. Laisser ceci à 1 est en général une bonne idée.
Random Yaw Permet de modifier aléatoirement l'inclinaison des Static. Laissez ce champ comme il est.
Scale Map devrait servir à définir des zones ou les Static-Mesh sont plus ou moins grand. On laisse ce champ vide encore une fois.
Scale Multiplier Très important car cela va permettre de définir des tailles pour vos Static-Meshes d'herbe. Chaque champ (X, Y et Z) a un min et un max. Cela devrait vous permettre de trouver une taille maximale et une minimale et de choisir cet écart. Dans le cas de mon Static, il vaut mieux éviter de laisser la taille actuelle à 1, car chaque touffe est presque haute comme un joueur. Pour donner une impression de savane avec de l'herbe jusqu'à la taille, je vais diviser la taille des herbes par au moins deux. Dans tous les champs, je mets donc max 0.5, et min 0.4.
Seed Modifie aléatoirement la position des Static-Mesh, laissez à 0.
Show On Invisible Terrain : Si elle est laissée à 0, cette propriété empêche l'herbe d'apparaitre sur des parties du terrain rendu invisible avec l'outil Visibility. Si vous mettez 1, le Decolayer sera rendu même sur les quads invisibles. L'intérêt de cette propriété peut semble limité, mais si vous voulez au sommet de montagnes inaccessibles, une forêt qui consomme peu de ressource, que le joueur n'est jamais censé toucher ou approcher de trop près, vous pouvez mettre cette propriété à 1, placer vos arbres, et supprimer le terrain avec l'outil visibility, ce qui améliore les performances du jeu.
Show On Terrain Si cette propriété est à 0, le Decolayer n'apparait pas. Si vous le laissez à 1, il est rendu normalement.
Static Mesh Il s'agit du Static-Mesh d'herbe que vous avez spécifié.
Voilà, rien de plus facile que de mettre de bonnes propriétés. Dans mon cas, ayant réduit la taille de mes Static-Mesh à un écart compris entre 0.5 et 0.4 de leur taille originale, je trouve que les touffes sont trop clairsemées. Je vais donc augmenter MaxPerQuad à 4.
Bien, bien. Mais vous allez avoir de l'herbe partout maintenant.
Pas la peine de se torturer l'esprit en modifiant la densitytexture, il suffit de prendre l'outil Painting, de sélectionner votre Decolayer, et de le passer sur votre terrain en cliquant gauche pour ajouter des Static, et droit pour en supprimer :
Voilà, a noter que les Static-Mesh créé avec des Decolayers n'ont ni ombre ni collisions, vous ne pouvez donc pas les utiliser pour faire une forêt, à moins que vous ne soyez prêt à passer beaucoup de temps à placer des blockings volumes et des projectors. C'est à n'utiliser que pour l'herbe et les décors que les joueurs ne peuvent que voir, jamais atteindre.