Le Terrain sous UnrealEd
Quelque chose de très agréable dans les jeux les plus récents est de pouvoir se balader en exterieur dans de grands terrains herbeux, sous un soleil radieux et de se faufiler entre les arbres, le tout entouré de bruits d'oiseaux, dans un magnifique couché de soleil, où au contraire d'être dans une plaine ravagée, sous une pluie battante, arme à la main, dans une tranchée boueuse, en train de regarder les autres mourir héroïquement au combat. Malheureusement, ce n'est pas si simple avec les moteurs actuels, les terrains étant souvent un peu difficile à gérer.
Heureusement, c'est simple avec le Moteur Unreal, le terrain étant tout simple à gérer une fois que les principes de base sont assimilés. Le terrain sous UnrealEd, est avant tout une texture en noir et blanc, représentant une vue de dessus du terrain, sur laquelle plus la valeur de gris est claire (et se rapproche du blanc), plus le point est élevé. Inversement, plus la valeur de gris est sombre (et se rapproche du noir), plus le point est bas. A partir de cette texture, le moteur créé une gigantesque pièce de géométrie formée de Quads. Un quad, dans ce contexte, est un ensemble de deux triangles formant un carré et donc une parcelle du terrain. Le terrain est ensuite divisé en secteurs, regroupant tous le même nombre de quads et nécessaires à l'optimisation : si un secteur n'est pas affiché, cela fait une grande partie du terrain qui n'est pas calculée et donc, cela optimise les performances. Inversement, dès qu'une minuscule partie d'un secteur est visible, tout le secteur est chargé, ce qui permet de rendre le tout plus fluide. Le mappeur s'occupe essentiellement de créer la texture en niveau de gris, que l'on appelle "HeightMap" (littéralement "carte des hauteurs), des textures qui sont appliqués sur le terrain, et de tous les éléments extérieurs.
Préparer
Le Terrain ne peut être placé que dans une zone particulière. De plus, pour avoir un terrain de dimensions respectables, il est préférable de voir toujours GRAND !
Nous allons commencer par soustraire un cube de dimensions 8192*16384*16384 (donc deux fois plus large et long qu'il n'est haut). Une fois soustrait, vous vous rendrez compte que ces dimensions sont vraiment gigantesques, et que donc le terrain sera immense. Que Nenni ! Une fois tout paramétré et le terrain créé, cela semblera petit, ou du moins, pas si grand que cela.
Donc, votre cube est soustrait. Les parois de ce cube ne seront pas affichées en réalité, car vous utiliserez une Skybox (qui est un des prochains tutoriaux de la série). Il est donc conseillé d'appliquer une texture voyante et que vous ne confondrez pas avec une autre : elle existe et est créé spécialement pour cet usage : dans le package WM_texture, dans le group Editor, se trouve une texture nommé "sky" : toute bleu avec le mot "Sky" marqué en blanc dessus. Choisissez là et appliquez là sur toutes les faces de votre cube. Je vous conseille d'aller dans les propriétés de vos surfaces et de l'agrandir 16 fois :
Votre Cube est créé. Avant de pouvoir commencer à faire quoi que ce soit, nous allons devoir ajouter un actor particulier : allez dans l'actor browser, et dans l'arborescence, cherchez l'actor "zoneinfo" situé ici :
Ajoutez-le au milieu de votre cube. Ouvrez ses propriétés. Pour des questions pratiques, je ne saurais trop vous conseillez d'aller dans l'onglet Display, et dans le paramètre "drawscale", mettre "5" pour multiplier la taille de la zoneinfo et la rendre plus visible (car votre cube est énorme et vous risquez de la perdre.
Ensuite, dans l'onglet "zoneinfo", Changez "bterrainzone" à True (vrai). Votre cube est maintenant prêt à accueillir votre terrain.
L'Heightmap
L'Heightmap est l'élément le plus important de votre terrain, car C'EST votre terrain. Deux manières sont possibles : vous pouvez la créer dans l'éditeur à partir de rien, ou créer la texture depuis un logiciel de dessin quelconque (même Paint fait l'affaire), et l'importer. Nous allons voir la méthode "éditeur", celle que vous utiliserez le plus souvent.
Création du terrain
La création du terrain se fait avec l'outil nommé "Terrain Editing Tool", il est représenté par des petites montagnes :
Cliquez donc sur cet outil, une fenêtre s'ouvre :
C'est là que vous allez travailler pour le terrain. Notez que vous pouvez fermer cette fenêtre simplement en cliquant sur l'outil "camera libre" dans la barre d'outil de gauche. Cliquez sur la petite page en bas à gauche de la fenêtre pour créer une nouvelle Heightmap, et donc un nouveau terrain :
Une nouvelle fenêtre s'ouvre (oui beaucoup de fenêtre vont s'ouvrir pendant ce tutorial), dans laquelle nous allons spécifier les dimensions de l'Heightmap.
La première ligne est "Package". Dans le champ de texte correspondant, entrez MyLevel. Faites attention à ne pas faire de Fautes : MyLevel est un package fantôme, qui s'intègre à votre map et évite d'avoir à créer et sauvegarder des packages extérieurs. Ne Sauvegardez Jamais le package MyLevel, même si l'éditeur vous le demande.
Dans la ligne group, entrez ce que vous voulez, ou laissez un blanc. Je mettrais "Terrainfo".
Dans la ligne "Name", entrez un nom pour votre Heightmap. Je vais l'appeler "Terrainmap1".
Les deux lignes en dessous, Xsize et Ysize sont très importantes : il s'agit de la taille de votre terrain. Mais attention ! Si il y a marqué "256", ce n'est pas que votre terrain fera 256 unités de cotés : les dimensions que vous entrerez ici sont le nombre de quad de long de votre terrain. Sachant qu'un Quad mesure 64 unités, votre terrain fait donc pour l'instant 256 quads de coté, il mesure en réalité 256*64=16384. Donc, laissez à 256. Rappelez-vous donc que quand vous ferez des terrains, la valeur que vous devrez inscrire dans ces deux cases est égale à la taille du cube que vous avez soustrait, divisés par 64. Cliquez maintenant sur "OK".
Plusieurs choses se passent : d'abord, un actor supplémentaire est apparu dans votre map, qui est identique au terrain editing tool : de petites montagnes dans un carré.
De plus, quelque chose est apparue dans la fenêtre du terrain editing tool : votre Heightmap est trouvée et reconnue. A ce stade, votre terrain existe presque : pour le matérialiser, il faut assigner une texture au terrain. Là ca va devenir plus complexe.
Les Layers
Les Layers sont un système assez casse-pied à comprendre, mais qui est indispensable car il sert à ajouter les textures du terrain. Pour commencer, rebuildez votre carte et passez en mode wireframe :
Comme vous le voyez, votre terrain est là ! Il existe, malheureusement, n'ayant pas de texture, il n'est pas visible et n'a pas d'existence physique : il existe en théorie, mais si vous placez un playerstart, vous verrez que vous passerez à travers. Pour le rendre solide, il faut ajouter un LAYER.
Dans le Terrain Editing Tool, allez dans l'onglet "Layer" :
Comme vous le voyez, aucune texture n'est assignée à votre terrain.
Pour remédier à cela, la première chose à faire est de choisir une texture que nous voulons appliquer. Nous allons commencer par une texture d'herbe tout ce qu'il y a de plus classique : choisissez-en une dans le package "ArboreaTerrain", et sélectionnez-là :
Ensuite, dans le Terrain Editing Tool, dans l'ongle "Layer", cliquez sur la première case rouge marquée "UNDEFINED", puis sur le bouton "New". : Une nouvelle fenêtre s'ouvre :
Nous allons devoir entrer plusieurs propriétés :
- Package : Mettez encore MyLevel, c'est TRES IMPORANT !
- Group : Ce que vous voulez, je mets en général "Layers"
- Name : le mieux est de donner un nom explicite pour quand vous jonglerez avec différentes textures : ici, mettez Herbe1.
Les deux cases suivantes : Alpha Height et AlphaWidth sont des propriétés particulières. Sachez que vous devez TOUJOURS mettre les même valeurs que vous avez mis à la taille de votre Heightmap, soit ici, 256 et 256.
Ensuite, entre en jeu l'Alphafill. L'alphafill est une propriété qui sert à déterminer le degré de transparence par défaut de votre texture. Quand vous ajoutez la PREMIERE texture de votre terrain, comme nous sommes en train de le faire, il faut IMPERATIVEMENT que cette texture soit blanche : cliquez donc sur le petit "+" à coté de Alphafill et entrez les valeurs suivantes : A=0, B=255, R=255, G=255 :
Cliquez en suite sur "OK". Si vous aviez déjà rebuildez, votre terrain apparait d'un coup ! Sinon, vous devrez rebuilder pour le voir apparaitre sous vos yeux ébahis :
Il va falloir commencer à modeler le terrain avant d'aller plus loin, et c'est la partie la plus intéressante, donc vous avez de la chance !
Mettre un terrain en forme
Pour mettre en forme votre arpent de terre, le Terrain Editing Tool vous propose toute une variété de fonctions que nous allons explorer en détail.
Avant d'aller plus loin, dans le Terrain Editing Tool, cliquez sur l'onglet "Terrain" et sélectionnez votre Heightmap. En effet, certains outils ont des fonctions sur le terrain en lui-même, mais ont aussi des effets sur les textures, que nous étudierons plus tard, c'est le cas des outils "Painting", "Smoothing", "Noise" entre autre :
Nous allons pouvoir commencer.
Vertex Editing : c'est l'outil sélectionné par défaut, et sans doute, le plus utile. Tout d'abord, quand vous placez vore souris sur le terrain, vous remarquerez que votre pointeur a une forme bizarre : un point rouge et deux cercles jaunes placez autour : le point rouge signale le vertex centrale : c'est le centre de votre pinceau. Les deux cercles jaunes déterminent l'étendue de votre travail : ce qui est à l'intérieur du premier cercle est fortement affecté par vos actes, ce qui est dans le deuxième cercle l'est moins, ce qui est hors des cercles n'est pas touché. Vous pouvez modifier la largeur des deux cercles avec les deux petites jauges "inner radius" et "outer radius" du terrain editing tool. Pour utiliser le vertex editing, cliquez sur votre terrain en ayant sélectionné l'outil dans la liste sur la gauche (dans le terrain editing tool) :
Tous les vertices sous votre pinceau son sélectionnés. Ils ne sont pas tous de la même couleur : plus un vertex est clair, plus l'effet de vos actions sera fort. Plus il est foncé, moins il sera affecté.
Rien qu'avec cet outil, il est possible de créer une grande partie du terrain : une fois que des vertices sont sélectionnés, vous pouvez les monter et les descendre en appuyant simultanément sur la touche "control" et les deux boutons de vore souris. Bougez ensuite votre souris vers l'avant ou l'arrière pour monter ou baisser le niveau de votre terrain :
Maintenant que vous maitrisez cet outil, vous pouvez déjà modeler grossièrement votre terrain, et nous l'affineront après. Essayez de placer un creux pour un futur lac, des montagnes autour de votre map et bien sur quelques paliers à l'intérieur pour faire varier la hauteur et rendre le tout plus réaliste et intéressant.
Une fois que vous avez créé une partie de votre terrain à l'aide de cet outil, observez le résultat :
Painting : Un autre outil pour modifier votre terrain est l'outil painting. Il est très puissant et c'est là son problème : il n'est pas du tout progressif. Aussi, il vous faudra ajuster le paramètre "Strenght", dans le terrain editing tool, qui détermine la force de votre pinceau. Pour l'outil Painting, n'hésitez pas à la réduire à moins de 50 % : 40% est un bon compromis.
Ensuite, placez votre pinceau sur votre terrain. Appuyez sur la touche "control" de votre clavier et bougez votre souris en gardant le bouton gauche enfoncé : le terrain au dessus duquel vous passez s'élève. Vous pouvez le baisser en répétant l'opération mais en utilisant le clic droit. Si le résultat est plus lisse que le vertex editing il est aussi plus difficilement contrôlable. Voici une autre partie de mon terrain après avoir utilisé l'outil painting :
Bien que le résultat soit plus crédible, il subsiste un défaut majeur : tout est trop abrupt et le sol est parfaitement plat entre quelques petits monts. Bref, ce n'est pas REALISTE. Heureusement qu'il existe un outil très puissant pour remédier à cela.
Smoothing : Littéralement "lissage", le Smoothing permet d'adoucir les reliefs escarpés des terrains et à rendre plus douces les pentes. De la même manière que l'outil painting, il est excessivement puissant, et il faudra ajuster le paramètre "Strenght" avec beaucoup de modération.
La meilleure manière d'utiliser cet outil est de le passez d'abord rapidement sur les montagnes pour les rendre plus lisses, puis de passer lentement sur leurs flancs pour adoucir les pentes et les prolonger en grignotant le terrain plat, gagnant ainsi en relief et en réalisme. Une combinaison "modelage grossier avec le painting"+ Smoothing donne rapidement des résultats agréables et réalistes :
Le Terrain que nous avons commencé étant très étendu, ne vous forcez pas à modeler le Terrain en entier, une partie suffira largement à tout ce que nous ferons.
Texturez un Terrain
Votre Terrain est entièrement recouvert de la texture que vous avez choisie au début. Or, l'herbe à 300m mètres de hauteur c'es peu crédible. Ouvrez le Terrain Editing Tool et cliquez sur l'onglet Layer. Logiquement, vous avez votre Texture et de nombreuses cases rouges "Undefined". Pour commencez, choisissez une texture de pierre dans le texture browser :
Cliquez sur la première case rouge, puis sur le bouton "New"; Dans le petit pop-up qui s'ouvre, mettez le package MyLevel, le même groupe que tout à l'heure, un nom comme "roche1", puis, dans Alphafill, mettez A à 255 e laissez R, G et B à 0, puis cliquez sur OK :
Assurez-vous que votre nouveau Layer est bien sélectionné, puis choisissez l'outil Painting. Mettez le paramètre Strenght à 100%, réduisez le Pinceau, puis, en maintenant la touche CTRL et le bouton gauche de la souris enfoncés, passez le pointeur sur vos montagnes :
Votre Layer se place déjà sur le terrain. Passez le pinceau sur toutes vos montagnes :
Le Résultat est déjà plus normal, mais il subsiste pas mal de défauts. Pour commencer, les textures sont trop petites et leur répétition est très visible. Le résultat est très disgracieux. Pour régler le problème, choisissez l'outil "Tex Scale", qui se trouve être le dernier de la liste. Une fois qu'il est sélectionné, vous pouvez étirer vore texture en maintenant la touche CTRL enfoncé ainsi qu'un des boutons de la sourie. Si vous procédez avec le bouton gauche, vous étirez la texture sur l'axe Y, et si vous le faites avec le bouton droit, vous le faites sur l'axe X. En à peine cinq secondes, vous obtenez un résultat bien plus satisfaisant :
Vous pouvez étirer aussi la texture de base qui est également très répétitive. Mais on ne peut pas s'arrêter là : choisissez une texture entre roche et Herbe (la première du package Arborea par exemple), et dans l'ongle Layer, cliquez sur la troisième case (qui devrait être la première à être marquée "Undefined". Cliquez sur new, et mettez les mêmes paramètres que pour la texture précédente, mais en changeant le nom en Roche+herbe. Appliquez la texture à toutes les jonctions entre roche et herbe, puis étirez là raisonnablement :
Ca prend forme. Pour Terminer, vous n'avez qu'à ajouter autant de Layers que vous en avez besoin. Dans mon cas, il fallait une texture pour le fond du lac et une pour le rivage, une pour faire un sentier de Terre et une pour assurer la transition avec l'herbe, et deux trois petites choses juste pour faire joli : voici le résultat de mes textures (N'hésitez pas à multiplier les layers juste pour décorer, ça sera même tant mieux).
Il y a encore au moins un ou deux défauts sur ce Terrain : D'abord les textures sont très bien mises, mais elles tranchent énormément les unes avec les autres, il faudrait que la transition entre chaque soit plus "douce".
Cela peut se faire avec l'outil "Smoothing". Si vous sélectionnez un de vos layer au lieu de sélectionner vore Heightmap, l'outil n'adoucira pas les pentes mais rendra meilleures les transitions entre les différentes textures. Faites le successivement avec toutes vos textures, en passant le pinceau sur les transitions entre texture.
Au final, on a un terrain plus "propre" dirons-nous :
Maintenant que vous savez faire un terrain et le texturer, intéressons-nous à d'autres outils que nous n'avons pas encore utilisés : Flatten, et quelques autres :
Outils en vrac
Flatten : Régulièrement, vous ferez une montagne ou un gouffre et vous vous apercevrez qu'elle est ratée, ou mal placée ou juste que finalement, vous n'en avez pas besoin. Vous ne pourrez pas aplatir le terrain avec les outils que vous avez vu jusqu'ici, il restera forcement des creux et des bosses.
Vous pourrez résoudre le problème avec l'outil flatten. Sélectionnez-le et sélectionnez votre Heightmap (si vous gardez un layer sélectionné, ça ne marchera pas) :
L'outil flatten est simple : maintenez la touche contrôle et le bouton gauche de la souris enfoncé. Tout le terrain sur lequel vous passerez prendra l'altitude du point d'où vous êtes parti :
Vous pouvez ainsi combler un gouffre ou aplatir une montagne.
Visibility : c'est un outil qui permet de supprimer des quads. Son intérêt peu sembler un peu limiter, mais en fait, il permettra de supprimer les quads invisibles de votre terrain (ceux qui sont derrière une montagne derrière laquelle on ne peut pas passer). De plus, il peut vous permettre de creuser des tunnels dans une montagne (en utilisant des brushes, vous pouvez faire un couloir à travers la montagne).
Pour l'utiliser, rien de plus simple : sélectionnez-le, réglez la taille de votre pinceau, maintenez control et le bouton droit de la souris enfoncés. En le passant sur votre terrain, vous supprimez les quads. Vous pouvez les remettre en procédant de la même façon, mais en utilisant le bouton gauche de la souris au lieu du droit.
Tex Rotate /Tex Pan. Ces deux outils, comme leur nom l'indique, permettent de faire tourner ou de décaler des textures. Comme d'habitude, control+ un des boutons de la souris pour les faire fonctionner. Sur mon terrain, cela sera utile car les textures du rivage et du fond du lac sont les même mis à part leur couleur, aussi leur similitude est très visible, en en pivotant une, cela passera mieux. Je ferais la même chose sur ma texture de roche :