====== Conception et préparation des textures environnementales ====== Les textures environnementales sont celles qui sont utilisées dans le modeleur 3D sur les quadpatch qui serviront à représenter l'environnement ([[fr:generation_de_zone|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. ===== Créer les images ===== Il faut créer des Tiles (tuiles) de 128x128 pixels exactement ou de 256x256, 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. {{ tiling_01.png?direct&300 |}} Pour les textures de 256, il faut les envisager comme un assemblage de 4 tuiles de 128x128, il faut donc que la périphérie soit juxtaposable avec les tuiles de 128 du même tileset. {{ tiling_02.png?direct&300 |}} Les parties centrales devront quant à elles être fondues l'une sur l'autre, comme si c'était deux tuiles de 128x128, 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 : [[http://www.cgtextures.com/texview.php?id=5611&PHPSESSID=k872lvlfkds965i1un8a43o4b1|Gravel0031_1_L.jpg]] récupéré sur l'excellent site [[http://www.cgtextures.com|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 128x128 pixels,// Ctrl+C / Ctrl+V > Coller comme nouvelle image// J'ai désormais une image de 128x128 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) {{ tiling_03.png?direct&300 |}} J'obtiens donc un décalage de mon image qui part de : {{ tiling_04.png?direct&300 |}} et on obtient : {{ tiling_05.png?direct&300 |}} 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 : {{ tiling_06.png?direct&300 |}} 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" {{ tiling_07.png?direct&300 |}} 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 : {{ tiling_08.png?direct&300 |}} 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 128x128 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 : {{ tiling_09.png?direct&300 |}} ===== Créer la Tilebank ===== 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 [[http://ryzomcore.atlassian.net/wiki/display/RC/Downloads+for+Windows|NelTools]] à télécharger et installer. Cliquer gauche sur le bouton à côté de "Absolute path" {{ tile_bank_manager_step_00.png?direct&300 |}} 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\ ==== créer le premier type de terrain ==== Cliquer sur //Add land// {{ tile_bank_manager_step_a.png?direct&300 |}} Appeler ce terrain à votre convenance (un nom d'écosystème semble le plus pertinent), '//ashtarie//' dans notre exemple {{ tile_bank_manager_step_b.png?direct&300 |}} et cliquer //OK//. {{ tile_bank_manager_step_c.png?direct&300 |}} Cliquer sur //Add tile set// {{ tile_bank_manager_step_d.png?direct&300 |}} Appeler ce terrain (nom anglais chez nous, voir les [[http://khaganat.ninm.net/wikhan/fr:todo:dessiner:3d:les_conventions_de_nommage|Conventions de nommage]]) selon son aspect, cela sera plus commode de se repérer, 'grass' dans notre exemple {{ tile_bank_manager_add_tileset_to_land_a.png?direct&300 |}} {{ tile_bank_manager_add_tileset_to_land_b.png?direct&300 |}} cliquer OK. {{ tile_bank_manager_add_tileset_to_land_c.png?direct&300 |}} ==== Créer un second type de terrain ==== 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 [[http://khaganat.ninm.net/wikhan/fr:todo:dessiner:3d:les_conventions_de_nommage|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. ==== Attribuer les textures aux Tilesets ==== Sélectionner un Tileset ('grass' dans notre exemple) et faire //Edit tileset// {{ tile_bank_manager_edit_land.png?direct&300 |}} Une nouvelle fenêtre apparaît, qui va permettre d'ajouter les images à ce tileset. On remarque plusieurs zones : * //Texture// : qui permet d'indiquer la nature de la texture, diffuse ou additive (alpha ne peut être choisi //Size// : qui influe sur la taille avec laquelle la texture sera utilisée dans l'éditeur ; * //Texte info// : Qui permet d'afficher soit le numéro d'index soit le nom de chaque image en dessous dans la partie droite * //Tiles// : qui indique de quel type de tuiles (tiles) il s'agit : leur taille pour les textures affichées ou s'il s'agit de texture de transition (des tuiles avec un alpha qui permettent des transitions entre tilesets) ou encore de Displace (qui altère visuellement la géométrie du sol pour le rendre moins uniforme). {{ tile_bank_manager_add_bank.png?direct&300 |}} === Les textures Diffuse === On va commencer par ajouter des textures de type Diffuse, 128x128 : on sélectionne donc ces deux options dans Texture et dans Tiles {{ tile_bank_manager_add_diffuse_128.png?direct&300 |}} Clic-droit dans la zone vide à droite et sélectionner //Add//, {{ tile_bank_manager_add_menu.png?direct&300 |}} 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 256x256, é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. === Les textures de transition === 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// {{ tile_bank_manager_add_diffuse_transitions.png?direct&300 |}} 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// {{ tile_bank_manager_add_alpha_transitions.png?direct&300 |}} 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. === Les textures de displacement === 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. {{ tile_bank_manager_add_displacement.png?direct&300 |}} === Lier les tilesets à des effets de contact === 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 ==== Produire les smallbanks et farbanks ==== Il est nécessaire de décliner les banques de textures environnementales en deux autres formats, grâce à des commandes dédiées : * [[fr:outils_rc2#build_far_bank|build_far_bank]] pour chacune des quatre déclinaisons saisonnières ; * [[fr:outils_rc2#build_smallbank|build_smallbank]] pour juste le fichier principal sans déclinaison saisonnière. Les fichiers obtenus devront être fournis au client en même temps que les ''.bank''. Il devront être placés correctement dans la [[fr:pipeline_emplacements|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'' ==== Utilisation dans 3DSMax ==== Il suffit finalement de sauvegarder la tilebank. Il n'y a plus qu'à l'utiliser pour [[fr:generation_de_zone|texturer les terrains]] dans le modeleur avec le plugin adapté. {{tag>3D Textures Graphisme Tutoriel client_rc_obsolete Obsolète}}