Aller au contenu

« Réunion du 11-01-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-01-11
= Modélisation du terrain  dans [https://www.blender.org/ Blender 3D] =
=Introduction =  
<br>
* [https://forums.osgrid.org/viewtopic.php?f=8&t=6836 Migration des assets sur Osgrid]
<big><big>Tout au long du tutoriel, dans Blender 3D,
* [http://www.erestraints.com/realrestraint/ Viewer RLV]
* 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.</big></big>
<br>
== Utiliser l'add-on A.N.T.Landscape ==
=== Add-on A.N.T.Landscape ===
* 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''']].


<pre>
=== Options de l'add-on ===
[11:00] Kayaker Magic : Et moi qui espérais que la réunion soit courte....
[11:00] Gavin.Hird @grid.xmir.org:8002 : Bonjour Andrew.
[11:00] Ubit Umarov : oh et il y a  Andrew le banc
[11:00] Ubit Umarov : blanc
[11:00] Andrew Hellershanks : Bonjour, tout le monde.
[11:00] Andrew Hellershanks : Je peux faire en sorte que la réunion soit courte.
[11:00] Andrew Hellershanks : Merci à tous d'être venus. Nous nous reverrons la semaine prochaine.
[11:00] Andrew Hellershanks sourit.
[11:00] JayR.Cela @grid.3rdrockgrid.com:8002: lol
[11:01] Ubit Umarov : Les assets d'osgrid pourraient prendre encore 120 jours.
[11:01] Ubit Umarov: gezz
[11:01] Andrew Hellershanks : Pourquoi une réunion courte, Kayaker.
[11:01] Andrew Hellershanks : 120 jours ? Eek.
[11:01] Andrew Hellershanks : Je vais être un Andrew le blanc pendant un bon moment encore.
[11:01] Gavin.Hird @grid.xmir.org:8002 : Mon dieu, sur quelle variante de covid nous serons à ce moment là ?
[11:01] Kayaker Magic : Ubit plaisantait en disant au revoir, à la semaine prochaine.
[11:01] Jagga Meredith: zulu
[11:01] Ubit Umarov: un potentiel Andrew le rose aurait été pire.
[11:02] Andrew Hellershanks : Je vois mon avatar en gris.
[11:02] Gavin.Hird @grid.xmir.org:8002 : espace gris.
[11:02] Kayaker Magic : Andrew : tu es blanc pour moi, pas de textures.
[11:03] Andrew Hellershanks : Eh bien, le gris est un blanc cassé, en quelque sorte.
[11:03] Andrew Hellershanks : :)
[11:03] Jagga Meredith : Je vais bien.  Mais je n'ai pas changé de tenue depuis environ 5 ans.
[11:03] Gavin.Hird @grid.xmir.org:8002 : il est probablement blanc, mais l'éclairage le fait paraître gris clair.
[11:03] Andrew Hellershanks : Je n'ai pas changé de tenue depuis longtemps non plus.
[11:03] Ubit Umarov : oui, il y a des nuances de gris ici aussi.
[11:03] Gavin.Hird @grid.xmir.org:8002 : Je pense qu'aucun d'entre nous ne l'a fait, haha.
[11:04] Andrew Hellershanks murmure : Je semble être  "chanceux" car je ne vois personne d'autre avec un avatar gris ou blanc. Devrais-je acheter un billet de loterie ?
[11:04] Ubit Umarov : ( et plus de cinquante)
[11:04] Gavin.Hird @grid.xmir.org:8002 : mais c'est seulement si tu utilises le viewer RLV Ubit.
[11:04] Jamie.Jordan @grid.kitely.com:8002 : Bonjour tout le monde.
[11:05] Andrew Hellershanks : Ubit a cessé de porter son masque Covid.
[11:05] Gavin.Hird @grid.xmir.org:8002 : il a abandonné.
[11:05] Andrew Hellershanks : Bonjour, Jamie
[11:05] Gavin.Hird @grid.xmir.org:8002 : Salut Jamie
[11:05] Selby.Evans @grid.kitely.com:8002 : Salut Jamie
[11:05] Gavin.Hird @grid.xmir.org:8002 : ... ou l'inventaire est en cours de migration.
[11:07] Jagga Meredith : à quoi servait la panne du week-end ?
[11:08] Ubit Umarov : oops masque ??
[11:08] Ubit Umarov : Ohh noo
[11:08] Ubit Umarov : corrigé
</pre>


= Le service d'assets de OSGrid : code privé et fermé =
* 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"'''.
* [https://mariadb.org/ MariaDB]
* Un peu plus bas dans cette fenêtre, définissez les subdivisions X et subdivisions Y à 133.
* [https://www.mysql.com/fr/ MySQL]
<gallery>
* [https://opensimworld.com/hop/75039-Lbsa-Plaza Lbsa Plaza sur OSGrid ]
Fichier:Options landscape.jpg| Options
<pre>
Fichier:Terrain phase 001.png| Terrain river
[11:09] Ubit Umarov : pas d'information officielle de la part d'osgrid.
</gallery>
[11:10] Ubit Umarov : mais il semble que mariadb fonctionnant en mode cluster / maître -esclave vient d'exploser à nouveau.
[11:10] Ubit Umarov : et remplacé maintenant par un autre fork de mysql
[11:10] Andrew Hellershanks : ouch
[11:10] Gavin.Hird @grid.xmir.org:8002 : il est peut-être temps d'utiliser une vraie base de données.
[11:11] Gavin.Hird @grid.xmir.org:8002 : fork de mysql ?
[11:11] Ubit Umarov : oui.
[11:11] Gavin.Hird @grid.xmir.org:8002 : qui serait ?
[11:11] Ubit Umarov : ( comme l'était Mariadb )
[11:11] Ubit Umarov : je n'ai pas de déclarations officielles sur osgrid :)
[11:12] Gavin.Hird @grid.xmir.org:8002 : Je suppose qu'ils ne maintiennent pas le fork
[11:12] Gavin.Hird @grid.xmir.org:8002 : Je me demande quel est le nom du projet forké.
[11:12] Ubit Umarov : ces services d'assets ne sont même pas du code opensimulator.
[11:12] Ubit Umarov : mais une solution privée fermée... donc... nous ne pouvons pas en dire grand chose.
[11:12] Gavin.Hird @grid.xmir.org:8002 : alors est-ce que c'est encore une grille de test ?
[11:13] Ubit Umarov : oui test possible pour cette solution fermée et privée, pas pour opensimulator, dans ce domaine :)
[11:13] Ubit Umarov : mais lbsa est en train de brûler le (presque) dernier code.
[11:13] Ubit Umarov : alors cette région est-elle en train de brûler ?
[11:13] Andrew Hellershanks : brûle-t-elle ? :)
[11:14] Ubit Umarov : en fait, c'est la dernière.
</pre>
= Brûler vs Graver : humour de dev ?  =
Ndlr : j'avoue ne pas avoir tout compris, la traduction peut-être très approximative, encore plus que d'habitude. ;)
* [https://fr.wikipedia.org/wiki/RS/6000 RS/600]
* AFAIK : As Far As I Know = Pour autant que je sache.
<pre>
[11:14] Gavin.Hird @grid.xmir.org:8002 : brûler des cycles de CPU
[11:14] Ubit Umarov : ouais :)
[11:14] Andrew Hellershanks : Oui.
[11:14] Ubit Umarov : si je me souviens bien, à l'époque de la production des circuits intégrés, il y avait une étape optionnelle de gravure.
[11:15] Gavin.Hird @grid.xmir.org:8002 : brûlage ou burn-in ?
[11:15] Ubit Umarov : quand les circuits intégrés étaient placés sur un circuit fonctionnant pendant plusieurs heures.
[11:15] Andrew Hellershanks: burn-in (graver)
[11:15] Ubit Umarov : ou cela
[11:16] Andrew Hellershanks : Ce serait brûlé si le test échoue ;)
[11:16] Gavin.Hird @grid.xmir.org:8002 : :-)
[11:16] Ubit Umarov : le problème est que la probabilité d'un défaut a une forme de baignoire (bath tube).
[11:16] Gavin.Hird @grid.xmir.org:8002 : le RS/6000 avait un code de console HW qui disait "le CPU est en feu".
[11:16] Ubit Umarov : élevé dans les premières heures de la vie d'une pièce... puis élevé à nouveau en fin de vie.
[11:17] Ubit Umarov : donc le fait de traiter la pièce avant la production a permis d'exclure un plus grand nombre de ces échecs précoces.
[11:17] Andrew Hellershanks : Je me souviens qu'un produit développé par une entreprise pour laquelle je travaillais il y a quelques
années mettait les composants dans une pièce pour les brûler/graver à haute température.
[11:18] Ubit Umarov : donc pour le coup... code brûlant à lbsa ;)
[11:18] Gavin.Hird @grid.xmir.org:8002 : AFAIK tous les appareils Apple sont soumis à un burn-in avant d'être envoyés aux clients.
[11:19] Andrew Hellershanks : Je dirais que c'est une pratique courante dans l'industrie de faire un burn-in du produit.
[11:19] Gavin.Hird @grid.xmir.org:8002: oui
[11:19] Ubit Umarov : pas vraiment.
[11:19] Ubit Umarov : sur les produits de consommation bon marché.
[11:19] Ubit Umarov : autrefois... plus maintenant.
[11:20] Ubit Umarov : cela reste possible sur les produits haut de gamme.
[11:20] Ubit Umarov : les pièces  défaillantes sont réutilisées sur des produits moins chers ( je pense :p )
[11:20] Ubit Umarov : bien mais à propos d'opensim
[11:20] Ubit Umarov : quelles nouvelles avez-vous ?
</pre>


= Nouvelles d'OpenSim =  
== Pourtour du terrain ==
[https://packages.debian.org/sid/diffstat diffstat]
* En '''mode object''', délectionner le plan qui simule le niveau de l'eau et le masquer à l'aide de '''la touche H''' .
== Nouvelles fonctionnalités ==
* 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.
<pre>
* Extruder une fois ces sommets vers le bas avec '''la touche E puis Z''' (2 ou trois carreaux de la grille).
[11:21] Gavin.Hird @grid.xmir.org:8002 : LL a mentionné qu'ils allaient lancer de nouvelles fonctionnalités cette année
* Égaliser la hauteur des sommets : '''S puis Z puis 0'''
[11:22] Ubit Umarov : dire le contraire signifierait "nous sommes morts" :)
* Divisier la hauteur des bords avec '''CTRL + R''' et faire 6 boucles avec la '''molette''' de la souris.
[11:22] Gavin.Hird @grid.xmir.org:8002 : donc gardez vos reins solides.
* En '''mode Object''' sélectionner le terrain et appliquer les modifications du mesh : CTRL + A et sélectionner All Transforms.
</pre>
<gallery>
== Modification du code des uuid  dans libomv ==
Fichier:Terrain phase 001 H.jpg|Utiliser H
[http://opensimulator.org/wiki/Build_Instructions/fr#Compilation_anticip.C3.A9e_.28Ahead_of_Time_compilation.29_.28AOT.29 JIT -- Compilation à la volée]
Fichier:Terrain phase 001 periph.jpg|Périphérie
<pre>
Fichier:Terrain phase 001 extruder.jpg | E + Z
[11:08] Andrew Hellershanks : Ubit a été occupé la semaine dernière. J'ai touché à beaucoup de fichiers afin d'examiner la façon dont certains codes étaient générés. Cela peut aider un peu à améliorer les performances du code de la grille.
Fichier:Terrain phase 001 egaliser.png | S puis Z puis 0
[11:22] Andrew Hellershanks : En plus des modifications, pour gagner du temps lors de tests ou de comparaisons d'UUID, il y a eu une ou plusieurs mises à jour de la bibliothèque libomv.
Fichier:Terrain phase 001 decoupage.jpg | CTRL + R et molette
[11:22] Ubit Umarov : les changements de libomv sont liés.
Fichier:Terrain phase 001 modif.jpg |Modifications appliquées
[11:22] Ubit Umarov : parce que le code des uuid est dans libomv et a été modifié.
</gallery>
[11:22] Ubit Umarov : modifié
[11:22] Andrew Hellershanks : Je pensais que c'était le cas d'après les messages de commit.
[11:23] Ubit Umarov : donc beaucoup de fichiers ont été modifiés.
[11:24] Andrew Hellershanks : En revoyant les changements d'Ubit, j'ai seulement noté environ 3 autres changements à faire mais aucune erreur.
Cela a pris pas mal de temps pour revoir les commits car ils touchent beaucoup de fichiers.
[11:24] Ubit Umarov : avec des changements comme auuid == UUID.Zero remplacé par un nouveau auuis.IsZero()
[11:24] Ubit Umarov : par exemple
[11:24] Andrew Hellershanks : Je me demande ce que diffstat pourrait rapporter quant au nombre de changements.
[11:24] Ubit Umarov : la première forme signifie au moins 2 blocs de copies de 16 octets..
[11:25] Ubit Umarov : en tant qu'argument passé à la fonction qui fait le ==.
[11:25] Ubit Umarov : dans le vrai code JIT, et parce qu'il y avait une chaîne d'appels... il y avait environ 8 copies.
[11:25] Ubit Umarov : toutes inutiles... mais bon
[11:26] Andrew Hellershanks : Il semble un peu étrange qu'il faille copier des données juste pour faire une comparaison.
[11:26] Ubit Umarov : auuid.IsZero d'autre part est un appel sans arguments à une méthode qui fait la vérification de zéro.
[11:26] Ubit Umarov : donc beaucoup plus rapide.
[11:26] Andrew Hellershanks : J'aurais pensé qu'il aurait pu faire la comparaison en place en utilisant l'emplacement de la variable originale.
[11:27] Ubit Umarov : ouais, la confiance dans les compilateurs :P
[11:27] Andrew Hellershanks : oui. Il peut être assez révélateur de regarder le code assembler généré.
[11:27] Gavin.Hird @grid.xmir.org:8002 : en le copiant des deux côtés, le test sera toujours vrai.
[11:27] Ubit Umarov : et != pourrait même avoir un autre ensemble de copies.
[11:28] Ubit Umarov : par exemple
[11:28] Ubit Umarov : if(ua != ub) a était
[11:28] Ubit Umarov: <Ubit_> <Ubit_> 00007FFB371C10FB  vmovdqu    xmm0,xmmword ptr [rsp+200h] 
<Ubit_> <Ubit_> 00007FFB371C1105  vmovdqu    xmmword ptr [rsp+118h],xmm0 
<Ubit_> <Ubit_> 00007FFB371C110F  vmovdqu    xmm0,xmmword ptr [rsp+210h] 
<Ubit_> <Ubit_> 00007FFB371C1119  vmovdqu    xmmword ptr [rsp+108h],xmm0 
<Ubit_> <Ubit_> 00007FFB371C1123  vmovdqu    xmm0,xmmword ptr [rsp+118h] 
<Ubit_> <Ubit_> 00007FFB371C112D  vmovdqu    xmmword ptr [rsp+0F8h],xmm0 
<Ubit_> <Ubit_> 00007FFB371C1137  vmovdqu    xmm0,xmmword ptr [rsp+108h] 
<Ubit_> <Ubit_> 00007FFB371C1141  vmovdqu    xmmword ptr [rsp+0E8h],xmm0 
<Ubit_> <Ubit_> 00007FFB371C114B  vmovdqu    xmm0,xmmword ptr [rsp+0F8h] 
<Ubit_> <Ubit_> 00007FFB371C1155  vmovdqu    xmmword ptr [rsp+38h],xmm0 
<Ubit_> <Ubit_> 00007FFB371C115C  vmovdqu    xmm0,xmmword ptr [rsp+0E8h] 
<Ubit_> <Ubit_> 00007FFB371C1166  vmovdqu    xmmword ptr [rsp+28h],xmm0 
<Ubit_> <Ubit_> 00007FFB371C116D  lea        rcx,[rsp+38h] 
<Ubit_> <Ubit_> 00007FFB371C
[11:28] Ubit Umarov:  rdx,[rsp+28h] 
<Ubit_> <Ubit_> 00007FFB371C1177  call        System.Guid.op_Equality(System.Guid, System.Guid) (07FFB8FD4BE90h) 
<Ubit_> <Ubit_> 00007FFB371C117C  test        al,al 
<Ubit_> <Ubit_> 00007FFB371C117E  jne        testlixo.Program.Main(System.String[])+03E2h (
[11:29] Ubit Umarov : en mode windows release, code natif i7
[11:30] Andrew Hellershanks : Qu'est-ce que le code faisait auparavant pour la vérification du zéro ?
[11:31] Andrew Hellershanks : Pendant qu'Ubit réfléchit à cette question, d'autres questions sur OpenSim ?
(Ndlr : voir la suite dans le prochain sous chapitre)
[11:32] Ubit Umarov : c'était pareil.
[11:33] Ubit Umarov : UUID.Zero est un uuid comme les autres, prenant la place de ub là.
[11:33] Ubit Umarov : donc même code
[11:35] Ubit Umarov : maintenant :
[11:35] Ubit Umarov : 118 : if (ua.IsZero())
00007FFB371B3317 cmp qword ptr [rsp+190h],0
00007FFB371B3320 jne 00007FFB371B332F 
00007FFB371B3322 cmp qword ptr [rsp+198h],0 
00007FFB371B332B jne 00007FFB371B332F
[11:35] Ubit Umarov : compare juste 4 ulongs.
[11:35] Ubit Umarov : et direct, et inline... pas de copies
[11:36] Ubit Umarov : aussi maintenant
[11:36] Ubit Umarov : 115 : if (ua != ub)
00007FFB371B32C9 vmovdqu xmm0,xmmword ptr [rsp+190h] 
00007FFB371B32D3 vmovdqu xmmword ptr [rsp+0E8h],xmm0 
00007FFB371B32DD vmovdqu xmm0,ptr xmmword [rsp+1A0h] 
00007FFB371B32E7 vmovdqu xmmword ptr [rsp+0D8h],xmm0 
00007FFB371B32F1 mov rcx,ptr qword [rsp+0E8h] 
00007FFB371B32F9 cmp rcx,ptr qword [rsp+0D8h] 
00007FFB371B3301 jne 00007FFB371B3315 
00007FFB371B3303 mov rcx,ptr qword [rsp+0F0h] 
00007FFB371B330B cmp rcx,ptr qword [rsp+0E0h] 
00007FFB371B3313 je 00007FFB371B3317
[11:36] Ubit Umarov : une seule copie.
[11:36] Ubit Umarov : et la comparaison est maintenant la comparaison de 2 ulongs aussi en ligne.
[11:37] Ubit Umarov : vmovdqu est une instruction intel AVX (sse) qui déplace 16 octets (dans un registre xmm).
[11:38] Ubit Umarov : comme je l'ai dit dans d'autres commits "économisez du CO2" "changements inutiles".
[11:38] Ubit Umarov : parce que nous ne voyons aucun effet :p
[11:38] Andrew Hellershanks : Je ne qualifierais pas les changements d'inutiles.
[11:38] Gavin.Hird @grid.xmir.org:8002 : pourquoi pas mono - je suppose que l'assembly généré par mono est assez différent.
[11:38] Ubit Umarov : les utilisateurs normaux inwold ne le remarquent pas.
[11:39] Ubit Umarov : oui, mono JIT est dif.
[11:39] Ubit Umarov : et peut même être celui de ms sur celui de llvm.
[11:39] Andrew Hellershanks : Non, les utilisateurs normaux ne le verront pas, mais ceux qui gèrent une grille remarqueront l'amélioration.
[11:39] Ubit Umarov : yeha, j'espère que cela signifie moins de charge globale sur le processeur.
[11:39] Gavin.Hird @grid.xmir.org:8002 : sans parler du fait que mono utilise aussi LLVM.
[11:39] Ubit Umarov : LLVM est optionnel.
[11:40] Gavin.Hird @grid.xmir.org:8002 : mono sur macOS est un standard llvm.
[11:40] Ubit Umarov : les mêmes disent que ms jit est maintenant plus rapide... certains ne le disent pas.
[11:40] Gavin.Hird @grid.xmir.org:8002 : ce qui le rend un peu plus rapide.
[11:40] Ubit Umarov : Mais ce que j'ai fait précédemment était un gros échec d'optimisation JIT.
[11:40] Ubit Umarov : toutes ces copies sont inutiles.
[11:41] Gavin.Hird @grid.xmir.org:8002 : avec un peu de chance, llvm enlèvera tout le désordre.
[11:41] Andrew Hellershanks : Il est difficile d'obtenir des statistiques utilisables sur l'amélioration, car même une région " inactive " a toujours des bouffées d'activité. Je pense que le changement a fait baisser la charge CPU de ma standalone d'environ 1%, mais les chiffres sont très variables.
[11:41] Ubit Umarov : même sur la nouvelle comparaison.
[11:41] Ubit Umarov : <Ubit_> <Ubit_> 00007FFB371C10FB vmovdqu xmm0,xmmword ptr [rsp+200h] 
<Ubit_> <Ubit_> 00007FFB371C1105 vmovdqu xmmword ptr [rsp+118h],xmm0 
<Ubit_> <Ubit_> 00007FFB371C110F vmovdqu xmm0,xmmword ptr [rsp+210h] 
<Ubit_> <Ubit_> 00007FFB371C1119 vmovdqu xmmword ptr [rsp+108h],xmm0 
<Ubit_> <Ubit_> 00007FFB371C1123 vmovdqu xmm0,xmmword ptr [rsp+118h] 
<Ubit_> <Ubit_> 00007FFB371C112D vmovdqu xmmword ptr [rsp+0F8h],xmm0  
<Ubit_> <Ubit_> 00007FFB371C1137 vmovdqu xmm0,xmmword ptr [rsp+108h] 
<Ubit_> <Ubit_> 00007FFB371C1141 vmovdqu xmmword ptr [rsp+0E8h],xmm0 
<Ubit_> <Ubit_> 00007FFB371C114B vmovdqu xmm0,xmmword ptr [rsp+0F8h] 
<Ubit_> <Ubit_> 00007FFB371C1155 vmovdqu xmmword ptr [rsp+38h],xmm0 
<Ubit_> <Ubit_> 00007FFB371C115C vmovdqu xmm0,xmmword ptr [rsp+0E8h] 
<Ubit_> <Ubit_> 00007FFB371C1166 vmovdqu xmmword ptr [rsp+28h],xmm0 
<Ubit_> <Ubit_> 00007FFB371C116D lea rcx, [rsp+38h] 
<Ubit_> <Ubit_> 00007FFB371C
[11:41] Ubit Umarov : rdx, [rsp+28h] 
<Ubit_> <Ubit_> 00007FFB371C1177 call System.Guid.op_Equality(System.Guid, System.Guid) (07FFB8FD4BE90h) 
<Ubit_> <Ubit_> 00007FFB371C117C test al,al 
<Ubit_> <Ubit_> 00007FFB371C117E jne testlixo.Program.Main(System.String[])+03E2h (
[11:41] Ubit Umarov : ces copies sont aussi inutiles.
[11:41] Ubit Umarov : mais par spec
[11:41] Ubit Umarov : oops c'est l'ancien.
[11:42] Ubit Umarov : 115 : if (ua != ub)
00007FFB371B32C9 vmovdqu xmm0,xmmword ptr [rsp+190h] 
00007FFB371B32D3 vmovdqu xmmword ptr [rsp+0E8h],xmm0 
00007FFB371B32DD vmovdqu xmm0,ptr xmmword [rsp+1A0h] 
00007FFB371B32E7 vmovdqu xmmword ptr [rsp+0D8h],xmm0 
00007FFB371B32F1 mov rcx,ptr qword [rsp+0E8h] 
00007FFB371B32F9 cmp rcx,ptr qword [rsp+0D8h] 
00007FFB371B3301 jne 00007FFB371B3315 
00007FFB371B3303 mov rcx,ptr qword [rsp+0F0h] 
00007FFB371B330B cmp rcx,ptr qword [rsp+0E0h] 
00007FFB371B3313 je 00007FFB371B3317
[11:43] Ubit Umarov : c'est aussi du code JIT stupide... meilleur mais stupide.
[11:43] Ubit Umarov : JIT a détecté qu'il n'était pas nécessaire d'appeler une fonction.
[11:43] Ubit Umarov : mais il n'a pas vu que les copies d'arguments respectifs ne sont pas non plus nécessaires.
</pre>


==Pas d'autres questions ? ==
= Dessiner les coutures du terrain =
[https://fr.wikipedia.org/wiki/Raspberry_Pi Raspberry Pi]
== Coutures des bords ==
<pre>
* 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.  
[11:32] JayR.Cela @grid.3rdrockgrid.com:8002 : rien de mon côté.
* Marquer la couture depuis le menu '''Edge'''  avec '''Mark Seam'''.
[11:32] Andrew Hellershanks regarde Kayaker.
* Sélectionner les arêtes des 4 angles des bords du terrain avec le raccourci clavier '''SHIFT + MAJ''' vu précédemment.
[11:33] Andrew Hellershanks : Bonjour, Michael.
* Marquer la couture depuis le menu '''Edge'''  avec '''Mark Seam'''.  
[11:33] La Chaise de Bill chuchote : C'est la Chaise de Bill
<gallery>
[11:33] Gavin.Hird @grid.xmir.org:8002 : Salut Michael
Fichier:Terrain phase 002 selection.jpg|Sélection
[11:33] Michael.Christopher @cc.opensimulator.org:8002 : bonjour !
Fichier:Terrain phase 002 bord sup.jpg | Ligne supérieure
[11:33] Andrew Hellershanks : Tu ne peux pas t'asseoir là, Michael. Choisis un autre siège.
Fichier:Terrain_phase_002_arete.jpg | Angle
[11:33] Andrew Hellershanks : C'est ça.
Fichier:Terrain phase 002 coutures.png | Coutures
[11:34] Kayaker Magic : C'est bon pour moi cette semaine.
</gallery>
[11:34] Andrew Hellershanks: ok
[11:34] Andrew Hellershanks : Quelqu'un d'autre ?
[11:34] Michael.Christopher @cc.opensimulator.org:8002 : rien de nouveau ici cette semaine, j'attends toujours que le système de remplacement des développeurs arrive :/.
[11:35] Andrew Hellershanks : Le Père Noël est un peu lent dans sa livraison du système, Michael ? ;)
[11:36] Michael.Christopher @cc.opensimulator.org:8002 : lol yea. Nous avons commandé en décembre et il est juste passé au statut "expédition" aujourd'hui *roulement d'yeux*.
[11:36] Gavin.Hird @grid.xmir.org:8002 : bien, essayez d'acheter un Raspberry PI 8GB quelque part
[11:36] Gavin.Hird @grid.xmir.org:8002 : vous pouvez les obtenir à 3x le prix normal.
[11:36] Andrew Hellershanks : J'ai juste mon 4G Pi 4.
[11:36] Gavin.Hird @grid.xmir.org:8002 : le 4GB est également en rupture de stock partout.
[11:37] Gavin.Hird @grid.xmir.org:8002 : Canon demande à ses clients de casser les DRM des toners d'imprimantes car ils ne peuvent plus obtenir les puces pour les toners.
[11:41] Andrew Hellershanks : Bon retour , Jamie
[11:43] Jamie.Jordan @grid.kitely.com:8002 : Merci, j'ai planté je ne sais pas pourquoi.
</pre>


== Compilateurs et problèmes ==
== Dessiner 36 carrés sur le terrain ==
*[https://fr.wikipedia.org/wiki/American_National_Standards_Institute ANSI]
* 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://fr.wikipedia.org/wiki/K%26R K&R]
* Masquer les bords avec la '''touche H'''.  
<pre>
* Passer en vue du dessus avec  '''NUM 7''' (touche 7 du pavé numérique) et en sélection par point.
[11:44] Ubit Umarov : je rigole quand des gens intelligents disent qu'il faut faire confiance aux compilateurs.
* 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).  
[11:44] Ubit Umarov : rire aussi
* 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:45] Gavin.Hird @grid.xmir.org:8002 : ouais, c'était mieux dans le passé quand on pouvait appuyer sur halt, corriger le code dans le noyau et continuer.
* 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:45] Ubit Umarov : aussi == est mauvais
* 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:46] Ubit Umarov : cela signifie 2 arguments.
* Continuez ainsi pour obtenir 6 subdivisions de 22 lignes chacune sur la largeur du terrain.  
[11:46] Ubit Umarov : alors que auuid.Equals(other) fait 1 seul argument
* 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:47] Ubit Umarov : alors oui, les compilateurs sont intelligents et voient tout pour nous... dit-on...
<gallery>
[11:47] Ubit Umarov : LOL
Fichier:Terrain phase 003 base.png |Sélection par face
[11:47] Ubit Umarov : peu importe
Fichier:Terrain_phase_003_selection.jpg | CTRL + NUM +
[11:47] Ubit Umarov : changer le code de bas niveau sur libopenmetaverse
Fichier:Terrain phase 003 selection complete.jpg |Sélection
[11:47] Andrew Hellershanks : J'ai eu un problème une fois avec du code. Quand j'ai creusé dans l'assembly généré, j'ai découvert que le compilateur s'amusait avec le caractère \n (saut de ligne) dans une chaîne. Il aurait dû le laisser tranquille et il aurait été traduit en caractères utilisés par le système d'exploitation lors de la sortie de la chaîne. Le fabricant du compilateur a déclaré qu'il suivait la norme ANSI. La gestion des \N n'a certainement pas été faite selon K&R.
Fichier:Terrain phase 003 bords masques.png |Masquer avec H
[11:47] Ubit Umarov : et eux sur une tonne d'endroits où nous les utilisons.
Fichier:Terrain phase 004 bord gauche.png |Bord gauche
[11:48] Ubit Umarov : oui, les problèmes avec les compilateurs sont aussi vieux que les compilateurs.
Fichier:Terrain phase 004 22 lignes.png |23 lignes
[11:48] Ubit Umarov : gcc était très amusant et l'est toujours.
Fichier:Terrain phase 004 ligne 22 marquee.jpg |Couture
[11:48] Ubit Umarov :(PAS)Très amusant.
Fichier:Terrain phase 004 selection suite.jpg | Repérage suite
[11:49] Ubit Umarov : ceci au moins produit des résultats corrects !!!
Fichier:Terrain phase 004 divisions horizontales.jpg |Subdivisions horizontales
[11:49] Ubit Umarov : et JIT a été capable de voir que le processeur peut copier 16 octets sur une seule instruction.
Fichier:Terrain phase 004 selection horizontale.jpg | Sélection horizontale
[11:49] Ubit Umarov : pas bas
Fichier:Terrain phase 004 36 carres.jpg | 36 carrés.
[11:49] Ubit Umarov : pas mauvais
</gallery>
[11:50] Ubit Umarov : sauf mes fautes de frappe
[11:50] Andrew Hellershanks : :)
[11:50] Ubit Umarov : obtenir un UbitTranslator
[11:50] Ubit Umarov : :p
[11:51] Andrew Hellershanks : nooon... la plupart, sinon tous, d'entre nous savent lire le typon.
[11:51] Ubit Umarov : :)
[11:51] Andrew Hellershanks : Combien de fois ça fait, Jamie ?
[11:51] Michael.Christopher @cc.opensimulator.org:8002 : dont la plupart d'entre nous écrivent en typon ;)
[11:51] Gavin.Hird @grid.xmir.org:8002 : maintenant il fait du sur-place, donc il doit se reconnecter pour effacer cela.
</pre>


