Les textures environnementales sont celles qui sont utilisées dans le modeleur 3D sur les quadpatch qui serviront à représenter l'environnement (sol et reliefs naturels).
Elles doivent être conçues selon un format très précis et ensuite préparées au sein de tileset (ensemble de tuiles d'un ensemble de textures similaires) elles-mêmes regroupées au sein d'une tilebank, qui permet de peindre l'environnement complet d'un type de continent.
Il faut créer des Tiles (tuiles) de 128×128 pixels exactement ou de 256×256, qui doivent impérativement respecter des contraintes de contenu : la bande de pixels en haut et en bas doivent être identiques au sein d'un même tileset, ainsi que la bande de droite et de gauche. Cela permet au système de surimposer ces deux bordures pour ne faire qu'un pixel au final dans le rendu.
Pour les textures de 256, il faut les envisager comme un assemblage de 4 tuiles de 128×128, il faut donc que la périphérie soit juxtaposable avec les tuiles de 128 du même tileset. Les parties centrales devront quant à elles être fondues l'une sur l'autre, comme si c'était deux tuiles de 128×128, il faut donc éventuellement en tenir compte dans son motif (les deux lignes de pixels au centre se confondront en une seule).
Exemple. Partons d'une image haut définition d'un sol : Gravel0031_1_L.jpg récupéré sur l'excellent site cgtextures.com.
Je la réduis de taille au quart, pour augmenter le piqué et le contenu de petites zones Je fais une sélection de 128×128 pixels, Ctrl+C / Ctrl+V > Coller comme nouvelle image J'ai désormais une image de 128×128 pixels
Je vais déjà la rendre répétable pour qu'elle soit visuellement non choquante quand on la recopie bout à bout. Il existe des filtres mais je tiens à contrôler la chaîne de bout en bout, et à rendre cela plus explicite pour ce tutoriel. Je fais Calque > Transformer > Décalage (Offset en anglais) J'obtiens donc un décalage de mon image qui part de : et on obtient : On devine les jonctions dues au décalage vers les parties médianes de l'image, je corrige donc cela avec l'outil Tampon par exemple, ou en redessinant manuellement, à ma convenance et j'obtiens : On peut alors éventuellement refaire un Décalage, pour retrouver l'image originale, mais désormais avec des transitions douces sur le pourtour. Pour être certain que les bordures correspondent parfaitement, je sélectionne une bande de 1 pixel tout en haut et je la copie tout en bas. Je fais pareil avec les bandes tout à gauche et tout à droite. Puis je sélectionne une bande 1 pixel tout autour de l'image et je la copie/colle dans un nouveau calque que je nomme “bordure” C'est cette bordure que je dois conserver pour chaque image. Je peux désormais faire d'autres sélections dans mon image de référence et les copier dans un calque sous cette bordure, leur appliquer les mêmes traitement qu'à l'image première et à chaque fois exporter le résultat dans un nouveau tga non compressé, en respectant les conventions de nommage pour les images d'un tileset : [NAME]-[128/256]-[ID]_[sp/su/au/wi].tga La partie [NAME] peut s'organiser en sous-parties à définir : par région, par surface de destination (sol/parois), par type de sol… Je sauvegarde mon fichier gimp avec le calque nommé comme le numéro de cette première tuile dans la série :
Je répète l'opération d'import de plusieurs sols et à chaque fois, je fais le décalage et je m'assure que la jonction avec le calque de bordure se fait de façon diluée. Je nomme chaque calque en fonction du numéro d'[ID] que le tga correspondant possède, de façon à pouvoir facilement retrouver/modifier ma source. Cela sera d'autant plus important lorsque je voudrai réaliser les tuiles correspondantes à une autre saison, en changeant les couleurs, ajoutant des détails ou autres. Il est bon de créer un minimum de 4 à 6 tuiles de 128×128 pour un tileset. Cela permet d'avoir un rendu varié. Pour plus de commodité, je range toutes ces premières tuiles dans un dossier de calque du nom et des caractéristiques de cette série :
Une Tilebank (bibliothèque de tuiles) est un ensemble (généralement lié à un écosystème) de Tilesets, groupe de tuiles (textures) présentant un type de surface. C'est avec cela que l'on peint sur les terrains.
Lancer le logiciel de création de TileBank C'est le logiciel tile_edit_r.exe (Windows only) dans les NelTools à télécharger et installer.
Cliquer gauche sur le bouton à côté de “Absolute path” Changer le chemin pour celui des tuiles de texture. Si vous partez d'une installation Ryzom Core, ce sera a priori :
W:\Database\landscape\_texture_tiles\
Cliquer sur Add land Appeler ce terrain à votre convenance (un nom d'écosystème semble le plus pertinent), 'ashtarie' dans notre exemple et cliquer OK. Cliquer sur Add tile set Appeler ce terrain (nom anglais chez nous, voir les Conventions de nommage) selon son aspect, cela sera plus commode de se repérer, 'grass' dans notre exemple
Cliquer sur 'Add tile set' pour avoir un second modèle de terrain pour cet exemple, vous devez en ajouter autant que vous en aurez besoin dans votre écosystème.
Appeler ce terrain (nom anglais chez nous, voir les Conventions de nommage) selon son aspect, cela sera plus commode de se repérer, 'moss' dans notre exemple et cliquer OK comme précédemment.
Sélectionner un Tileset ('grass' dans notre exemple) et faire Edit tileset Une nouvelle fenêtre apparaît, qui va permettre d'ajouter les images à ce tileset. On remarque plusieurs zones :
On va commencer par ajouter des textures de type Diffuse, 128×128 : on sélectionne donc ces deux options dans Texture et dans Tiles Clic-droit dans la zone vide à droite et sélectionner Add, naviguer jusqu'à l'endroit où sont conservées les tuiles de cette série (en TGA non compressé), toutes les sélectionner et valider. Elles sont ajoutées. Refaire la même chose pour les textures de 256×256, également de type Diffuse : on sélectionne ces deux options, clic-droit et sélectionner Add puis ajout des fichiers. Remarque : On peut ensuite ajouter des textures Additives, de la même façon mais je n'ai pas trouvé exactement à quel usage on destine ce genre de texture. J'en ai vu pour représenter les zones incandescentes à l'extrémité des branches de la Forêt Ardente de Ryzom, mais je ne sais pas exactement l'usage théorique.
Une fois ces textures enregistrées, on peut ajouter les textures de transition, qui permettront d'avoir des liaisons agréables à l'oeil entre les différents matériaux. Sélectionner Texture > Diffuse et Tiles > Transition Sélectionner chacune des textures dans la fenêtre de droite, clic-droit> Replace et choisir aléatoirement une autre texture dans la même série.
Sélectionner Texture > Alpha et Tiles > Transition
Faire clic-droit > Batch load et aller dans le répertoire 'Transitions' (si vous utilisez les données graphiques Ryzom Core) et choisir le 'alpha_noise_00.tga', cliquer ok. Une fenêtre demande si vous souhaitez utiliser la rotation des tiles alpha, accepter.
On peut ensuite ajouter si on le souhaite des tuiles de Displacement, c'est facultatif (et il n'est pas certain que ce soit implémenté). Sélectionner Tiles > Displace et remplir au moins 6 cases avec des textures en niveau de gris qui serviront à déformer le terrain.
Enregistrer tout cela, fermer et revenir à la fenêtre 'Tile bank manager'
Sélectionner sa tileset et indiquer dans 'Surface data' le numéro de surface de cette texture. Ces numéros conditionnent le son émis et les systèmes de particules utilisés lorsqu'on marche sur ce tileset.
Par défaut dans RyzomCore, on sait que :
12 : gazon
21 : poussière
Il est nécessaire de décliner les banques de textures environnementales en deux autres formats, grâce à des commandes dédiées :
Les fichiers obtenus devront être fournis au client en même temps que les .bank
. Il devront être placés correctement dans la hiérarchie des dossiers pour être bien pris en compte par le pipeline général.
Les bank
iront chacun dans le DatabaseDirectory dans un sous répertoire landscape
puis un autre _texture_tiles
et dans un dernier au nom de l'écosystème qu'ils contiennent.
Exemple : database/landscape/_texture_tiles/desert/desert.bank
Les farbank
iront dans le ExportBuildDirectory dans un sous répertoire ecosysteme
puis un autre du nom de l'écosystème et dans un dernier dénommé farbank
.
Exemple : export/ecosystems/jungle/jungle_au.farbank
Les smallbank
iront chacun dans le ExportBuildDirectory dans un sous répertoire ecosysteme
puis un autre du nom de l'écosystème et dans un dernier dénommé smallbank
.
Exemple : export/ecosystems/jungle/jungle.farbank
Il suffit finalement de sauvegarder la tilebank. Il n'y a plus qu'à l'utiliser pour texturer les terrains dans le modeleur avec le plugin adapté.