Aller au contenu

« Réunion du 08-02-2022 » et « Modéliser un terrain en 37 Textures pour OpenSim » : différence entre les pages

De OSWiki
(Différence entre les pages)
 
Balise : Révocation manuelle
 
Ligne 1 : Ligne 1 :
Source : http://opensimulator.org/wiki/Chat_log_from_the_meeting_on_2022-02-08
= Modélisation du terrain  dans [https://www.blender.org/ Blender 3D] =
= Introduction =
<br>
* [http://opensimulator.org/wiki/Development_Team/fr Development_Team/fr]
<big><big>Tout au long du tutoriel, dans Blender 3D,
<pre>
* ne pas oublier de placer le pointeur de la souris dans l'éditeur concerné par les commandes envoyées par une ou plusieurs touches du clavier ou par des boutons de la souris.
[11:02] Gavin.Hird @grid.xmir.org:8002 : Salut Andrew, Kayaker
* sauvegarder souvent le fichier blender.</big></big>
[11:02] Andrew Hellershanks : Bonjour à tous.
<br>
[11:02] Misterblue Waves : Bonjour à tous !
== Utiliser l'add-on A.N.T.Landscape ==
[11:02] Kayaker Magic : Bonjour à tous !
=== Add-on A.N.T.Landscape ===
[11:02] Andrew Hellershanks : Hey, Misterblue
* Suivre [[Terrain_en_mesh_et_height_map#Utiliser_l'add-on_A.N.T.Landscape_dans_Blender3D |le tutoriel '''Utiliser l'add-on A.N.T.Landscape dans Blender3D''']].
[11:03] Kayaker Magic : Misterblue ! Ça fait longtemps qu'on ne s'est pas vu ! Content de te voir ici !
[11:04] Misterblue Waves : je revisite mes anciens projets et mes anciens terrains de jeu :)
[11:04] Jamie.Jordan @grid.kitely.com:8002 : Mister Blue bienvenue mon ami
[11:05] Ubit Umarov : Bonjour !
[11:05] Gavin.Hird @grid.xmir.org:8002 : Bonsoir Ubit
</pre>


= Moteurs de jeux pour projets de Viewers =
=== Options de l'add-on ===
* [https://fr.wikipedia.org/wiki/Unity_%28moteur_de_jeu%29 Unity] : moteur de jeu multiplateforme répandus dans l'industrie du jeu vidéo, aussi bien pour les grands studios que pour les indépendants.
* [https://fr.wikipedia.org/wiki/Unreal_Engine Unreal Engine] :  moteur de jeu vidéo propriétaire développé par Epic Games.
* [https://en.wikipedia.org/wiki/Xenko Xenko /Sride] :  Stride, alors appelé Xenko, était à l'origine mis à disposition par Silicon Studio sous un modèle de double licence, disponible pour tous sous GNU GPLv3, avec des termes de licence alternatifs, payants, disponibles pour ceux pour qui les termes de copyleft de la GPL sont un obstacle à l'adoption[1] Le 2 août 2018, le développeur Virgile Bello a annoncé sur le blog Xenko que Silicon Studio avait abandonné le support du projet et ré-licencié Xenko 3.0 sous la licence MIT. Contrairement à l'accord antérieur de double licence selon lequel le moteur était disponible en tant que logiciel libre et open-source mais l'éditeur restait propriétaire, dans le cadre du nouvel accord, le moteur et l'éditeur sont tous deux disponibles sous la licence MIT[2].
* Stride : https://www.stride3d.net/
* [https://fr.wikipedia.org/wiki/Godot_%28moteur_de_jeu%29 Godot] : est un moteur de jeu multiplateforme, logiciel libre sous licence MIT.
<pre>
[11:05] Kayaker Magic : En parlant d'anciens projets, j'ai entendu une rumeur selon laquelle la licence pour Unity a changé et qu'elle pourrait être intéressante maintenant pour que le nouveau projet du viewer de Melane continue.
[11:06] Ubit Umarov : nous n'avons jamais fait ça dans unity.
[11:06] Kayaker Magic : Quel moteur a-t-elle utilisé ? Je pensais que c'était unity.
[11:06] Ubit Umarov : unreal
[11:07] Ubit Umarov : puis un début de reprise dans xenko, maintenant Stride.
[11:07] Andrew Hellershanks: Stride?
[11:08] Motoko.Karu @login.digiworldz.com:8002: https://www.stride3d.net/
[11:08] Ubit Umarov : oui, je pense que c'est son nom maintenant.
[11:08] Motoko.Karu @login.digiworldz.com:8002 : désolé... lag
[11:08] Ubit Umarov : Oui, merci.
[11:08] Motoko.Karu @login.digiworldz.com:8002 : np
[11:09] Andrew Hellershanks : Oh, c'est ce qu'on appelait autrefois Xenko.
[11:09] Misterblue Waves : J'ai recommencé à travailler sur mon viewer. La première version est basée sur un navigateur mais la prochaine sera basée sur ce qui convient (unreal, godot, stride, ...).
</pre>
=Viewers - Texte uniquement =
* [http://opensimulator.org/wiki/Compatible_Viewers/fr#Viewers%20-%20Texte%20uniquement Compatible_Viewers/fr# Viewers - Texte uniquement ]
* [https://radegast.life/about/ Radegast] : Radegast-ng est un client léger pour les plateformes Second Life et OpenSimulator.
* Lumiya : La version 3.2 de Lumiya peut toujours être téléchargée via SlideMe mais elle coûte 2,95 $. Cette application a été mise à jour pour la dernière fois le 27 novembre 2016. Lumiya est un client Second Life et OpenSim offrant une vue du monde en 3D. [https://danielvoyager.wordpress.com/2021/04/27/2021-mobile-apps-for-second-life/ Source.]
* [https://docs.blender.org/manual/fr/dev/render/eevee/introduction.html Evee  : Moteur de rendu Blender]
* ClienWiew :"Lorsque le serveur reçoit un message dans UPDServer, il utilise Packet.BuildPacket pour créer un nouvel objet, et l'envoie au ClientView correct, qui assemble ces informations dans un événement qui change l'état de la simulation." [[http://opensimulator.org/wiki/LibSecondLife_performance_problems |source]]
<pre>
[11:09] Vincent.Sylvester @hg.zetaworlds.com:8002 : Nous avons vraiment besoin d'un bon viewer texte, un qui soit mis à jour plus régulièrement et qui fonctionne réellement.
[11:10] Ubit Umarov : radagast ne fonctionne pas ?
[11:10] Vincent.Sylvester @hg.zetaworlds.com:8002 : C'est le cas, sauf si votre mot de passe est trop long.
[11:10] Ubit Umarov : :)
[11:10] Misterblue Waves : quelles sont les fonctions dont tu as besoin dans un viewer texte, @Vincent ? juste le chat ?
[11:10] Vincent.Sylvester @hg.zetaworlds.com:8002 : Chat, peut-être quelques contrôles de domaines et de parcelles, c'est à peu près tout.
[11:10] Ubit Umarov : et je devine l'inventaire également
[11:11] Vincent.Sylvester @hg.zetaworlds.com:8002 : Vous savez les trucs d'administration que vous ne pouvez pas faire via la console.
[11:11] Kayaker Magic : Est-ce que Radegast fonctionne sur les téléphones portables ? J'ai utilisé Lumiya comme viewer texte sur mon téléphone jusqu'à ce qu'il soit abandonné. Il ne fonctionne pas sur mon nouveau téléphone.
[11:11] Ubit Umarov : pour vérifier les notecards.
[11:11] Ubit Umarov : je pense que certains utilisent encore Lumiya.
[11:12] Vincent.Sylvester @hg.zetaworlds.com:8002 : Il fonctionne toujours sur mon téléphone.
[11:12] Andrew Hellershanks : Je me demande si quelqu'un a pensé à utiliser le moteur de rendu utilisé dans Blender.
[11:12] Ubit Umarov : en tout cas, j'ai fait un correctif pour ça... il y a environ 2 ans maintenant :)
[11:12] Vincent.Sylvester @hg.zetaworlds.com:8002 : Mais il ne fait pas les vars
[11:12] Kayaker Magic : Lumiya fonctionne toujours sur ma tablette qui a 6 ans.
[11:12] Vincent.Sylvester @hg.zetaworlds.com:8002: unlocked bootloader lineage os ftw lol
[11:12] Ubit Umarov : il ne décode pas tous les xml llsd correctement.
[11:12] Gavin.Hird @grid.xmir.org:8002 : Je suppose que si vous ne voulez pas que votre avatar rezzé ressemble à une brique, vous aurez besoin d'un accès plus ou moins complet à l'inventaire.
[11:12] Vincent.Sylvester @hg.zetaworlds.com:8002 : hehe vrai
[11:12] Gavin.Hird @grid.xmir.org:8002 : à ma connaissance, vous ne pouvez pas vous connecter avec un client texte léger.
[11:12] Ubit Umarov : comme <integer /> je me souviens.
[11:13] Ubit Umarov : J'ai dû le retirer.
[11:13] Vincent.Sylvester @hg.zetaworlds.com:8002 : J'aime définir des mots de passe à partir de 20 caractères et plus jusqu'à 64, radegast et je pense lumiya vomissent tout ce qui est au-dessus de 16 ou plus.
[11:13] Ubit Umarov : ce que veut vraiment la plupart des gens c'est chatter avec les autres.
[11:14] Ubit Umarov : être en contact avec ses amis...
[11:14] Ubit Umarov : le 3d autour est juste un décor, la plupart du temps.
[11:14] Misterblue Waves : ce serait aussi bien pour des réunions comme celle-ci. Nous n'utilisons pas vraiment les fonctionnalités du monde 3D de cet endroit.
[11:15] Gavin.Hird @grid.xmir.org:8002 : alors vous pouvez simplement faire une réunion dans n'importe quelle plateforme de chat.
[11:15] Ubit Umarov : 21W sur mon processeur alors qu'il pourrait être à 5.
[11:15] Ubit Umarov : ;(
[11:15] Ubit Umarov : :)
[11:15] Ubit Umarov : je suppose que c'est plus sur le gpu.
[11:15] Misterblue Waves : Je suis en train de construire un tout nouveau protocole. Un jour, je devrai me battre avec UBit pour qu'un nouveau ClientView soit ajoutée à la base :)
[11:15] Ubit Umarov : mon utilitaire  ne montre pas l'estimation de la puissance du gpu :(
[11:16] Vincent.Sylvester @hg.zetaworlds.com:8002 : Si cela a du sens, je suis sûr qu'il l'ajoutera, il faut juste persister, c'est comme ça que je fais passer les choses ;)
[11:16] Ubit Umarov : L'idée est d'ajouter des clients.
[11:16] Ubit Umarov : maintenant... c'est un peu difficile car il y a des choses de SL partout.
</pre>


= Les metavers =
* Utiliser le modèle prédéfini, par exemple '''"river"''', pour cela tout en haut de la fenêtre des options de l'add-on, ouvrez le menu déroulant '''"Opérator Presets"'''.
* Ndlr : je voulais mettre des liens, mais après mure réflexion ... pas de pub.
* Un peu plus bas dans cette fenêtre, définissez les subdivisions X et subdivisions Y à 133.
<pre>
<gallery>
[11:17] Misterblue Waves : SL s'égare dans sa propre direction, et, avec de nouveaux consultants (<clin d'œil//>) ils pourraient changer beaucoup de choses.
Fichier:Options landscape.jpg| Options
[11:17] Gavin.Hird @grid.xmir.org:8002 : ha !
Fichier:Terrain phase 001.png| Terrain river
[11:17] Ubit Umarov : une voix me vient à l'esprit.
</gallery>
[11:17] Gavin.Hird @grid.xmir.org:8002 : J'ai vu que Meta va ajouter un espace de sécurité autour de tous les avatars.
[11:18] Vincent.Sylvester @hg.zetaworlds.com:8002 : SL est, comme d'habitude, juste en train de tourner autour de la cuvette des toilettes ces derniers temps.
[11:18] Kayaker Magic : Meta ? Cette société ne va pas bientôt disparaître ?
[11:18] Motoko.Karu @login.digiworldz.com:8002 : lol... je dois me souvenir de celui-là... <le commentaire sur la cuvette des toilettes>
[11:18] Misterblue Waves : oui, HiFi avait cela dans leur première version. Meta est en train d'apprendre toutes les choses que SL a dû apprendre. Ils partent de zéro.
[11:18] Vincent.Sylvester @hg.zetaworlds.com:8002 : Quelqu'un d'autre a été inondé d'emails relatifs au "metaverse" ces derniers temps ?
[11:19] Ubit Umarov : je pense que meta est un peu plus en avance sur sl.
[11:19] Misterblue Waves : soit "metaverse" soit "crypto". Il y a beaucoup de pompage et de déversement en cours.
[11:19] Gavin.Hird @grid.xmir.org:8002 : On pourrait l'espérer, mais la rumeur de sa mort est jusqu'à présent exagérée.
[11:19] Ubit Umarov : regarder d'autres choses, comme sansar, space, etc...
[11:20] Ubit Umarov : et beaucoup d'autres trucs autour des choses qui peuvent vendre oculus.
[11:20] Ubit Umarov : Cela doit être très motivant... vendre des produits oculus :P
</pre>


= Système LOD =
== Pourtour du terrain ==
* LOD = Level Of Detail : Le "niveau de détail" du LOD fait référence à la quantité de détails d'un objet que le viewer rendra. Un facteur LOD plus élevé signifie que le viewer montrera l'objet avec plus de détails qu'un facteur inférieur. Un petit objet rendu à un LOD inférieur sera représenté par une forme plus simple ; un LOD supérieur sera rendu de manière plus précise. Comme nous l'avons déjà mentionné, le rendu d'un objet complexe demande plus de travail que celui d'un objet plus simple, et plus le LOD requis pour le rendre correctement est élevé, plus votre ordinateur et votre carte graphique doivent travailler dur. S'il y a beaucoup d'objets avec un LOD élevé dans une scène, votre ordinateur va ralentir. Le viewer gère cela en déterminant le LOD requis en fonction, notamment, de la distance qui vous sépare de l'objet. Un petit objet complexe situé à 20 mètres peut être rendu avec un LOD inférieur, et vous ne remarquerez jamais la différence, car il ne prend pas assez de place sur votre écran pour afficher tous ces détails. Si vous vous rapprochez (ou si vous approchez la caméra), le LOD augmentera parce que l'objet semble plus grand, et les détails deviendront visibles.  
* En '''mode object''', délectionner le plan qui simule le niveau de l'eau et le masquer à l'aide de '''la touche H''' .
**[https://www.firestormviewer.org/lod-and-the-upcoming-firestorm-release-the-what-and-why/ Informations en anglais sur le site de Firestorm]
* En '''mode Edit''', sélectionner les sommets de la périphérie du terrain. Pour chaque côté, placez le pointeur de la souris près du bord et en pressant sur les touchez SHIFT + ALT faire un clique gauche. La ligne de sommets devait se sélectionner en une seule fois. Faire cela sur les 4 côtés.
**[https://beqsother.blogspot.com/2018/01/for-lods-sake-stop.html Blog technique de Beq : Pour l'amour de LOD, arrêtez !](en)
* Extruder une fois ces sommets vers le bas avec '''la touche E puis Z''' (2 ou trois carreaux de la grille).
* Égaliser la hauteur des sommets : '''S puis Z puis 0'''
* Divisier la hauteur des bords avec '''CTRL + R''' et faire 6 boucles avec la '''molette''' de la souris.
* En '''mode Object''' sélectionner le terrain et appliquer les modifications du mesh : CTRL + A  et sélectionner All Transforms.
<gallery>
Fichier:Terrain phase 001 H.jpg|Utiliser H
Fichier:Terrain phase 001 periph.jpg|Périphérie
Fichier:Terrain phase 001 extruder.jpg | E + Z
Fichier:Terrain phase 001 egaliser.png | S puis Z puis 0
Fichier:Terrain phase 001 decoupage.jpg | CTRL + R et molette
Fichier:Terrain phase 001 modif.jpg |Modifications appliquées
</gallery>


* [https://fr.wikipedia.org/wiki/GlTF glTF] : format de fichier scènes et modèles 3D utilisant le format JSON. 
= Dessiner les coutures du terrain =
* [https://threejs.org/examples/?q=Bounding%20box#webgl_helpers Exemple pour "Boîte de délimitation" (Bounding box)]
== Coutures des bords ==
* [[ https://www.blender.org/ |Blender]](en) : logiciel libre de modélisation
* En mode Edit, sélectionner la première ligne de sommets au-dessus des bords avec '''SHIFT + MAJ''' et en faisant un '''clic gauche''' tout près de la ligne. Faire cela sur les 4 côtés. En cas d'erreur supprimer la dernière action avec '''CTRL + Z'''. On '''zoome''' avec la '''molette de la souris''' pour être plus précis.  
* Décimation (Decimate), exemple d'utilisation dans Blender : https://docs.blender.org/manual/fr/dev/modeling/modifiers/generate/decimate.html
* Marquer la couture depuis le menu '''Edge'''  avec '''Mark Seam'''.
* [https://cesium.com/blog/2015/08/10/introducing-3d-tiles/ Cesium's 3D Tiles] : Cesium est une plateforme 3D permettant de visualiser des globes, de chaque satellite dans l'espace à chaque immeuble de Manhattan en passant par chaque cratère sur Mars.
* Sélectionner les arêtes des 4 angles des bords du terrain avec le raccourci clavier '''SHIFT + MAJ''' vu précédemment.
* [https://www.youtube.com/watch?v=JLUzi3y_uvM Quelle est la qualité de la nanite dans Unreal Engine 5 ?(Vidéo Youtube en anglais)]
* Marquer la couture depuis le menu '''Edge'''  avec '''Mark Seam'''.  
* Nanite dans Unreal engin  :  principale caractéristique du moteur de jeu, permet d'importer dans les jeux des sources photographiques très détaillées et presque toute autre représentation tridimensionnelle préexistante d'objets et d'environnements. Nanite gère automatiquement les niveaux de détail (LOD) de ces objets.  
<gallery>
Fichier:Terrain phase 002 selection.jpg|Sélection
<pre>
Fichier:Terrain phase 002 bord sup.jpg | Ligne supérieure
[11:20] Misterblue Waves : quelqu'un travaille avec un système LOD ?
Fichier:Terrain_phase_002_arete.jpg | Angle
[11:20] Misterblue Waves : Je me demande comment il est normalement mis en œuvre
Fichier:Terrain phase 002 coutures.png | Coutures
[11:21] Ubit Umarov : LOD  comme niveau de détail ?
</gallery>
[11:21] Misterblue Waves: oui
[11:21] Ubit Umarov : c'est un peu un truc du côté des viewers.
[11:22] Ubit Umarov : et aussi des créateurs de meshes.
[11:22] Kayaker Magic : Les publicités pour Unreal5 prétendent que leur moteur s'occupe du LOD pour vous.
[11:22] Ubit Umarov : Oui, il le fait.
[11:22] Misterblue Waves : Je travaille sur la conversion du contenu OS en GLTF et ensuite sur l'auto LODing dans des segments de régions à plus faible résolution.
[11:22] Ubit Umarov : et sur des meshes énormes aussi.
[11:22] Vincent.Sylvester @hg.zetaworlds.com:8002 : La distance de boîte de délimitation par rapport à la caméra ou peut-être même au centre de l'objet, puis... euh, c'était quoi 30 mètres pour le premier niveau, 90 et enfin 256, quelque chose comme ça ?
[11:22] Misterblue Waves : Il y a beaucoup de techniques de décimation sur le marché alors je me suis dit que j'allais les utiliser.
[11:23] Ubit Umarov : fs montre les points de transition par maille maintenant.
[11:23] Vincent.Sylvester @hg.zetaworlds.com:8002 : La subdivision est une bibliothèque subd9 ou quel que soit son nom, ce que blender utilisait il y a environ 5 ans.
[11:23] Ubit Umarov : les viewers auto lod ne sont pas si bien que ça.
[11:24] Gavin.Hird @grid.xmir.org:8002 : la bibliothèque GLOD d'anicnet sera bientôt remplacée dans les viewers.
[11:24] Ubit Umarov : et une simple décimation aveugle peut ne pas suffire.
[11:24] Misterblue Waves : certains navigateurs géographiques ont des fichiers de définition du monde (comme Cesium's 3D Tiles (https://cesium.com/blog/2015/08/10/introducing-3d-tiles/)).
[11:24] Gavin.Hird @grid.xmir.org:8002 : je ne me souviens pas de son nom à première vue.
[11:24] Ubit Umarov : oui, ils en parlent.
[11:24] Kayaker Magic : Voici une démo montrant UE5 faisant du LOD pour vous : https://www.youtube.com/watch?v=JLUzi3y_uvM
[11:24] Vincent.Sylvester @hg.zetaworlds.com:8002 : J'ai regardé ce code il y a juste deux semaines et j'ai déjà oublié, je me fais vieux lol.
[11:25] Ubit Umarov : j'ai fait un peu d'hébergement brut/basique pour le viewer unreal.
[11:26] Misterblue Waves : il y avait le vieux projet Sirkata qui implémentait le LOD automatique.
[11:26] Vincent.Sylvester @hg.zetaworlds.com:8002 : La taille de l'objet fait également partie des calculs côté viewer lorsqu'elle commence à passer à différents niveaux, probablement en fonction de la réduction des polygones dans la scène. Il y avait quelque chose là-dedans sur la boîte de délimitation qui jouait un rôle dans les calculs.
[11:26] Vincent.Sylvester @hg.zetaworlds.com:8002 : Pourcentage de la surface de l'écran
[11:27] Misterblue Waves : et puis, les moteurs de rendu comme Unreal ont une technologie auto-LOD incroyable intégrée.
[11:27] Vincent.Sylvester @hg.zetaworlds.com:8002 : Ce qui ne sert à rien de toute façon dans beaucoup de cas parce que les gens téléchargent toujours avec le même LOD pour tous les niveaux.
[11:27] Ubit Umarov : oui, les nanites semblent bien.
[11:28] Ubit Umarov : ( nanite est la chose la plus irréelle )
</pre>


=Nouvelles dans le code  OpenSim =
== Dessiner 36 carrés sur le terrain ==
* [https://fr.wikipedia.org/wiki/Docker_(logiciel) Docker]: outil qui peut empaqueter une application et ses dépendances dans un conteneur isolé, qui pourra être exécuté sur n'importe quel serveur.
* Sélectionner les bords du terrain. Pour cela, passer en sélection par face et sélectionner la ligne inférieure des faces avec '''SHIFT + MAJ'''. Les 4 côtés devraient être sélectionnés en une fois. Ensuite, enfoncer la touche '''CTRL et presser la touche + de clavier numérique''' pour sélectionner une ligne supplémentaire. Presser sur la touche + pour sélectionner l'ensemble des bords du terrain. Pour désélectionner une ligne, utiliser la '''touche - du pavé numérique''' à la place de la touche +.  
* [https://github.com/Misterblue/opensim-docker Projet Opensim-Docker de Misterblue Waves]
* Masquer les bords avec la '''touche H'''.  
* Option OutboundPermission : dans StandaloneCommon.ini ou GridCommon.ini  dans la section [HGInventoryAccessModule]
* Passer en vue du dessus avec '''NUM 7''' (touche 7 du pavé numérique) et en sélection par point.
* [https://fr.wikipedia.org/wiki/Architecture_ARM Architecture ARM]
* Sélectionner le bord gauche du plateau du terrain avec '''SHIFT + ALT''' et '''clic gauche''' de la souris (toujours zoomer pour se mettre proche du bord cible).  
<pre>
* Utiliser la technique de '''la touche NUM + avec CTRL''' 22 fois pour sélectionner 22 lignes supplémentaires. (Rappel : enfoncer la touche CTRL et utiliser la touche + du pavé numérique pour sélectionner les autres lignes. )
[11:30] Ubit Umarov : alors quelles sont les nouvelles ?
* Repérer la dernière ligne sélectionnée. Désélectionner tout avec '''ALT + A''' et, sélectionner cette dernière ligne  avec '''SHIFT + ALT et clic''' et la marquer depuis le menu '''Edge''' avec '''Mark Seam.'''
[11:32] Misterblue Waves : J'ai mis à jour mon projet opensim-docker (https://github.com/Misterblue/opensim-docker)
* Laisser cette ligne sélectionnée et utiliser la combinaison '''CTRL + NUM+''' 22 fois pour repérer la prochaine ligne de couture à marquer avec '''Mark Seam'''. Attention les lignes à gauche de la ligne de départ vont aussi être sélectionnées. Seules les lignes de droite nous intéressent ici.  
[11:32] Ubit Umarov : merci misterblue
* Continuez ainsi pour obtenir 6 subdivisions de 22 lignes chacune sur la largeur du terrain.  
[11:31] Vincent.Sylvester @hg.zetaworlds.com:8002 : Les changements récents dans les flags d'inventaire ont fait disparaître un peu d'inventaire pour les gens, évidemment le transfert de HG sans permissions d'exportation est arrivé assez souvent, donc c'était amusant.
* Subdiviser le terrain de la même façon en partant de la ligne horizontale du dessus pour obtenir 6 subdivisions verticales du terrain. Ainsi la grille obtenue forme 36 carrés.
[11:32] Ubit Umarov : quel changement de flags d'inventaire ?
<gallery>
[11:32] Ubit Umarov : je ne me rappelle pas avoir changé les flags d'inventaire.
Fichier:Terrain phase 003 base.png |Sélection par face
[11:33] Kayaker Magic : Ouais, c'est quelque chose que tu as fait Vincent ?
Fichier:Terrain_phase_003_selection.jpg | CTRL + NUM +
[11:33] Vincent.Sylvester @hg.zetaworlds.com:8002 : Le truc au sujet des permissions d'exportation de cette mantis, après cela les gens ont commencé à se plaindre de pertes dans les inventaires, je ne sais toujours pas exactement comment cela est lié.
Fichier:Terrain phase 003 selection complete.jpg |Sélection
[11:33] Ubit Umarov : ne pas oublier d'autoriser les exportations de landmarks lorsque les autres sont bloqués.
Fichier:Terrain phase 003 bords masques.png |Masquer avec H
[11:34] Vincent.Sylvester @hg.zetaworlds.com:8002 : Je sais seulement que je n'ai pas trouvé les objets dans les assets donc, ils n'ont pas dû être transférés. Mais, ils étaient dans l'inventaire de l'utilisateur... je ne sais pas comment c'est possible, ma meilleure réponse serait que c'est dû au cache.
Fichier:Terrain phase 004 bord gauche.png |Bord gauche
[11:34] Ubit Umarov : non, je ne pense pas que le code ait changé quoi que ce soit, mais il faut régler le problème et laisser les landmarks passer.
Fichier:Terrain phase 004 22 lignes.png |23 lignes
[11:34] Vincent.Sylvester @hg.zetaworlds.com:8002 : Mise à jour du binaire supprimant le cache, feux d'artifice
Fichier:Terrain phase 004 ligne 22 marquee.jpg |Couture
[11:34] Vincent.Sylvester @hg.zetaworlds.com:8002 : Mais c'est la nature des corrections de bugs, on en gagne et on en perd.
Fichier:Terrain phase 004 selection suite.jpg | Repérage suite
[11:35] Ubit Umarov : et ces changements de code ne sont pertinents que lorsque l'option de ne pas exporter est mise à true.
Fichier:Terrain phase 004 divisions horizontales.jpg |Subdivisions horizontales
[11:36] Vincent.Sylvester @hg.zetaworlds.com:8002 : Je pense que c'est une partie du problème, quelque chose qui n'obéit pas à "no export", mais eh c'est comme ça maintenant.
Fichier:Terrain phase 004 selection horizontale.jpg | Sélection horizontale
[11:36] Ubit Umarov : (option OutboundPermission)
Fichier:Terrain phase 004 36 carres.jpg | 36 carrés.
[11:36] Vincent.Sylvester @hg.zetaworlds.com:8002 : Les autres changements sont principalement cosmétiques, du code de refactoring et quelque chose sur le support des puces ARM.
</gallery>
[11:37] Vincent.Sylvester @hg.zetaworlds.com:8002 : Quelques corrections pour le domaine (Estate) également
</pre>


= Compatibilité et compilation =  
= Générer les UVMap =
* [https://gl.developpez.com/tutoriel/outil/makefile/ Makefile] fichiers utilisés par le programme make pour exécuter un ensemble d'actions, comme la compilation d'un projet, l'archivage de document, la mise à jour de site, etc.
== UVMap des bords ==
* AArch64 ou ARM64 est l'extension 64 bits de l'architecture ARM. Elle a été introduite pour la première fois avec l'architecture [https://fr.wikipedia.org/wiki/ARMv8 ARMv8-A.]
* En mode Edit, faire réapparaître les bords avec '''ALT + H'''.
* [https://fr.wikipedia.org/wiki/Bullet_(moteur_physique) Bullet] :  moteur physique simulant la détection de collisions ainsi que la mécanique des corps rigides et déformables. Licence ZLib libre.
* Sélectionner uniquement le plateau en inversant la sélection avec '''CTRL + I'''.
* [https://www.openjpeg.org/ OpenJep : codec JPEG 2000 open-source écrit en C.]
* Masquer le plateau avec '''la touche H'''.  
* [https://fr.wikipedia.org/wiki/Raspberry_Pi Raspberry Pi] :  nano-ordinateur monocarte à processeur ARM de la taille d'une carte de crédit créé  afin de démocratiser l'accès aux ordinateurs.
* Sélectionner l'ensemble des bords du terrain avec la touche '''A en mode Edit'''.  
* [https://www.raspbian.org/ Raspbian est un système d'exploitation libre basé sur Debian et optimisé pour le matériel Raspberry Pi.]
* Dans l'espace de travail '''UV Editing''', génerer l'UVMap des bords depuis le '''menu UV'''. Utiliser '''Unwrap Angle Bassed''' (avec Unwrap Minimum Stretch, le modificateur Decimate déforme le texture des bords, voir [[#Exporter_le_terrain_au_format_Collada |Exporter le terrain au format Colla]] . L'UVMap des bords s'affiche dans la fenêtre de l'éditeur UV.  
* [https://fr.wikipedia.org/wiki/Mono_(logiciel) Mono] :  mise en œuvre open source (sous licence GNU GPL, GNU LGPL ou X11 selon les éléments) de la plateforme de développement Microsoft .NET. Mono est utilisé entre autre sur les systèmes d'exploitation Linux pour lancer OpenSimulator.
<gallery>
* [https://fr.wikipedia.org/wiki/Microsoft_.NET .NET]
Fichier:Terrain phase 005 afficher bords.jpg| Bords affichés
* Prebuild.exe : fichier dans le dossier bin de OpenSimulator.
Fichier:Terrain phase 005 selection plateau.jpg |Plateau sélectionné
* [https://stackoverflow.com/questions/6446361/what-does-the-csproj-file-do fichier .csproj] : en langage C# (C Sharp), langage de programmation de OpenSimulator,  le fichier .csproj contient la liste des fichiers du projet, ainsi que les références aux assemblies du système, etc.
Fichier:Terrain phase 005 plateau masque.png | Masquer avec H
* sln : Un fichier SLN est un fichier de structure utilisé pour organiser des projets dans Microsoft Visual Studio. Il contient des informations textuelles sur l’environnement et l’état du projet.
Fichier:Terrain phase 005 selection bords.png |Sélection avec A
* [https://fr.wikipedia.org/wiki/Microsoft_Visual_Studio#Visual_Studio_2017 Visual Studio 2017 (vs2017)] :
Fichier:Terrain phase 005 UVMap bords.jpg | UVMap des bords
<pre>
</gallery>
[11:38] Ubit Umarov : oui, nous avons reçu une contribution pour modifier les makefiles afin de permettre la compilation de certaines librairies non gérées pour aarch64.
[11:38] Ubit Umarov : y compris celles déjà compilées.
[11:38] Ubit Umarov : pour bullet et openjeg
[11:39] Misterblue Waves : maintenant que Raspian est disponible en 64 bits, je peux faire tourner tous mes vieux RaspPi avec des simulateurs LOL.
[11:39] Ubit Umarov : oui, c'est pour le 64 raspian je pense.
[11:39] Gavin.Hird @grid.xmir.org:8002 : sauf qu'il n'y a pas de mono 64-bit pour Raspian qui puisse compiler opensim
[11:39] Gavin.Hird @grid.xmir.org:8002 : MS (Microsoft) a dit qu'il n'y en aura jamais
[11:40] Ubit Umarov : je suppose que cette personne l'a fait fonctionner d'une manière ou d'une autre.
[11:41] Ubit Umarov : en fait, je n'ai aucune idée de MS dit à propos de mono.
[11:41] Gavin.Hird @grid.xmir.org:8002 : ils ont dit qu'il ne sera pas mis à jour.
[11:41] Ubit Umarov : ce qu'ils disent n'est pas du tout fiable.
[11:41] Kayaker Magic : Dang, 64bit Raspian était ma prochaine question. Est-ce que MicroSquishy fera un DotNet 64bit pour ARM ?
[11:42] Gavin.Hird @grid.xmir.org:8002 : .Net5
[11:42] Gavin.Hird @grid.xmir.org:8002 : Oui.
[11:42] Gavin.Hird @grid.xmir.org:8002 : cela existe déjà pour autant que je sache.
[11:42] Ubit Umarov : la façon dont ms essaie maintenant de tuer le futur mono est en fait irritante.
[11:42] Kayaker Magic : Mike Chase a fait tourner OpenSim sur DotNet, mais seulement sur des serveurs WinCows.
[11:42] Gavin.Hird @grid.xmir.org:8002 : MS l'utilise dans Visual Studio pour macOS fonctionnant sur Apple Silicon.
[11:43] Ubit Umarov : pas sûr qu'il l'ait fait...
[11:43] Ubit Umarov : il travaillait dessus, je suppose.
[11:43] Vincent.Sylvester @hg.zetaworlds.com:8002 : Vous ne pouvez pas développer quoi que ce soit après 4.8 parce que la documentation est, excusez mon langage, de la merde de cheval. Avec .net core, standard et toutes ces conneries, c'est devenu un désordre total de construire quoi que ce soit, sans parler de l'indépendance de la plateforme.
[11:43] Vincent.Sylvester @hg.zetaworlds.com:8002 : MS est en train de tuer .net comme ils le font habituellement avec tout finalement.
[11:43] Ubit Umarov : ms a tué le noyau et le standard maintenant.
[11:44] Ubit Umarov : tout ce qu'ils ont dit à ce sujet a été envoyé à la poubelle.
[11:44] Ubit Umarov : depuis :net5 et 6 unifient tout ( ils le revendiquent )
[11:45] Vincent.Sylvester @hg.zetaworlds.com:8002 : Vous allez dans la documentation pour trouver une fonction pour quelque chose, il s'avère que cela ne fonctionne pas, stackoverflow dit alors d'utiliser quelque chose d'autre, mais cela n'est disponible que dans l'ancien .net et vous êtes de retour dans la documentation de MS en essayant de comprendre ce qu'est exactement la chose maintenant, un désordre total.
[11:45] Ubit Umarov : toute précipitation pour passer à Dotnet est une perte de temps.
[11:46] Misterblue Waves : Il faut refactoriser certaines des bibliothèques de base (PrimMesher, libOpenSim, ...) et déplacer un tas de code dans OS. J'ai pensé à pousser une version de OS vers .Net6/Standard2 mais c'est un gros travail.
[11:46] Ubit Umarov : la façon dont ils continuent à changer.
[11:46] Andrew Hellershanks : Vincent, ça ressemble à la disparité typique entre la documentation et le code.
[11:46] Ubit Umarov : pendant ce temps, les gens font des choses pour faciliter le portage.
[11:47] Misterblue Waves : Prebuild a besoin d'un peu de travail pour gérer les nouveaux formats de fichiers .csproj.
[11:47] Ubit Umarov : Oui, c'est vrai.
[11:48] Ubit Umarov : certains qui l'utilisaient ont abandonné et n'utilisent plus que des slns directs et des csproj.
[11:48] Ubit Umarov : comme le radagash cinder ?
[11:48] Misterblue Waves : J'aimerais pouvoir avoir un prebuild.xml qui dit "Standard 2.0" et avoir les bons trucs de compilation.
[11:48] Ubit Umarov : oui, il faut le changer pour les nouveaux formats de fichiers.
[11:49] Ubit Umarov : et les options.
[11:49] Misterblue Waves : Cinder a fait beaucoup de bon travail dans cette direction. Elle avait une version standard2 de primmesher et libreOMV sur le dépôt NuGet à un moment donné.
[11:49] Ubit Umarov : son support pour vs2017 était déjà un peu dépassé :)
[11:49] Misterblue Waves : Je n'ai pas vérifié depuis un moment.
[11:50] Ubit Umarov : oui, je pense qu'elle a remplacé le code d'image, mais une bibliothèque plus lente qu'ils recommandent maintenant.
</pre>


=Probmème avec NuGet=
== UVMAP du plateau ==
* [https://fr.wikipedia.org/wiki/NuGet NuGet]:  gestionnaire de paquets de la plate forme de développement Microsoft .NET.
* Afficher le plateau du terrain avec la combinaison de touches '''ALT + H'''.
* [https://fr.wikipedia.org/wiki/Nodejs Node.js] est une plateforme logicielle libre en JavaScript
* Déselectionner le plateau avec '''ALT + A'''. Sélectionner chaque côté du bord du terrain en plaçant ''la souris sur une zone délimitée par des coutures'' et utiliser la '''toucher L'''. Il y a 4 zones, une par côté.  
* [https://fr.wikipedia.org/wiki/C_(langage) C  langage de programmation impératif généraliste, de bas niveau]
* Masquer les bords avec la '''touche H'''.  
* [https://fr.wikipedia.org/wiki/Glade Glade : outil interactif de conception d'interface graphique GTK+ (bibliothèques logicielles) ]
* '''Le but''' ici est de maximiser la taille et le nombre d'images à importer dans OpenSim afin d'obtenir une texture aussi nette que possible. Il sera donc nécessaire de générer l'UVMap pour chacune des 36 zones carrées délimitées par des coutures sur le plateau du terrain, et ce, successivement, afin qu'elles occupent le maximum d'espace. Je n'ai pas trouvé d'autre solution, mais peut-être en existe-t-il d'autres. Dans tous les cas, cela nécessitera de répéter cette opération 36 fois.
* [https://fr.wikipedia.org/wiki/Dynamic_Link_Library DLL]: Dynamic Link Library est une bibliothèque logicielle dont les fonctions sont chargées en mémoire par un programme.
* Dans l'espace de travail UV Editing, dans la vue 3D, se placer en vue du dessus '''NUM 7'''.Par convention, les carrés seront numérotés de gauche à droite et de haut en bas.
<pre>
* En mode Édition et en mode sélection par face, placer le curseur de la souris sur la zone 1 et appuyer sur la touche L pour sélectionner cette zone.
[11:50] Misterblue Waves : je ne suis pas sûr que le noyau OS soit à la hauteur de NuGet, à moins que nous ayons hébergé notre propre dépôt (afin de ne pas charger de choses éventuellement imprévisibles).
* Générer l'UVMap de cette zone depuis le menu UV et choisir '''Unwrap Minimum Stretch''' si la version de Blender est supérieure ou égale à 4.3 ; sinon, choisir '''Unwrap Angle Based'''.
[11:50] Ubit Umarov : nuget est inutile :p
* Sélectionner chaque zone une par une pour générer son UVMap comme indiqué ci-dessus. Veiller à ce qu'une seule zone soit sélectionnée. Pour désélectionner la zone précédente, il suffit de cliquer dans la nouvelle zone.
[11:50] Vincent.Sylvester @hg.zetaworlds.com:8002: Amen
* Il est préférable de vérifier rapidement si toutes les UVMaps ont été générées. Pour cela, une petite routine très rapide peut être utilisée : cliquer sur une zone, appuyer sur L, l'UVMap de la zone s'affiche dans l'éditeur UV, cliquer sur la zone suivante, appuyer sur L, etc. Si une UVMap ne s'affiche pas, c'est qu'elle n'a pas été générée, il faudra le faire.
[11:51] Ubit Umarov : et oui, cela pollue nos machines.
<gallery>
[11:51] Ubit Umarov : charge de la merde dans un dossier quelque part.
Fichier:Terrain phase 005 selection plateau.jpg | ALT + H
[11:51] Andrew Hellershanks : N'est-ce pas quelque chose que l'on utilise pour construire des applications Android ?
Fichier:Terrain phase 006 selection par zone.png | Sélection par zone avec L
[11:51] Ubit Umarov : Non.
Fichier:Terrain phase 005 afficher bords.jpg| Bords sélectionnés
[11:51] Vincent.Sylvester @hg.zetaworlds.com:8002 : nuget est le nodejs du monde C.
Fichier:Terrain phase 006 plateau.jpg | Bords masqués
[11:51] Andrew Hellershanks : oh, non. Je pense que c'était Glade.
Fichier:Terrain phase 006 36 carres num.jpg | Numérotation
[11:52] Ubit Umarov : gestionnaire de paquets
Fichier:Terrain phase 006 selection de zone.jpg |Sélection par zone avec  L
[11:52] Misterblue Waves : J'ai regardé un peu libOMV mais il a besoin d'un tas de remaniements pour en faire un ensemble de bibliothèques car les fonctions sont mélangées avec le code d'utilisation et on ne peut pas facilement séparer les fonctions.
Fichier:Terrain phase 006 uvmap carre.jpg | UVMap d'une zone
[11:52] Ubit Umarov : à un moment donné, xenko a récupéré tous les paquets nuget.
</gallery>
[11:52] Ubit Umarov : et à partir de quelques fichiers de bibliothèque, il est passé à 300 paquets nuget.
[11:53] Misterblue Waves : OS n'utilise pas NuGet. Il dépose juste les DLLs dans le répertoire bin. Des DLLs brutes qui sont construites à partir de bibliothèques que nous contrôlons.
[11:53] Misterblue Waves :OS pourrait utiliser NuGet si nous utilisions nos propres dépôts et contrôlions les binaires. C'est ce que nous faisons avec PrimMesher, etc maintenant.
[11:53] Ubit Umarov : oui, l'ancienne méthode plus propre et contrôlable.
[11:54] Ubit Umarov : et quel est le but MB ?
[11:54] Ubit Umarov : juste pour avoir l'air moderne et fantaisiste aux yeux des enfants ? :)
[11:54] Vincent.Sylvester @hg.zetaworlds.com:8002 : Il n'y a pas si longtemps, il y a eu un problème dans libomv avec un verrouillage ou une synchronisation, ne pas avoir le contrôle de cela aurait été une énorme douleur.
[11:55] Vincent.Sylvester @hg.zetaworlds.com:8002: [11:55] Vincent.Sylvester @hg.zetaworlds.com:8002 : Je ne me souviens même pas de ce que c'était spécifiquement, mais nous avons dû décompiler la bibliothèque terminée pour la corriger parce que quelque chose était "optimisé".
[11:55] Ubit Umarov : aucune idée. Mais tu as des problèmes étranges vicent :p
[11:56] Vincent.Sylvester @hg.zetaworlds.com:8002 : C'est probablement pour ça que je ne gagne pas à la loterie, hein ?
[11:56] Andrew Hellershanks: hehe
[11:57] Kayaker Magic : Je ne participe pas à la loterie parce que je n'achète pas de tickets. L'achat d'un ticket n'augmente pas beaucoup la probabilité de gagner.....
[11:57] Misterblue Waves : malgré l'impression de ne pas être à la page, j'utilise des bibliothèques à plusieurs endroits (PrimMesher, Meshmerizer, AssetLoader). Ce serait bien d'accéder à Robust à partir d'autres outils d'assets du monde (plugin Blender ?).
[11:57] Misterblue Waves : J'aime que les choses soient décomposées en morceaux facilement chargeables.
</pre>


= Bases de données et OpenSim =  
= Créer les matériaux =
* [https://mariadb.org/ MariaDB ] :  système de gestion de base de données édité sous licence GPL.
== Matériau des bords ==
* [https://fr.wikipedia.org/wiki/MySQL MySQL ]:un système de gestion de bases de données relationnelles (SGBDR)
* En '''mode Edit''', afficher et sélectionner les bords du terrain comme vu précédemment.  
* [https://fr.wikipedia.org/wiki/DBase DBase] : système de gegstion de base de données destiné à faire partager des fichiers de données par plusieurs utilisateurs.
* Ouvrir le '''panneau des propriétés des matériaux''' (petite icône orange) dans l'éditeur des propriétés.  
* [https://en.wikipedia.org/wiki/SQLite SQLite] :  est une bibliothèque écrite en langage C qui propose un moteur de base de données relationnelle accessible par le langage SQL
* Appuyer sur le bouton '''"New"'''. Nommer le matériau, par exemple "Terrain_Bords". Appuyer sur le bouton '''"Assign"''' pour attribuer le nouveau  materiau à la sélection, c'est à dire ici à l'ensemble des bords du terrain.  
* [https://fr.wikipedia.org/wiki/PostgreSQL PostgreSQL] : système de gestion de base de données relationnelle et objet (SGBDRO). Outil libre disponible selon les termes d'une licence de type BSD.
* Il est possible de modifier la couleur dans '''Base Color'''.  
* [[Réunion_du_01-02-2022#Problème_de_compilation_du_viewer_dans_Windows|Problème avec MariaDB évoqué pendant la réunion précédente & Plan B de Gavin.Hird]]
* Attention, pour l'instant, un seul matériau a été créé. Même si ce matériau est assigné à une partie du mesh, il est appliqué sur '''l'ensemble du mesh'''.
* [https://fr.wikipedia.org/wiki/Structured_Query_Language SQL] :  langage informatique normalisé servant à exploiter des bases de données relationnelles.
<gallery>
* [[ROBUST]] est l'acronyme de "redesigned OpenSimulator Basic Universal Server Technology" (ROBUST).Il s'appuie sur le système de connecteurs et de services entrants et sortants qui a été développé pour l'Hypergrid et OpenSimulator.
Fichier:Terrain phase 005 afficher bords.jpg| Bords sélectionnés
* [[FSAssets_Service/fr |FSAssets]]  est destiné aux grandes grilles pour lesquelles la taille de la base de données dépasse les 50 Go. Cette option va placer les assets dans un système de fichiers à l'opposé du service par défaut qui stocke tous les assets au format blob dans la base de données.  
Fichier:Terrain phase 007 proprietes materiaux.jpg|Matériaux
* [https://www.outworldz.com/outworldz_installer/ DreamGrid] est un systeme OpenSimulator compatible windows, gratuit, pré packagé, facile d'installation, facile à exécuter et puissant.
Fichier:Terrain phase 007 materiau bords.jpg | Configuration
<pre>
Fichier:Terrain phase 007 materiau vert.jpg | Ensemble du mesh
[11:57] Andrew Hellershanks : Il reste un peu moins de cinq minutes avant la fin de l'heure. D'autres sujets liés à OS pour aujourd'hui ?
</gallery>
[11:57] Jagga Meredith : Quel que soit mon problème avec MariaDB, il ne s'est pas reproduit.
[11:58] Andrew Hellershanks : Jagga, c'est bon à entendre. J'espère que ça restera comme ça.
[11:58] Jagga Meredith : *note* incrémenter de 0 à 1 est une augmentation des chances de 100%.
[11:58] Jagga Meredith: s/increating/incrementing/
[11:58] Gavin.Hird @grid.xmir.org:8002 : non, je travaille sur le plan B, et il est en train de se construire et de fonctionner dans SL.
[11:59] Misterblue Waves : J'ai utilisé MariaDB sans aucun problème. C'est ce que j'ai incorporé dans opensim-docker (en faisant tourner deux conteneurs dont l'un est l'image stockée de MariaDB).
[12:00] Jagga Meredith : Je n'aime pas les choses qui se cassent et se réparent comme par magie.
[12:00] Vincent.Sylvester @hg.zetaworlds.com:8002 : Je pense toujours que changer le bazar des uuid des groupes type varchar bytes en uuid réel pourrait aider à réduire la taille des requêtes et donc les performances, mais je n'ai pas eu le temps de m'y intéresser.
[12:00] Andrew Hellershanks : Moi non plus, Jagga.
[12:00] Jagga Meredith :toujours fidèle à MariaDB malgré tout.
[12:01] Ubit Umarov : dans certains cas, la question est de savoir pourquoi SQL.
[12:01] Misterblue Waves : @Vincent, c'est vrai. MySQL devient une entreprise et il est difficile de le configurer et de le contrôler.
[12:01] Ubit Umarov : d'autres forks sont passés à d'autres types de base de données avec un certain succès semble-t-il.
[12:02] Misterblue Waves : @UBit, utiliser simplement le système de fichiers ?
[12:02] Gavin.Hird @grid.xmir.org:8002 : quelques succès
[12:02] Ubit Umarov : non, d'autres choses (qui finissent par faire ça) :)
[12:02] Ubit Umarov : comme (Clé valeur) seulement des choses.
[12:03] Ubit Umarov : la plupart des bases de données de nos régions sont insensées.
[12:03] Misterblue Waves : Les bases de données sont les meilleures si l'on fait des requêtes de sélection. La recherche simple clé=>valeur peut être faite facilement.
[12:03] Ubit Umarov : ces tables primaires remplies de colonnes que nous n'utilisons jamais.
[12:03] Ubit Umarov : c'est à dire qu'on n'y accède jamais de manière indépendante.
[12:03] Gavin.Hird @grid.xmir.org:8002 : remplissage
[12:04] Misterblue Waves : nous aurions besoin d'une autre base de données si nous avions besoin de requêtes complexes (sélectionner tous les objets qui ont une résolution supérieure à 0,5 et qui sont à plus de 50 mètres).
[12:04] Jagga Meredith : apparemment dbase est toujours là.  Dbase me manque.
[12:04] Ubit Umarov : le truc c'est que nous n'avons pas de requêtes complexes sur la plupart des choses.
[12:05] Andrew Hellershanks : J'avais l'habitude d'utiliser ça aussi, Jagga.
[12:05] Ubit Umarov : nous sauvegardons et lisons une prim seulement comme un bloc individuel.
[12:05] Kayaker Magic : Les requêtes les plus complexes que j'ai utilisé dans OpenSim sont pour des tâches d'administration à partir d'une page WEB PHP....
[12:05] Ubit Umarov : donc actuellement c'est en fait une configuration (clé, valeur) en termes pratiques.
[12:05] Misterblue Waves : Robust a un magasin de système de fichiers, non ?
[12:06] Ubit Umarov : avec la valeur une info sérialisée.
[12:06] Ubit Umarov : seulement fsassets je pense.
[12:06] Ubit Umarov : et le fichier direct n'est pas si cool.
[12:07] Ubit Umarov : les bases de données essaient d'optimiser l'accès au disque.
[12:07] Ubit Umarov : et faire...
[12:07] Ubit Umarov : en fait, certains demandent leur propre système de fichiers.
[12:07] Gavin.Hird @grid.xmir.org:8002 : à un moment donné, le système de fichiers devient impossible à sauvegarder et à restaurer.
[12:08] Ubit Umarov : le nouveau cache du viewer est un exemple.
[12:08] Ubit Umarov : c'est un pas en arrière
[12:08] Ubit Umarov : l'ancien cache était meilleur.
[12:08] Misterblue Waves : J' ai découvert certains systèmes d'exploitations qui ne se comportent pas très bien pour accéder à des fichiers aléatoires dans des répertoires à plusieurs niveaux.  Thrash, thrash, thrash
[12:08] Jagga Meredith : ORACLE a l'habitude de proposer ses propres systèmes de fichiers "raw" multiples.
[12:09] Ubit Umarov : oui, les systèmes de fichiers des systèmes d'exploitation ne sont pas si bons pour le traitement des bases de données.
[12:09] Jagga Meredith : j'avoue, j'avais un stégosaure de compagnie à l'époque.
[12:09] Kayaker Magic : J'ai vu de très mauvaises performances avec le mysql fourni avec le système DreamGrid, quel mysql fonctionne sous WinCows ?
[12:09] Ubit Umarov : les choses habituelles génériques/spécialisées.
[12:10] Ubit Umarov : apache
[12:10] Ubit Umarov : oops
[12:10] Ubit Umarov : mysql
[12:10] Gavin.Hird @grid.xmir.org:8002 : mysql fonctionne généralement comme une merde, sans réglage c'est encore pire.
[12:11] Ubit Umarov : mais bien sûr, dans plusieurs domaines, notre code rend les bases de données trop lentes.
[12:12] Ubit Umarov : bien et fonctionne même sur sqlite
[12:12] Ubit Umarov : un jour, il faudra réécrire tout ce bazar.
[12:13] Andrew Hellershanks hoche la tête
[12:13] Gavin.Hird @grid.xmir.org:8002 : corrigez le code de postgres, mettez à jour mysql et vous obtiendrez un système beaucoup plus performant.
</pre>


= système de Tâches pour .NET =  
== Matériaux des carrés ==
* [https://fr.wikipedia.org/wiki/Planificateur_de_t%C3%A2ches Planificateur de tâches] : programme informatique permettant de planifier l'exécution automatique et périodique de tâches (commandes, scripts, programmes).  
=== Créer les matériaux ===
* FIFO :  file d'attente ou queue, dans laquelle les premiers éléments entrés sont aussi les premiers à sortir.
* Créer un matériau de base qui sera copié pour chacune des 36 zones carrées du plateau du terrain. Pour cela,  dans le panneau des propriétés des matériaux,  appuyer sur '''le bouton +''' en haut à droite. Appuyer sur '''New''' et nommer le nouveau matériau créé, par exemple, '''"Terrain_carre_modele"'''.  
* LIFO : La dernière donnée enregistrée est ainsi la première à être retirée (sauf commande particulière).
* Aller dans l'espace de travail '''Shading'''. Dans l''''éditeur de Shader''' le matériau que nous venons de créer est représenté sous la forme d'un '''Système de Nœuds'''.
<pre>
* Dans Blender, le terme '''nœud''' est utilisé pour désigner les éléments du système de création de matériaux. Bien que ce terme ne soit pas toujours intuitif, il fait référence à des points de connexion qui '''modifient le signal''' final, allant '''d'une source à un émetteur'''. Chaque nœud représente une fonction ou un processus, et les connexions entre eux déterminent comment les données sont traitées pour créer le matériau final.
[12:14] Misterblue Waves : quel est le ressenti par rapport au système de Tâches pour .NET ? Devrions-nous retirer SmartThreads et passer à un planificateur de tâches (Task scheduler)?
* Avec '''SHIFT + A'''  faire apparaître le menu '''Add''' qui permet d'ajouter un nouveau nœud . Cliquer sur  '''Search''' et cherchez le nœud '''Image Texture'''. Cliquer sur ce nœud et le placer dans l'éditeur de shader. Ce nœud va permettre d'assigner une texture au matériau.  
[12:15] Ubit Umarov : pense que SmartThreads est toujours bien meilleur que le threapool natif.
* Relier le point '''Color''' du nœud '''Image Texture''' au point '''Base Color''' du nœud '''Principal BSDF''' : cliquer avec le bouton gauche sur le premier point, maintenir le bouton enfoncé, tirer jusqu'au deuxième point et relâcher.  
[12:15] Ubit Umarov: qui provoque actuellement des fuites de threads sur mono.
* Créer une nouvelle image en appuyant sur '''New''' dans le nœud '''Image Texture'''. Donner un nom à l'image comme par exemple, "Terrain_Texture". Définir les dimensions de l'image : 2048 pour la largeur (Width)  et 2048  pour la hauteur (Height). À noter : Si on indique 1024*2, Blender 3D  effectuera automatiquement l'opération et affichera 2048. Appuyer sur le bouton '''New Image''' pour terminer.
[12:15] Ubit Umarov: bahh
* Générer 36 matériaux à partir matériau de base qui vient d'être créé. Pour chaque matériau :
[12:16] Ubit Umarov : et a toujours des problèmes de surcharge.
# Dans l'éditeur de propriété des matériaux appuyer sur le '''bouton +'''.  
[12:16] Ubit Umarov : les réponses à ces problèmes sont "votre application est mauvaise... elle ne devrait pas demander autant de threads si rapidement".)
# À gauche du bouton New, déplier la liste des matériaux disponibles et sélectionner "Terrain_carre_modele".  
[12:17] Selby.Evans @grid.kitely.com:8002 : Au revoir tout le monde.
# Créer un nouveau matériau en cliquant sur l''''icône New material''' à gauche du nom du materiau. Un numero est ajouté au nom. Le nom du dernier matériaux généré devrait être '''Terrain_carre_036'''.
[12:17] Ubit Umarov : la seule bonne application pour les gars de MS est celle qui ne fait rien, donc pas de bugs :)
[12:18] Ubit Umarov : salut Selby.Evans
[12:18] Misterblue Waves : au revoir Selby.
[12:18] Ubit Umarov : mais celles où ils répondent aux problèmes avec surcharge de thread ...
[12:18] Misterblue Waves : pas assez rapide :)
[12:19] Ubit Umarov : bien mais il fait mieux sous windows.
[12:19] Ubit Umarov : just smart permet aussi plusieurs pools indépendants.
[12:19] Ubit Umarov : etc.
[12:19] Ubit Umarov : ohh et amusant amusant
[12:20] Jamie.Jordan @grid.kitely.com:8002 : Bonne réunion, merci à tous.
[12:20] Ubit Umarov : le threadpool principal est composé d'un FIFO global et d'un LIFO par thread.
[12:20] Ubit Umarov : la cohérence temporelle ne signifie RIEN pour eux.
[12:20] Andrew Hellershanks : ok, Jamie. Merci. On se voit la semaine prochaine.
[12:21] Ubit Umarov : ( et le LILO et par thread, ne peuvent jamais bien fonctionner, et empêcher la pseudo surcharge )
[12:21] Ubit Umarov : mais bon, c'est comme ça...
[12:22] Ubit Umarov : c'est irritant que mono ne soit pas corrigé.
[12:22] Ubit Umarov : la fuite que je vois semble avoir un faible impact sur la mémoire.
[12:23] Ubit Umarov : mais bon
[12:23] Misterblue Waves : le système de tâches permet d'ajouter des programmes personnalisés et des pools de programmation multiples. C'est l'enveloppe officielle des threads :)
[12:23] Ubit Umarov : les tâches sont une stupidité.
[12:24] Ubit Umarov : il convertit tout le code en une machine statique complexe et lourde.
[12:24] Ubit Umarov : beaucoup plus lent et avec plus de fuites que les autres méthodes.
[12:25] Ubit Umarov : ahh et plus enclin à la surcharge, car il utilise plus de threads.
[12:25] Ubit Umarov : J'ai utilisé task async/await sur le serveur http.
[12:25] Ubit Umarov : MAUVAIS
[12:25] Ubit Umarov : :)
[12:26] Ubit Umarov : retour au modèle EPA
[12:26] Ubit Umarov : ou comment il est appelé
[12:28] Ubit Umarov : La tâche permet seulement un peu plus facile de lire le code de très faible performance.
[12:29] Ubit Umarov : bien sûr, MS dit que c'est le meilleur depuis .net 4.0 où ils l'ont introduit :)
</pre>


= Conclusion=
<gallery>
<pre>
Fichier:Terrain phase 008 ajouter materiau.jpg | Nouveau matériau
[12:27] Andrew Hellershanks : Nous avons presque dépassé la moitié de l'heure. Il est temps de conclure pour aujourd'hui s'il n'y a pas de commentaires finaux pour aujourd'hui.
Fichier:Terrain phase 008 materiau base.jpg | Matériau de base
[12:28] Andrew Hellershanks : Je ne vois personne en train de taper, je vais donc mettre un terme à cette réunion. Merci à tous d'être venus. Nous nous reverrons la semaine prochaine.
Fichier:Terrain phase 008 système de noeuds.jpg | Système de nœuds
[12:28] Motoko.Karu @login.digiworldz.com:8002 : Merci.
Fichier:Terrain phase 008 Menu Add.png | Menu Add
</pre>
Fichier:Terain phase 008 Image texture.jpg | Nœud Image Texture
Fichier:Tarrain phase 008 connexion Image texture.jpg |Connexion
Fichier:Terrain phase 008 creer Image.jpg | Créer une image
Fichier:Terrain phase 008 materiau carré.jpg | Panneau des matériaux
Fichier:Terrain phase 008 meme materiau.jpg | Matériau copié
Fichier:Terrain phase 008 materiaux.jpg | Plusieurs matériaux
</gallery>
=== Assigner les matériaux ===
* Dans l''''espace de travail Shading''', en '''mode Edit''' et vue du dessus ('''NUM 7''') , sélectionner un des carrés du plateau du terrain avec la '''touche L'''.
* Sélectionner le matériaux correspondant au numéro du carré (carré N, matériau Terrain_carre_modele_N) dans l''''éditeur de shader''' ou dans l''''éditeur de propriété des matériaux'''.
* Assigner le matériau à la sélection en appuyant sur le '''bouton Assign''' dans l''''éditeur de propriété des matériaux'''.
* Dans l''''éditeur de shader''' créer une nouvelle texture sur la base de la texture créée dans le premier matériau, en cliquant sur '''le numéro''' à droite du nom de l'image dans le '''nœud Image Texture'''. La texture à son tour prend un numéro comme le matériau, signe que la texture n'est plus liée à la texture de base et qu'elle pourra être modifiée indépendamment.
* Procéder ainsi pour les 36 carrés du plateau du terrain.
<gallery>
Fichier:Terrain phase 009 selection avec L.jpg | Sélection
Fichier:Terrain phase 009 selection materiau.jpg | Matériau
Fichier:Terrain phase 009 assigner.jpg | Assigner
Fichier:Terrain phase 009 Image texture.png | Icône numérotée
Fichier:Terrain phase 009 texture dissociee.jpg | Nouvelle texture
Fichier:Terrain phase 009 selection en cours.jpg | Assignation en cours
Fichier:Terrain phase 009 materiaux assignes.png | Matériaux assignés
</gallery>
 
= Peinture des 37 textures =
== Apprendre à peindre dans Blender : les bords du terrain ==
=== Créer une image ===
* Se placer dans l'espace de travail '''Shading''' et sélectionner '''Terrain_bords''' (le matériau des bords) dans la liste des '''Slots'''.
* Avec '''SHIFT + A'''  faire apparaître le menu '''Add''' qui permet d'ajouter un nouveau nœud . Cliquer sur  '''Search''' et cherchez le nœud '''Image Texture'''. Cliquer sur ce nœud et le placer dans l'éditeur de shader. Ce nœud va permettre d'assigner une texture au matériau.
* Relier le point '''Color''' du nœud '''Image Texture''' au point '''Base Color''' du nœud '''Principal BSDF''' : cliquer avec le bouton gauche sur le premier point, maintenir le bouton enfoncé, tirer jusqu'au deuxième point et relâcher.
* Créer une nouvelle image en appuyant sur '''New''' dans le nœud '''Image Texture'''. Donner un nom à l'image comme par exemple, "Bords_Texture". Définir les dimensions de l'image : 2048 pour la largeur (Width)  et 2048  pour la hauteur (Height). Appuyer sur le bouton '''New Image'''.
<gallery>
Fichier:Terrain phase 010 Slots.png | Slots
Fichier:Terrain phase 008 Menu Add.png | Menu Add
Fichier:Terain phase 008 Image texture.jpg | Nœud Image Texture
Fichier:Tarrain phase 008 connexion Image texture.jpg |Connexion
Fichier:Terrain phase 010 bords texture.png  |Texture des bords.
</gallery>
=== Masquer une partie du maillage ===
* Se placer dans l''''espace de travail Texture Paint'''.
* En peignant les bords, il est possible de peindre involontairement et de manière peu soignée le plateau du terrain. Ce tutoriel explique comment '''protéger une partie d'un mesh''' des projections de peinture indésirables.
* Pour cela, dans la vue 3D sélectionner en '''mode Edit''' les bords du mesh avec la '''touche L''' puis inverser la sélection avec '''CTRL + I'''.
* Enfin, masquer le plateau avec la '''touche H'''. Passer en '''mode object'''.
* Seuls les bords sont visibles et pourront être peints.
<gallery>
Fichier:Terrain phase 010 Bords.jpg| Bords à peindre
</gallery>
=== Découvrir l'espace de travail Texture Paint ===
* Dans ce tutoriel, la texture des bords aura l'apparence de la roche, mais il est également possible d'assurer une continuité avec celle du plateau. La capture d'écran intitulée '''Texture Paint''' dans la '''galerie d'images''' ci-dessous facilite la compréhension de ce tutoriel.
* Sélectionner la '''texture des bords''' dans l''''éditeur d'images''' et dans la '''vue 3D''' comme indiqué sur la capture d'écran.
* Déplier  le '''panneau latéral''' de la vue 3D en appuyant sur la '''touche N''' puis ouvrir l'onglet '''Tool''' (outils) où sont regroupés les outils et options spécifiques pour peindre directement sur les textures des objets, permettant de sélectionner des pinceaux, de régler leur taille, leur force, et d'appliquer divers effets de peinture.
<gallery>
Fichier:Terrain phase 010 Texture Paint.jpg | Texture Paint
</gallery>
=== Test de peinture dans Blender 3D ===
* Pour vérifier que tout est bien en place, faire un '''test de peinture''' sur le mesh avec une simple couleur. Pour cela, en mode '''Texture Paint''', sélectionner '''une couleur''' dans le sélecteur de couleur ('''Color Picker''') dans les outils de peinture du panneau latéral. Vérifier que l''''icône Brush''' (le petit pinceau en haut à gauche de la vue 3D, est bien sélectionnée. Si c'est le cas, '''le curseur de la souris est un cercle''' avec une croix à l'intérieur. La taille du cercle reflète la taille du pinceau. Appuyer sur '''la touche F''' permet de modifier rapidement la taille du pinceau. Une fois la touche enfoncée, il suffit de déplacer la souris pour ajuster la taille selon les besoins.
* '''Avertissement 1 ''': si le pinceau est trop grand, l'ordinateur devra gérer la modification de surfaces étendues, ce qui demande beaucoup de ressources. Selon la puissance de la machine, cela peut entraîner un '''risque de plantage''' sans possibilité de retour en arrière.
* '''Avertissement 2''' : '''les modifications apportées à la texture ne sont pas enregistrées automatiquement'''. Si Blender est fermé sans avoir enregistré le fichier, ces modifications seront perdues. Pour éviter cela, activez l'option File > External Data > automatically packs  et assurez-vous d'enregistrer votre fichier Blender et vos textures aussi souvent que possible.
* '''Le test''' : réduire le pinceau, dessiner sur le mesh. Le dessin devrait apparaître sur la texture de l'éditeur d'images. Inversement, dessiner sur la texture dans l'éditeur d'images. Les modifications devraient apparaître sur le mesh.
<gallery>
Fichier:Terrain phase 010 test peinture.jpg | Test de peinture
</gallery>
=== Trouver une texture  avec BlenderKit ===
* Il est possible d'utiliser une texture ou une image pour peindre sur le mesh, comme une texture de roche. Cela peut être n'importe quelle texture : une texture stockée sur  ordinateur, une texture téléchargée depuis un site quelconque ou un site spécialisé comme [https://ambientcg.com/list?q=rock&sort=popular '''ambientcg.com]'''. Voyons comment trouver facilement des '''textures de bonne qualité et gratuites avec BlenderKit'''.
* '''BlenderKit''' est un add-on pour Blender 3D qui permet aux utilisateurs d'accéder à une bibliothèque en ligne de modèles 3D, de matériaux, de brosses et d'autres ressources. Il facilite l'importation de ces éléments directement dans les projets Blender. BlenderKit propose à la fois des ressources gratuites et payantes.
* Depuis le menu '''Edit>Preferences> Get Extensions''', rechercher BlenderKit. Appuyer sur le bouton '''Install''' placé à côté du nom de l'add-on '''BlenderKit [FREE]'''. Fermer la fenêtre des préférences. La '''barre de menu BlenderKit''' s'affiche en haut et au centre de la vue 3D.
* Dans l'espace de travail Layout, dans l'éditeur de propriété des matériaux, sélectionner le matériau Terrain_carre_modele.
* Depuis le champ de recherche de BlenderKit, '''chercher "coast rock material"'''. Faire un '''clic droit''' sur le deuxième matériau  proposé (voir l'image de la galerie). Le matériaux doit apparaître dans la liste des matériaux dans le panneau des propriétés des matériaux.
* Passer dans l''''espace de travail Shading'''. '''Le système de nœuds''' du matériau téléchargé s'affiche dans l''''éditeur de shader'''.
* Cliquer sur '''le nœud Base Color''', qui est un nœud Image Texture. La texture '''Albedo''' (définissant la couleur de base du matériau) s'affiche dans l'éditeur d'image. En cliquant sur d'autres nœuds Image Texture, d'autres textures s'affichent, comme la normal map par exemple. Cependant, seule la texture du nœud Base Color sera utilisée ici.
* Pour enregistrer la texture, cliquer sur '''menu hamburger''' (trois traits horizontaux) puis aller dans Image> Save as ... '''Enregistrer''' la texture sur l'ordinateur.
<gallery>
Fichier:Terrain phase 011 BlenderKit.jpg |BlenderKit
Fichier:Tableau phase 011 barre blenderKit.jpg | Barre BlenderKit
Fichier:Terrain phase 012 charger materiau.jpg | Charger un matériau
Fichier:Terrain phase 012 enregistrer texture.jpg | Afficher une texture
Fichier:Tarrain phase 012 enregistrer texture roche.png | Enregistrer
</gallery>
<!-- https://ambientcg.com/list?q=rock&sort=popular, coast rock material -->
 
=== Peindre avec une texture ===
* Passer dans l'espace de travail '''Texture Paint'''. Dans l''''éditeur de propriétés''' à droite, cliquer sur l'icône des textures pour ouvrir l''''éditeur de propriétés des textures'''.
* Appuyer sur le '''bouton New''' puis sur le '''bouton Open''' pour ouvrir la texture qui vient d'être enregistrée. '''Nommer''' la texture "Roche".
* Ouvrir le '''panneau latéral''' avec '''la touche N''' et accéder aux outils ('''onglet Tool'''). Sous le menu déroulant '''Texture''', la texture récemment ouverte devrait apparaître. Si ce n'est pas le cas, cliquer sur le carré de prévisualisation des textures. Une fenêtre s'ouvre avec les textures du projet (il ne devrait y en avoir qu'une). Cliquer sur la texture de roche.
* Sous le même menu Texture, cocher la '''case Random''' pour que l'orientation de la texture change à chaque application, ce qui donnera une apparence '''plus réaliste''' à la texture créée.
* Sélectionner du '''blanc''' dans '''Color Picker''' en passant le curseur de droite du noir au blanc.
* Sélectionner la texture des bords (Bords_texture pour ce tuto)  dans l'éditeur d'image et dans la vue 3D (voir l'image Texture Paint).
*  Peindre le bord comme dans le test avec la couleur. Cette fois, il faut '''tapoter''' pour appliquer des plages de textures sur les bords, en veillant à '''varier la taille du pinceau''' pour éviter que le motif ne se répète trop. '''Se placer bien en face''' de la partie à peindre. Ici comme c'est un carré, peindre chaque côté l'un après l'autre en utilisant les touche du '''pavé numérique NUM 3, CTRL + NUM 3 , NUM 1 et CTRL + NUM 1''' pour se placer.
* '''Enregistrer la texture''' depuis le '''menu Image > Save As''' de l'éditeur d'images. Préférer un '''format jpg'''.
<gallery>
Fichier:Terrain phase 013 proprietes textures.jpg|Propriétés des textures
Fichier:Terrain phase 013 ouvrir image.jpg| Ourvir une image
Fichier:Terrain phase 013 panneau lateral.jpg| Panneau latéral
Fichier:Terrain phase 010 Texture Paint.jpg | Texture Paint
Fichier:Terrain phase 013 peindre avec texture.png|Peindre
Fichier:Terrain phase 013 bords peints.jpg
</gallery>
 
== Peindre le plateau du terrain ==
=== Nouvelles textures ===
* Pour peindre l'herbe, charger une '''nouvelle texture''' depuis le panneau des '''propriétés des textures'''. Rechercher '''"Grass material"''' dans '''BlenderKit''' et procéder comme pour la texture de roche dans l''''espace de travail Shading''' avec le '''système de nœuds'''. Penser à créer  un nouveau matériau non assigné. Le sélectionner dans la vue 3D et dans l'éditeur d'image, pour éviter de modifier le matériau d'une partie du mesh . Il est également possible d'utiliser une autre texture d'herbe que celles de BlenderKit.
* Quand le texture d'herbe est prête, dans le panneau des propriétés des textures, appuyer  sur l''''icône New Texture''' à droite du nom de la texture "Roche". Une nouvelle texture "Roche.001" est créée. La renommer  "Herbe".
* Dans le menu déroulant '''Image > Setting'''  des propriétés des textures,  cliquer sur la '''petite croix''' à droite de l'adresse de la texture "Herbe". Utiliser '''Open''' pour charger une nouvelle texture d'herbe. 
* '''Attention''' : (parfois) lorsque l'on enregistre un projet Blender et qu'on le recharge, les textures utilisées pour peindre disparaissent et doivent être rechargées si nécessaire. En revanche, la liste des textures utilisées pendant la peinture reste disponible durant toute la session de travail, permettant de passer d'une texture à l'autre depuis le panneau des outils de peinture.
* Préparer une troisième texture pour '''le lit de la rivière'''. Chercher par exemple '''Gravel material''' dans '''BlenderKit'''. Ensuite, il est possible d'utiliser de nombreuses textures comme des petites fleurs, plusieurs types d'herbes ou de roche, de la terre, etc.
<gallery>
Fichier:Terrain phase 014 meteriau herbe.png | Matériau herbe
Fichier:Terrain phase 014 texture herbe.png | Texture herbe
Fichier:Terrain phase 014 charger texture.jpg | Nouvelle texture
Fichier:Terrain phase 014 texture gravier.png | Texture gravier
</gallery>
 
=== Préparer l'espace de travail ===
* Rester dans l'espace de travail '''Texure Paint'''.
* Afficher uniquement le plateau du terrain. Pour cela, dans la vue 3D utiliser le '''mode Edit''' et le mode '''sélection par face'''. Si  le maillage des bords est sélectionné, le désélectionner avec '''ALT + A'''.  Faire réapparaître le plateau avec '''ALT + H.''' Inverser la sélection avec '''CTRL + I'''. Masquer les bords avec la '''touche H'''.
* Repasser en '''mode Texture Paint''' dans la vue 3D.
* Se placer en vue du dessus avec '''NUM 7'''.
<gallery>
Fichier:Texture phase 015 espace de travai.jpg |Organisation
</gallery>
 
=== Peinture du plateau ===
* La peinture se fait sur l''''ensemble du plateau''', donc simultanément sur les 36 textures de 2048x2048. Dans l''''éditeur d'images''', afficher chaque texture pour visualiser le résultat pendant la peinture.
* Régulièrement, '''enregistrer les textures''' depuis le menu de l'éditeur d'images '''Image> Save All Images'''.
* Pour peindre l'herbe, sélectionner la '''texture d'herbe''' dans le panneau latéral des '''outils de peinture''' de la vue 3D dans l''''espace de travail Texture Paint.'''  Procéder comme pour la peinture des bords. Ne pas oublier de cocher la case '''Random''' sous le menu Texture des outils de peinture. Voir l'image Herbe de la gallerie d'image ci-dessous.
* '''Peindre les montagnes''' de chaque côté de la vallée avec la texture Roche. Sélectionner la texture Roche sous le menu Texture des outils de peinture du panneau latéral de la vue 3D et peindre les montagnes. Pour créer une transition en douceur entre la peinture de la roche et celle de l'herbe sur la texture, diminuer la force  de la texture d'herbe (définir '''Strength''' à 0.330 au dessus de la vue 3D ) et peindre le long de la limite entre les deux textures.
* Pour peindre le lit de la rivière, afficher le plan qui simule le niveau de l'eau pour avoir un repère. Pour cela, dans la vue 3D, passer en mode objet. L'ensemble du terrain s'affiche. Utiliser la combinaison de touche '''ALT + H'''  pour afficher le plan de l'eau. 
* Le plan de l'eau est opaque ; il faut le '''rendre légèrement transparent''' pour mieux diriger et maîtriser la peinture sur le mesh.
* Aller dans l'espace de '''travail Shading.''' Dans la '''vue 3D''' passer en mode objet et sélectionner le plan de l'eau. Dans l''''éditeur de nœuds''', en dessous, appuyer sur le bouton '''New''' pour créer un nouveau matériau pour le plan de l'eau. Dans le nœud '''Principal BSDF''', repérer '''Alpha''' et réduire l'opacité du plan à l'aide du '''curseur''' pour  que l'eau soit encore visible mais qu'on puisse aussi voir le terrain en dessous. Pour voir l'eau transparente l faut passer en mode '''Viewport Shading'''.
* '''Peindre le lit de la rivière''' avec la texture de '''gravier''' dans l'espace de travail Texture paint en mode Texture paint. Marquer les transitions de textures comme ci-dessus.
* Pour '''les finitions''',  peindre des petits plages d'herbes dans la montagne ou au fond de la rivière, assombrir ou éclaircir des zones, utiliser d'aurtes brosses, ajouter d'autres textures comme de très très petites fleurs. Attention aux échelles de grandeur, le  mesh s'étendra sur toute la région.
<gallery>
Fichier:Terrain phase 015 herbe peinte.jpg | Herbe
Fichier:Terrain phase 016 herbe perspective.jpg |Perspective
Fichier:Terrain phase 016 herbe zoom.jpg |Zoom.
Fichier:Terrain phase 016 Transition roche herbe.jpg |Transition
Fichier:Terrain phase 016 plan eau.jpg | Eau opaque
Fichier:Terrain phase 017 rivière.jpg | Espace de travail Shading
Fichier:Terrain phase 017 rivière transparante.jpg | Eau transparente
Fichier:Terrain phase 018 texture finale.jpg | Aperçu
</gallery>
 
= Exporter et importer le terrain =
== Exporter le terrain au format Collada ==
* Passer dans l''''espace de travail Layout''', en '''mode object'''.  '''Sélectionner le terrain''' , attention de ne pas sélectionner le niveau d'eau.
* Ouvrez le '''panneau des propriétés des Modifiers''' (modificateurs) en appuyant sur l'icône avec une petite icône de clé anglaise bleue.
* Ajouter un modificateur '''Decimate''' en appyant sur  '''Add Modifier > Generate > Decimate'''. Le modificateur '''Decimate'''  permet de réduire le nombre de sommets/faces d’un maillage avec un minimum de changements de forme. Avec ce modifier, le terrain sera plus facile à importer dans OpenSimulator. Définir '''Ratio''' à 0.3.
* '''Créer un dossier''' sur l'ordinateur, il contiendra le terrain en mesh au format Collada et  les 37 textures.
* '''Exporter le terrain''' en mesh au format Collada depuis le menu '''File > Export > Collada (.dae) (Legacy).'''
* Une fenêtre s'ouvre. À droite de la fenêtre, déplier le menu  '''Operator Presets''' et sélectionner '''sl+open sim static'''. Sous '''Texture Options''', vérifier que '''Copy''' est bien coché. En haut de la fenêtre, '''chercher le chemin  du dossier''' qui a été créé  pour contenir le mesh et les textures exportés. En bas, vérifier et éventuellement corriger '''le nom du mesh'''. Enfin, appuyer sur le bouton '''Export COLLADA'''.
* Le mesh du terrain et toutes ses textures devraient apparaître dans le dossier d'exportation.
* '''Fermer Blender 3D'''.
<gallery>
Fichier:Terrain phase 019 modificateur decimate.png |Decimate
Fichier:Terrain phase 19 config decimate.jpg | Configuration
Fichier:Terrain phase 019 Menu Export.png | Menu Export
Fichier:Terrain phase 019 fenetre exportation.png | Fenêtre Export
Fichier:Terrain phase 019 dossier.jpg | Élements exportés
</gallery>
 
== Importer le terrain et les textures dans OpenSim  ==
* 🏗️
 
= Installer le terrain dans OpenSim =
== Appliquer les textures sur le mesh ==
* 🏗️
== Placer le  terrain ==
* 🏗️
 
= Interêt d'utiliser un mesh =
* 🏗️
 
= Problèmes possibles =
* 🏗️

Version du 7 juillet 2025 à 16:31

Modélisation du terrain dans Blender 3D


Tout au long du tutoriel, dans Blender 3D,

  • ne pas oublier de placer le pointeur de la souris dans l'éditeur concerné par les commandes envoyées par une ou plusieurs touches du clavier ou par des boutons de la souris.
  • sauvegarder souvent le fichier blender.


Utiliser l'add-on A.N.T.Landscape

Add-on A.N.T.Landscape

Options de l'add-on

  • Utiliser le modèle prédéfini, par exemple "river", pour cela tout en haut de la fenêtre des options de l'add-on, ouvrez le menu déroulant "Opérator Presets".
  • Un peu plus bas dans cette fenêtre, définissez les subdivisions X et subdivisions Y à 133.

Pourtour du terrain

  • En mode object, délectionner le plan qui simule le niveau de l'eau et le masquer à l'aide de la touche H .
  • En mode Edit, sélectionner les sommets de la périphérie du terrain. Pour chaque côté, placez le pointeur de la souris près du bord et en pressant sur les touchez SHIFT + ALT faire un clique gauche. La ligne de sommets devait se sélectionner en une seule fois. Faire cela sur les 4 côtés.
  • Extruder une fois ces sommets vers le bas avec la touche E puis Z (2 ou trois carreaux de la grille).
  • Égaliser la hauteur des sommets : S puis Z puis 0
  • Divisier la hauteur des bords avec CTRL + R et faire 6 boucles avec la molette de la souris.
  • En mode Object sélectionner le terrain et appliquer les modifications du mesh : CTRL + A et sélectionner All Transforms.

Dessiner les coutures du terrain

Coutures des bords

  • En mode Edit, sélectionner la première ligne de sommets au-dessus des bords avec SHIFT + MAJ et en faisant un clic gauche tout près de la ligne. Faire cela sur les 4 côtés. En cas d'erreur supprimer la dernière action avec CTRL + Z. On zoome avec la molette de la souris pour être plus précis.
  • Marquer la couture depuis le menu Edge avec Mark Seam.
  • Sélectionner les arêtes des 4 angles des bords du terrain avec le raccourci clavier SHIFT + MAJ vu précédemment.
  • Marquer la couture depuis le menu Edge avec Mark Seam.

Dessiner 36 carrés sur le terrain

  • Sélectionner les bords du terrain. Pour cela, passer en sélection par face et sélectionner la ligne inférieure des faces avec SHIFT + MAJ. Les 4 côtés devraient être sélectionnés en une fois. Ensuite, enfoncer la touche CTRL et presser la touche + de clavier numérique pour sélectionner une ligne supplémentaire. Presser sur la touche + pour sélectionner l'ensemble des bords du terrain. Pour désélectionner une ligne, utiliser la touche - du pavé numérique à la place de la touche +.
  • Masquer les bords avec la touche H.
  • Passer en vue du dessus avec NUM 7 (touche 7 du pavé numérique) et en sélection par point.
  • Sélectionner le bord gauche du plateau du terrain avec SHIFT + ALT et clic gauche de la souris (toujours zoomer pour se mettre proche du bord cible).
  • Utiliser la technique de la touche NUM + avec CTRL 22 fois pour sélectionner 22 lignes supplémentaires. (Rappel : enfoncer la touche CTRL et utiliser la touche + du pavé numérique pour sélectionner les autres lignes. )
  • Repérer la dernière ligne sélectionnée. Désélectionner tout avec ALT + A et, sélectionner cette dernière ligne avec SHIFT + ALT et clic et la marquer depuis le menu Edge avec Mark Seam.
  • Laisser cette ligne sélectionnée et utiliser la combinaison CTRL + NUM+ 22 fois pour repérer la prochaine ligne de couture à marquer avec Mark Seam. Attention les lignes à gauche de la ligne de départ vont aussi être sélectionnées. Seules les lignes de droite nous intéressent ici.
  • Continuez ainsi pour obtenir 6 subdivisions de 22 lignes chacune sur la largeur du terrain.
  • Subdiviser le terrain de la même façon en partant de la ligne horizontale du dessus pour obtenir 6 subdivisions verticales du terrain. Ainsi la grille obtenue forme 36 carrés.

Générer les UVMap

UVMap des bords

  • En mode Edit, faire réapparaître les bords avec ALT + H.
  • Sélectionner uniquement le plateau en inversant la sélection avec CTRL + I.
  • Masquer le plateau avec la touche H.
  • Sélectionner l'ensemble des bords du terrain avec la touche A en mode Edit.
  • Dans l'espace de travail UV Editing, génerer l'UVMap des bords depuis le menu UV. Utiliser Unwrap Angle Bassed (avec Unwrap Minimum Stretch, le modificateur Decimate déforme le texture des bords, voir Exporter le terrain au format Colla . L'UVMap des bords s'affiche dans la fenêtre de l'éditeur UV.

UVMAP du plateau

  • Afficher le plateau du terrain avec la combinaison de touches ALT + H.
  • Déselectionner le plateau avec ALT + A. Sélectionner chaque côté du bord du terrain en plaçant la souris sur une zone délimitée par des coutures et utiliser la toucher L. Il y a 4 zones, une par côté.
  • Masquer les bords avec la touche H.
  • Le but ici est de maximiser la taille et le nombre d'images à importer dans OpenSim afin d'obtenir une texture aussi nette que possible. Il sera donc nécessaire de générer l'UVMap pour chacune des 36 zones carrées délimitées par des coutures sur le plateau du terrain, et ce, successivement, afin qu'elles occupent le maximum d'espace. Je n'ai pas trouvé d'autre solution, mais peut-être en existe-t-il d'autres. Dans tous les cas, cela nécessitera de répéter cette opération 36 fois.
  • Dans l'espace de travail UV Editing, dans la vue 3D, se placer en vue du dessus NUM 7.Par convention, les carrés seront numérotés de gauche à droite et de haut en bas.
  • En mode Édition et en mode sélection par face, placer le curseur de la souris sur la zone 1 et appuyer sur la touche L pour sélectionner cette zone.
  • Générer l'UVMap de cette zone depuis le menu UV et choisir Unwrap Minimum Stretch si la version de Blender est supérieure ou égale à 4.3 ; sinon, choisir Unwrap Angle Based.
  • Sélectionner chaque zone une par une pour générer son UVMap comme indiqué ci-dessus. Veiller à ce qu'une seule zone soit sélectionnée. Pour désélectionner la zone précédente, il suffit de cliquer dans la nouvelle zone.
  • Il est préférable de vérifier rapidement si toutes les UVMaps ont été générées. Pour cela, une petite routine très rapide peut être utilisée : cliquer sur une zone, appuyer sur L, l'UVMap de la zone s'affiche dans l'éditeur UV, cliquer sur la zone suivante, appuyer sur L, etc. Si une UVMap ne s'affiche pas, c'est qu'elle n'a pas été générée, il faudra le faire.

Créer les matériaux

Matériau des bords

  • En mode Edit, afficher et sélectionner les bords du terrain comme vu précédemment.
  • Ouvrir le panneau des propriétés des matériaux (petite icône orange) dans l'éditeur des propriétés.
  • Appuyer sur le bouton "New". Nommer le matériau, par exemple "Terrain_Bords". Appuyer sur le bouton "Assign" pour attribuer le nouveau materiau à la sélection, c'est à dire ici à l'ensemble des bords du terrain.
  • Il est possible de modifier la couleur dans Base Color.
  • Attention, pour l'instant, un seul matériau a été créé. Même si ce matériau est assigné à une partie du mesh, il est appliqué sur l'ensemble du mesh.

Matériaux des carrés

Créer les matériaux

  • Créer un matériau de base qui sera copié pour chacune des 36 zones carrées du plateau du terrain. Pour cela, dans le panneau des propriétés des matériaux, appuyer sur le bouton + en haut à droite. Appuyer sur New et nommer le nouveau matériau créé, par exemple, "Terrain_carre_modele".
  • Aller dans l'espace de travail Shading. Dans l'éditeur de Shader le matériau que nous venons de créer est représenté sous la forme d'un Système de Nœuds.
  • Dans Blender, le terme nœud est utilisé pour désigner les éléments du système de création de matériaux. Bien que ce terme ne soit pas toujours intuitif, il fait référence à des points de connexion qui modifient le signal final, allant d'une source à un émetteur. Chaque nœud représente une fonction ou un processus, et les connexions entre eux déterminent comment les données sont traitées pour créer le matériau final.
  • Avec SHIFT + A faire apparaître le menu Add qui permet d'ajouter un nouveau nœud . Cliquer sur Search et cherchez le nœud Image Texture. Cliquer sur ce nœud et le placer dans l'éditeur de shader. Ce nœud va permettre d'assigner une texture au matériau.
  • Relier le point Color du nœud Image Texture au point Base Color du nœud Principal BSDF : cliquer avec le bouton gauche sur le premier point, maintenir le bouton enfoncé, tirer jusqu'au deuxième point et relâcher.
  • Créer une nouvelle image en appuyant sur New dans le nœud Image Texture. Donner un nom à l'image comme par exemple, "Terrain_Texture". Définir les dimensions de l'image : 2048 pour la largeur (Width) et 2048 pour la hauteur (Height). À noter : Si on indique 1024*2, Blender 3D effectuera automatiquement l'opération et affichera 2048. Appuyer sur le bouton New Image pour terminer.
  • Générer 36 matériaux à partir matériau de base qui vient d'être créé. Pour chaque matériau :
  1. Dans l'éditeur de propriété des matériaux appuyer sur le bouton +.
  2. À gauche du bouton New, déplier la liste des matériaux disponibles et sélectionner "Terrain_carre_modele".
  3. Créer un nouveau matériau en cliquant sur l'icône New material à gauche du nom du materiau. Un numero est ajouté au nom. Le nom du dernier matériaux généré devrait être Terrain_carre_036.

Assigner les matériaux

  • Dans l'espace de travail Shading, en mode Edit et vue du dessus (NUM 7) , sélectionner un des carrés du plateau du terrain avec la touche L.
  • Sélectionner le matériaux correspondant au numéro du carré (carré N, matériau Terrain_carre_modele_N) dans l'éditeur de shader ou dans l'éditeur de propriété des matériaux.
  • Assigner le matériau à la sélection en appuyant sur le bouton Assign dans l'éditeur de propriété des matériaux.
  • Dans l'éditeur de shader créer une nouvelle texture sur la base de la texture créée dans le premier matériau, en cliquant sur le numéro à droite du nom de l'image dans le nœud Image Texture. La texture à son tour prend un numéro comme le matériau, signe que la texture n'est plus liée à la texture de base et qu'elle pourra être modifiée indépendamment.
  • Procéder ainsi pour les 36 carrés du plateau du terrain.

Peinture des 37 textures

Apprendre à peindre dans Blender : les bords du terrain

Créer une image

  • Se placer dans l'espace de travail Shading et sélectionner Terrain_bords (le matériau des bords) dans la liste des Slots.
  • Avec SHIFT + A faire apparaître le menu Add qui permet d'ajouter un nouveau nœud . Cliquer sur Search et cherchez le nœud Image Texture. Cliquer sur ce nœud et le placer dans l'éditeur de shader. Ce nœud va permettre d'assigner une texture au matériau.
  • Relier le point Color du nœud Image Texture au point Base Color du nœud Principal BSDF : cliquer avec le bouton gauche sur le premier point, maintenir le bouton enfoncé, tirer jusqu'au deuxième point et relâcher.
  • Créer une nouvelle image en appuyant sur New dans le nœud Image Texture. Donner un nom à l'image comme par exemple, "Bords_Texture". Définir les dimensions de l'image : 2048 pour la largeur (Width) et 2048 pour la hauteur (Height). Appuyer sur le bouton New Image.

Masquer une partie du maillage

  • Se placer dans l'espace de travail Texture Paint.
  • En peignant les bords, il est possible de peindre involontairement et de manière peu soignée le plateau du terrain. Ce tutoriel explique comment protéger une partie d'un mesh des projections de peinture indésirables.
  • Pour cela, dans la vue 3D sélectionner en mode Edit les bords du mesh avec la touche L puis inverser la sélection avec CTRL + I.
  • Enfin, masquer le plateau avec la touche H. Passer en mode object.
  • Seuls les bords sont visibles et pourront être peints.

Découvrir l'espace de travail Texture Paint

  • Dans ce tutoriel, la texture des bords aura l'apparence de la roche, mais il est également possible d'assurer une continuité avec celle du plateau. La capture d'écran intitulée Texture Paint dans la galerie d'images ci-dessous facilite la compréhension de ce tutoriel.
  • Sélectionner la texture des bords dans l'éditeur d'images et dans la vue 3D comme indiqué sur la capture d'écran.
  • Déplier le panneau latéral de la vue 3D en appuyant sur la touche N puis ouvrir l'onglet Tool (outils) où sont regroupés les outils et options spécifiques pour peindre directement sur les textures des objets, permettant de sélectionner des pinceaux, de régler leur taille, leur force, et d'appliquer divers effets de peinture.

Test de peinture dans Blender 3D

  • Pour vérifier que tout est bien en place, faire un test de peinture sur le mesh avec une simple couleur. Pour cela, en mode Texture Paint, sélectionner une couleur dans le sélecteur de couleur (Color Picker) dans les outils de peinture du panneau latéral. Vérifier que l'icône Brush (le petit pinceau en haut à gauche de la vue 3D, est bien sélectionnée. Si c'est le cas, le curseur de la souris est un cercle avec une croix à l'intérieur. La taille du cercle reflète la taille du pinceau. Appuyer sur la touche F permet de modifier rapidement la taille du pinceau. Une fois la touche enfoncée, il suffit de déplacer la souris pour ajuster la taille selon les besoins.
  • Avertissement 1 : si le pinceau est trop grand, l'ordinateur devra gérer la modification de surfaces étendues, ce qui demande beaucoup de ressources. Selon la puissance de la machine, cela peut entraîner un risque de plantage sans possibilité de retour en arrière.
  • Avertissement 2 : les modifications apportées à la texture ne sont pas enregistrées automatiquement. Si Blender est fermé sans avoir enregistré le fichier, ces modifications seront perdues. Pour éviter cela, activez l'option File > External Data > automatically packs et assurez-vous d'enregistrer votre fichier Blender et vos textures aussi souvent que possible.
  • Le test : réduire le pinceau, dessiner sur le mesh. Le dessin devrait apparaître sur la texture de l'éditeur d'images. Inversement, dessiner sur la texture dans l'éditeur d'images. Les modifications devraient apparaître sur le mesh.

Trouver une texture avec BlenderKit

  • Il est possible d'utiliser une texture ou une image pour peindre sur le mesh, comme une texture de roche. Cela peut être n'importe quelle texture : une texture stockée sur ordinateur, une texture téléchargée depuis un site quelconque ou un site spécialisé comme ambientcg.com. Voyons comment trouver facilement des textures de bonne qualité et gratuites avec BlenderKit.
  • BlenderKit est un add-on pour Blender 3D qui permet aux utilisateurs d'accéder à une bibliothèque en ligne de modèles 3D, de matériaux, de brosses et d'autres ressources. Il facilite l'importation de ces éléments directement dans les projets Blender. BlenderKit propose à la fois des ressources gratuites et payantes.
  • Depuis le menu Edit>Preferences> Get Extensions, rechercher BlenderKit. Appuyer sur le bouton Install placé à côté du nom de l'add-on BlenderKit [FREE]. Fermer la fenêtre des préférences. La barre de menu BlenderKit s'affiche en haut et au centre de la vue 3D.
  • Dans l'espace de travail Layout, dans l'éditeur de propriété des matériaux, sélectionner le matériau Terrain_carre_modele.
  • Depuis le champ de recherche de BlenderKit, chercher "coast rock material". Faire un clic droit sur le deuxième matériau proposé (voir l'image de la galerie). Le matériaux doit apparaître dans la liste des matériaux dans le panneau des propriétés des matériaux.
  • Passer dans l'espace de travail Shading. Le système de nœuds du matériau téléchargé s'affiche dans l'éditeur de shader.
  • Cliquer sur le nœud Base Color, qui est un nœud Image Texture. La texture Albedo (définissant la couleur de base du matériau) s'affiche dans l'éditeur d'image. En cliquant sur d'autres nœuds Image Texture, d'autres textures s'affichent, comme la normal map par exemple. Cependant, seule la texture du nœud Base Color sera utilisée ici.
  • Pour enregistrer la texture, cliquer sur menu hamburger (trois traits horizontaux) puis aller dans Image> Save as ... Enregistrer la texture sur l'ordinateur.

Peindre avec une texture

  • Passer dans l'espace de travail Texture Paint. Dans l'éditeur de propriétés à droite, cliquer sur l'icône des textures pour ouvrir l'éditeur de propriétés des textures.
  • Appuyer sur le bouton New puis sur le bouton Open pour ouvrir la texture qui vient d'être enregistrée. Nommer la texture "Roche".
  • Ouvrir le panneau latéral avec la touche N et accéder aux outils (onglet Tool). Sous le menu déroulant Texture, la texture récemment ouverte devrait apparaître. Si ce n'est pas le cas, cliquer sur le carré de prévisualisation des textures. Une fenêtre s'ouvre avec les textures du projet (il ne devrait y en avoir qu'une). Cliquer sur la texture de roche.
  • Sous le même menu Texture, cocher la case Random pour que l'orientation de la texture change à chaque application, ce qui donnera une apparence plus réaliste à la texture créée.
  • Sélectionner du blanc dans Color Picker en passant le curseur de droite du noir au blanc.
  • Sélectionner la texture des bords (Bords_texture pour ce tuto) dans l'éditeur d'image et dans la vue 3D (voir l'image Texture Paint).
  • Peindre le bord comme dans le test avec la couleur. Cette fois, il faut tapoter pour appliquer des plages de textures sur les bords, en veillant à varier la taille du pinceau pour éviter que le motif ne se répète trop. Se placer bien en face de la partie à peindre. Ici comme c'est un carré, peindre chaque côté l'un après l'autre en utilisant les touche du pavé numérique NUM 3, CTRL + NUM 3 , NUM 1 et CTRL + NUM 1 pour se placer.
  • Enregistrer la texture depuis le menu Image > Save As de l'éditeur d'images. Préférer un format jpg.

Peindre le plateau du terrain

Nouvelles textures

  • Pour peindre l'herbe, charger une nouvelle texture depuis le panneau des propriétés des textures. Rechercher "Grass material" dans BlenderKit et procéder comme pour la texture de roche dans l'espace de travail Shading avec le système de nœuds. Penser à créer un nouveau matériau non assigné. Le sélectionner dans la vue 3D et dans l'éditeur d'image, pour éviter de modifier le matériau d'une partie du mesh . Il est également possible d'utiliser une autre texture d'herbe que celles de BlenderKit.
  • Quand le texture d'herbe est prête, dans le panneau des propriétés des textures, appuyer sur l'icône New Texture à droite du nom de la texture "Roche". Une nouvelle texture "Roche.001" est créée. La renommer "Herbe".
  • Dans le menu déroulant Image > Setting des propriétés des textures, cliquer sur la petite croix à droite de l'adresse de la texture "Herbe". Utiliser Open pour charger une nouvelle texture d'herbe.
  • Attention : (parfois) lorsque l'on enregistre un projet Blender et qu'on le recharge, les textures utilisées pour peindre disparaissent et doivent être rechargées si nécessaire. En revanche, la liste des textures utilisées pendant la peinture reste disponible durant toute la session de travail, permettant de passer d'une texture à l'autre depuis le panneau des outils de peinture.
  • Préparer une troisième texture pour le lit de la rivière. Chercher par exemple Gravel material dans BlenderKit. Ensuite, il est possible d'utiliser de nombreuses textures comme des petites fleurs, plusieurs types d'herbes ou de roche, de la terre, etc.

Préparer l'espace de travail

  • Rester dans l'espace de travail Texure Paint.
  • Afficher uniquement le plateau du terrain. Pour cela, dans la vue 3D utiliser le mode Edit et le mode sélection par face. Si le maillage des bords est sélectionné, le désélectionner avec ALT + A. Faire réapparaître le plateau avec ALT + H. Inverser la sélection avec CTRL + I. Masquer les bords avec la touche H.
  • Repasser en mode Texture Paint dans la vue 3D.
  • Se placer en vue du dessus avec NUM 7.

Peinture du plateau

  • La peinture se fait sur l'ensemble du plateau, donc simultanément sur les 36 textures de 2048x2048. Dans l'éditeur d'images, afficher chaque texture pour visualiser le résultat pendant la peinture.
  • Régulièrement, enregistrer les textures depuis le menu de l'éditeur d'images Image> Save All Images.
  • Pour peindre l'herbe, sélectionner la texture d'herbe dans le panneau latéral des outils de peinture de la vue 3D dans l'espace de travail Texture Paint. Procéder comme pour la peinture des bords. Ne pas oublier de cocher la case Random sous le menu Texture des outils de peinture. Voir l'image Herbe de la gallerie d'image ci-dessous.
  • Peindre les montagnes de chaque côté de la vallée avec la texture Roche. Sélectionner la texture Roche sous le menu Texture des outils de peinture du panneau latéral de la vue 3D et peindre les montagnes. Pour créer une transition en douceur entre la peinture de la roche et celle de l'herbe sur la texture, diminuer la force de la texture d'herbe (définir Strength à 0.330 au dessus de la vue 3D ) et peindre le long de la limite entre les deux textures.
  • Pour peindre le lit de la rivière, afficher le plan qui simule le niveau de l'eau pour avoir un repère. Pour cela, dans la vue 3D, passer en mode objet. L'ensemble du terrain s'affiche. Utiliser la combinaison de touche ALT + H pour afficher le plan de l'eau.
  • Le plan de l'eau est opaque ; il faut le rendre légèrement transparent pour mieux diriger et maîtriser la peinture sur le mesh.
  • Aller dans l'espace de travail Shading. Dans la vue 3D passer en mode objet et sélectionner le plan de l'eau. Dans l'éditeur de nœuds, en dessous, appuyer sur le bouton New pour créer un nouveau matériau pour le plan de l'eau. Dans le nœud Principal BSDF, repérer Alpha et réduire l'opacité du plan à l'aide du curseur pour que l'eau soit encore visible mais qu'on puisse aussi voir le terrain en dessous. Pour voir l'eau transparente l faut passer en mode Viewport Shading.
  • Peindre le lit de la rivière avec la texture de gravier dans l'espace de travail Texture paint en mode Texture paint. Marquer les transitions de textures comme ci-dessus.
  • Pour les finitions, peindre des petits plages d'herbes dans la montagne ou au fond de la rivière, assombrir ou éclaircir des zones, utiliser d'aurtes brosses, ajouter d'autres textures comme de très très petites fleurs. Attention aux échelles de grandeur, le mesh s'étendra sur toute la région.

Exporter et importer le terrain

Exporter le terrain au format Collada

  • Passer dans l'espace de travail Layout, en mode object. Sélectionner le terrain , attention de ne pas sélectionner le niveau d'eau.
  • Ouvrez le panneau des propriétés des Modifiers (modificateurs) en appuyant sur l'icône avec une petite icône de clé anglaise bleue.
  • Ajouter un modificateur Decimate en appyant sur Add Modifier > Generate > Decimate. Le modificateur Decimate permet de réduire le nombre de sommets/faces d’un maillage avec un minimum de changements de forme. Avec ce modifier, le terrain sera plus facile à importer dans OpenSimulator. Définir Ratio à 0.3.
  • Créer un dossier sur l'ordinateur, il contiendra le terrain en mesh au format Collada et les 37 textures.
  • Exporter le terrain en mesh au format Collada depuis le menu File > Export > Collada (.dae) (Legacy).
  • Une fenêtre s'ouvre. À droite de la fenêtre, déplier le menu Operator Presets et sélectionner sl+open sim static. Sous Texture Options, vérifier que Copy est bien coché. En haut de la fenêtre, chercher le chemin du dossier qui a été créé pour contenir le mesh et les textures exportés. En bas, vérifier et éventuellement corriger le nom du mesh. Enfin, appuyer sur le bouton Export COLLADA.
  • Le mesh du terrain et toutes ses textures devraient apparaître dans le dossier d'exportation.
  • Fermer Blender 3D.

Importer le terrain et les textures dans OpenSim

  • 🏗️

Installer le terrain dans OpenSim

Appliquer les textures sur le mesh

  • 🏗️

Placer le terrain

  • 🏗️

Interêt d'utiliser un mesh

  • 🏗️

Problèmes possibles

  • 🏗️