==Changements au niveau des scripts et autres==
= Générer les UVMap =
* [http://opensimulator.org/wiki/OsMakeNotecard OsMakeNotecard]
== UVMap des bords ==
* [http://opensimulator.org/wiki/OsMessageObject OsMessageObject]
* En mode Edit, faire réapparaître les bords avec '''ALT + H'''.
* [http://opensimulator.org/wiki/OsMessageAttachments osMessageAttachments]
* Sélectionner uniquement le plateau en inversant la sélection avec '''CTRL + I'''.
* [http://opensimulator.org/wiki/LLUDP_ClientStack/fr LLUDP ClientStack/fr]
* Masquer le plateau avec '''la touche H'''.  
<pre>
* Sélectionner l'ensemble des bords du terrain avec la touche '''A en mode Edit'''.  
[11:52] Ubit Umarov : j'ai aussi appliqué un maximum de 64k sur osmakenotecard.  
* 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.  
[11:52] Ubit Umarov : "annulé (inversé ?) le ralentissement de osMessageObject. réduit également le ralentissement de osMessageAttachments à (100 + 10 *NumberTargetedPrims) milisecondes. Certaines actions du jeu ont montré un léger impact négatif visible, alors testons..."
<gallery>
[11:52] Andrew Hellershanks : Une limite raisonnable, Ubit. 64k de texte, c'est beaucoup de texte à lire. La plupart des gens ne liraient pas une NoteCard avec autant de texte.
Fichier:Terrain phase 005 afficher bords.jpg| Bords affichés
[11:53] Ubit Umarov : un jeu ici sur osg a  montré un impact négatif visible.
Fichier:Terrain phase 005 selection plateau.jpg |Plateau sélectionné
[11:53] Gavin.Hird @grid.xmir.org:8002: ok?
Fichier:Terrain phase 005 plateau masque.png | Masquer avec H
[11:53] Ubit Umarov : " * contourné correctement les octets supplémentaires de l'en-tête lludp, même si cela n'a pas été vu jusqu'à présent.
Fichier:Terrain phase 005 selection bords.png |Sélection avec A
[11:53] Ubit Umarov : c'est plutôt un changement inutile.
Fichier:Terrain phase 005 UVMap bords.jpg | UVMap des bords
[11:54] Ubit Umarov : il se trouve que le protocole LLUDP supporte des en-têtes de paquets plus longs.
</gallery>
[11:54] Ubit Umarov : le code de sortie exploserait si cela se produisait.
[11:54] Ubit Umarov : maintenant je vais juste laisser les octets supplémentaires s'il y en a.
[11:55] Ubit Umarov : je n'ai  vu dans un  viewer aucune utilisation de ces octets.
[11:55] Ubit Umarov : mais c'est une correction de protocole formel.
[11:56] Ubit Umarov : je suppose que cela couvre les changements de code de la semaine dernière.
[11:56] Ubit Umarov : pas beaucoup de rapports de bogues.
[11:56] Ubit Umarov : il y en a un que je ne peux toujours pas repo.
</pre>


=Les viewers -- Nouvelles fonctionnalités =  
== UVMAP du plateau ==
* [https://fr.wikipedia.org/wiki/D%C3%A9cimal_cod%C3%A9_binaire Format BCD]
* Afficher le plateau du terrain avec la combinaison de touches '''ALT + H'''.
* [https://fr.wikipedia.org/wiki/Pabst_Blue_Ribbon  Bière Pabst Blue Ribbon]
* 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/Rendu_physique_r%C3%A9aliste Rendu physique réaliste]
* Masquer les bords avec la '''touche H'''.  
Le rendu physique réaliste a pour but de donner aux objets virtuels une apparence proche de celle qu'ils auraient en réalité, et de baser le rendu des matériaux sur un nombre réduit de propriétés physiques3 qui sont peu interdépendantes, pour simplifier le travail des infographistes
* '''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/Xbox Xbox]
* 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.
* [https://fr.wikipedia.org/wiki/Bob_Ross Bob_Ross]
* 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.
* [https://www.youtube.com/watch?v=0n4f-VDjOBE Happy trees]
* 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'''.
<pre>
* 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:55] Andrew Hellershanks : Jamie vient juste de faire *poof* à nouveau.
* 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:56] Andrew Hellershanks : Nous sommes à quelques minutes de la fin de l'heure. Des questions ou des commentaires de dernière minute ?
<gallery>
[11:56] Andrew Hellershanks : Quelque chose en rapport avec le viewer, Gavin ?
Fichier:Terrain phase 005 selection plateau.jpg | ALT + H
[11:56] Gavin.Hird @grid.xmir.org:8002 : pas vraiment.
Fichier:Terrain phase 006 selection par zone.png | Sélection par zone avec L
[11:57] Andrew Hellershanks : Gavin, j'ai une question concernant le viewer.
Fichier:Terrain phase 005 afficher bords.jpg| Bords sélectionnés
[11:57] Gavin.Hird @grid.xmir.org:8002 : LL a dit qu'ils allaient ajouter de nouvelles fonctionnalités qui nécessiteront des changements de viewer cette année.
Fichier:Terrain phase 006 plateau.jpg | Bords masqués
[11:57] Gavin.Hird @grid.xmir.org:8002 : pas de mention sur quoi
Fichier:Terrain phase 006 36 carres num.jpg | Numérotation
[11:57] Gavin.Hird @grid.xmir.org:8002 : bien sûr.
Fichier:Terrain phase 006 selection de zone.jpg |Sélection par zone avec  L
[11:57] Ubit Umarov : gavin, c'était "pas de nouvelles" :)
Fichier:Terrain phase 006 uvmap carre.jpg | UVMap d'une zone
[11:57] Ubit Umarov : pour une partie de la réunion
</gallery>
[11:57] Ubit Umarov : Évidemment qu'ils vont ajouter quelque chose au viewer.
[11:58] Gavin.Hird @grid.xmir.org:8002 : les nouvelles fonctionnalités seront des choses comme Bento ou quelque chose comme ça.
[11:58] Ubit Umarov : je parie qu'ils ont aussi une tonne de demandes de fonctionnalités.
[11:58] Gavin.Hird @grid.xmir.org:8002 : changements réels de viewer
[11:58] Andrew Hellershanks : Parfois, lorsque je saisis les coordonnées d'une prim dans l'éditeur, elles sont saisies telles quelles. D'autres fois, un chiffre supplémentaire non nul est ajouté. Je peux le forcer à revenir aux trois décimales que j'ai entrées en changeant le nombre puis en le changeant à nouveau. Avez-vous une idée de la raison pour laquelle cela se produit ?
[11:59] Ubit Umarov : Problème d'interface entre Ko et la chaise ?
[11:59] Andrew Hellershanks : Le viewer est tout à fait capable de gérer 3 décimales. C'est toujours un problème quand il veut ajouter un ou deux chiffres supplémentaires.
[11:59] Gavin.Hird @grid.xmir.org:8002 : probablement une imprécision de la virgule flottante.
[11:59] Andrew Hellershanks : Oui, mais si j'entre une autre valeur puis celle que j'ai entrée à l'origine, ça colle généralement.
[11:59] Gavin.Hird @grid.xmir.org:8002 : Je l'ai observé occasionnellement dans mon viewer.
[11:59] Andrew Hellershanks : oui. Cela n'arrive pas tout le temps mais c'est ennuyeux.
[11:59] Ubit Umarov : oui, certains chiffres renvoyés par float ne sont pas ceux que nous avons tapés.
[12:00] Ubit Umarov : parce qu'ils n'ont  pas de représentation exacte.
[12:00] Gavin.Hird @grid.xmir.org:8002: quel viewer ?
[12:01] Ubit Umarov: mais si on les arrondit avant l'affichage, cela devrait être corriger
[12:01] Andrew Hellershanks : Certains nombres ne provoqueront pas cela mais, si je peux mettre un autre nombre que celui que je voulais et que ça colle, cela semble indiquer que ce n'est pas toujours un problème de représentation.
[12:01] Andrew Hellershanks : Gavin, hum... Je pense que tous ceux que j'ai utilisés.
[12:01] Andrew Hellershanks : Plus récemment dans Firestorm.
[12:01] Kayaker Magic : J'ai eu un problème où le viewer n'affichait pas tous les chiffres d'un nombre, si vous faites défiler la petite fenêtre vers la gauche, vous les verrez.
[12:02] Kayaker Magic : Il arrive donc que je reçoive une combinaison de ces chiffres invisibles ajoutés à ce que je tape.
[12:02] Gavin.Hird @grid.xmir.org:8002 : une partie du code qui gère le formatage est ancien, et même le xml pour la disposition de l'interface utilisateur peut être différent d'un champ à l'autre en fonction de la date à laquelle il a été généré.
[12:02] Andrew Hellershanks : Kayaker, cela peut arriver car la fenêtre ne peut afficher qu'un certain nombre de chiffres à la fois.
[12:03] Andrew Hellershanks : hehe... il devrait stocker les chiffres au format BCD. Pas de problème ;)
[12:03] Ubit Umarov : aucune idée de quand nous allons ajouter une nouvelle fonctionnalité à opensim :(
[12:03] Andrew Hellershanks : Est-ce que LL a dit quelles nouvelles fonctionnalités ils prévoient d'ajouter ?
[12:04] Ubit Umarov : non andrew c'était juste un "bien sûr nous aurons quelque chose".
[12:04] Andrew Hellershanks: ok
[12:04] Gavin.Hird @grid.xmir.org:8002 : le xml qui présente un champ dans l'interface utilisateur peut être empilé de plusieurs façons, et en fonction de ce qui précède quoi, il est envoyé dans différentes fonctions, donc oui.
[12:04] Ubit Umarov : et le fait d'ajouter une fonctionnalité ne signifie pas que nous le ferons :)
[12:04] Gavin.Hird @grid.xmir.org:8002: Je ne sais pas.
[12:05] Andrew Hellershanks : Ubit, bien sûr que non.
[12:05] Gavin.Hird @grid.xmir.org:8002 : PBR est une grosse demande
[12:05] JayR.Cela @grid.3rdrockgrid.com:8002: PBR ?
[12:05] Andrew Hellershanks : Gavin, Pabst Blue Ribbon ? ??
[12:05] Gavin.Hird @grid.xmir.org:8002 : rendu basé sur la physique.
[12:05] Kayaker Magic: LOL
[12:06] Gavin.Hird @grid.xmir.org:8002: https://en.wikipedia.org/wiki/Physically_based_rendering
[12:06] Andrew Hellershanks : Gavin, ok. C'est plus clair. Cependant, les programmeurs pourraient préférer d'autres versions de PBR.
[12:07] Gavin.Hird @grid.xmir.org:8002 : Je soupçonne également qu'ils (LL) pourraient lancer une version xbox du viewer.
[12:07] Michael.Christopher @cc.opensimulator.org:8002 : LL xbox viewer ?!?
[12:07] Ubit Umarov : le rendu de la base physique s'appelle "Bob Ross".
[12:07] Gavin.Hird @grid.xmir.org:8002 : ouais xbox
[12:07] Ubit Umarov : laso inclut "happy little trees" etc...
[12:07] Gavin.Hird @grid.xmir.org:8002 : ce qui nécessitera le PBR.
[12:08] Andrew Hellershanks: Ubit, :)
[12:08] Gavin.Hird @grid.xmir.org:8002 : mais nous verrons bien.
[12:08] Andrew Hellershanks fait un signe de tête
</pre>


= Ubit attend des retours sur la version 0.9.2.0=
= Créer les matériaux =
<pre>
== Matériau des bords ==
[12:05] Ubit Umarov : Nous n'avons vu aucun retour sur la version 0.9.2.0.
* En '''mode Edit''', afficher et sélectionner les bords du terrain comme vu précédemment.  
[12:06] Ubit Umarov : en fait, même pas de commentaires.
* Ouvrir le '''panneau des propriétés des matériaux''' (petite icône orange) dans l'éditeur des propriétés.  
[12:06] Ubit Umarov : Je pensais que beaucoup de grilles étaient déjà sur cette version.
* 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.  
[12:07] Andrew Hellershanks : Ubit, je ne compterais pas là-dessus. Beaucoup de grilles n'ont même pas été mises à jour vers la version 0.9 ou ont été lentes à l'adopter. Je ne m'attendrais pas à une migration rapide vers la 0.9.2.
* Il est possible de modifier la couleur dans '''Base Color'''.  
[12:07] Gavin.Hird @grid.xmir.org:8002: I also suspect they may launch an xbox version of the viewer
* 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'''.
[12:07] Michael.Christopher @cc.opensimulator.org:8002: LL xbox viewer?!?
<gallery>
</pre>
Fichier:Terrain phase 005 afficher bords.jpg| Bords sélectionnés
Fichier:Terrain phase 007 proprietes materiaux.jpg|Matériaux
Fichier:Terrain phase 007 materiau bords.jpg | Configuration
Fichier:Terrain phase 007 materiau vert.jpg | Ensemble du mesh
</gallery>


=Conclusion et bon appétit =
== Matériaux des carrés ==
[https://en.wikipedia.org/wiki/Stir_frying Stir frying](en) :  technique de cuisson chinoise dans laquelle les ingrédients sont frits dans une petite quantité d'huile très chaude tout en étant remués ou mélangés dans un wok. Cette technique est originaire de Chine et s'est répandue au cours des derniers siècles dans d'autres régions d'Asie et en Occident. Elle est similaire au sauté dans la technique de cuisson occidentale.  
=== Créer les matériaux ===
[https://opensimworld.com/dir/?grid=grid.kitely.com:8002 Kitely]
* 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"'''.
<pre>
* 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'''.
[12:09] Andrew Hellershanks : Des dernières pensées, commentaires ou questions avant de conclure la réunion d'aujourd'hui ?
* 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:09] JayR.Cela @grid.3rdrockgrid.com:8002 : C'est bon pour moi :)
* 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:09] Ubit Umarov : Qu'est-ce qu'on mange ?
* 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:09] Gavin.Hird @grid.xmir.org:8002 : C'était il y a 3 heures.
* 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:09] Andrew Hellershanks: Stir Fry
* Générer 36 matériaux à partir matériau de base qui vient d'être créé. Pour chaque matériau :
[12:09] Michael.Christopher @cc.opensimulator.org:8002 : je suis aussi d'accord. lol
# Dans l'éditeur de propriété des matériaux appuyer sur le '''bouton +'''.
[12:09] Jamie.Jordan @grid.kitely.com:8002 : Oui, j'ai faim.
# À gauche du bouton New, déplier la liste des matériaux disponibles et sélectionner "Terrain_carre_modele".
[12:10] Kayaker Magic : restes de canard rôti
# 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:10] Ubit Umarov : Dann et tu ne m'as pas appelé Gavin ?
 
[12:10] Gavin.Hird @grid.xmir.org:8002: hehe
<gallery>
[12:10] Andrew Hellershanks : ok, je vous laisse partir à la recherche de nourriture si vous n'avez pas déjà mangé.
Fichier:Terrain phase 008 ajouter materiau.jpg | Nouveau matériau
[12:10] Gavin.Hird @grid.xmir.org:8002 : J'ai des plateaux repas achetés sur Kitely.
Fichier:Terrain phase 008 materiau base.jpg | Matériau de base
[12:10] Andrew Hellershanks : C'est tout pour aujourd'hui. Merci à tous d'être venus. Nous vous reverrons la semaine prochaine.
Fichier:Terrain phase 008 système de noeuds.jpg | Système de nœuds
</pre>
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 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

  • 🏗️