Aller au contenu

« Réunion du 30-11-2021 » et « Modéliser un terrain en 37 Textures pour OpenSim » : différence entre les pages

De OSWiki
(Différence entre les pages)
Page créée avec « Traduction prochaine. Source : http://opensimulator.org/wiki/Chat_log_from_the_meeting_on_2021-11-30 =Introduction & Migration des assets sur Osgrid = [https://forums.osgrid.org/viewtopic.php?f=8&t=6836 Migration des assets sur Osgrid] <pre> [11:01] Selby.Evans @grid.kitely.com:8002 : bonjour à tous. [11:01] Gavin.Hird @grid.xmir.org:8002 : Salut Selby, Andrew [11:01] Andrew Hellershanks : Bonjour à tous. [11:01] Gavin.Hird @grid.xmir.org:8002 : Je pensais... »
 
Balise : Révocation manuelle
 
Ligne 1 : Ligne 1 :
Traduction prochaine.
= Modélisation du terrain  dans [https://www.blender.org/ Blender 3D] =
<br>
<big><big>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.</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''']].


Source : http://opensimulator.org/wiki/Chat_log_from_the_meeting_on_2021-11-30
=== Options de l'add-on ===


=Introduction & Migration des assets sur Osgrid =
* 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://forums.osgrid.org/viewtopic.php?f=8&t=6836 Migration des assets sur Osgrid]
* Un peu plus bas dans cette fenêtre, définissez les subdivisions X et subdivisions Y à 133.
<pre>
<gallery>
[11:01] Selby.Evans @grid.kitely.com:8002 : bonjour à tous.
Fichier:Options landscape.jpg| Options
[11:01] Gavin.Hird @grid.xmir.org:8002 : Salut Selby, Andrew
Fichier:Terrain phase 001.png| Terrain river
[11:01] Andrew Hellershanks : Bonjour à tous.
</gallery>
[11:01] Gavin.Hird @grid.xmir.org:8002 : Je pensais à la question des assets osg.
[11:02] Gavin.Hird @grid.xmir.org:8002 : pas la région.
[11:02] Ubit Umarov : salut andrew et selby.Evans
[11:02] Gavin.Hird @grid.xmir.org:8002 : :-)
[11:02] Ubit Umarov : ahh bien cela prendra du temps.
[11:02] Ubit Umarov : estimé à 1 mois
[11:02] Gavin.Hird @grid.xmir.org:8002 : donc l'année prochaine.
[11:02] Ubit Umarov : jusqu'à la fin de l'opération.
[11:03] Gavin.Hird @grid.xmir.org:8002 : Salut Jagga
[11:03] Andrew Hellershanks : Bonjour, Jagga.
[11:03] Jagga Meredith : Bonjour.
[11:03] Ubit Umarov : yeha pas sûr que les vacances aient été prises en compte dans cette estimation du temps.
[11:03] Andrew Hellershanks : Le temps pour faire quoi ?
[11:03] Gavin.Hird @grid.xmir.org:8002 : Je suppose que l'ordinateur fonctionne aussi vite que n'importe quel autre jour, férié ou non.
[11:04] Ubit Umarov : pour ceux qui ne comprennent pas, osgrid a déplacé les services d'assets vers un autre datacenter.
[11:04] Ubit Umarov : depuis quelques mois maintenant, les nouveaux services fonctionnent, récupérant les assets manquants des anciens services.
[11:04] Gavin.Hird @grid.xmir.org:8002 : et (ndlr : OSGrid) a posté un message indiquant que les ressources qui n'ont pas été récemment utilisées ne seront plus dans l'inventaire pendant environ un mois
[11:04] Ubit Umarov : maintenant cela a été arrêté.
[11:05] Andrew Hellershanks : Oh. Copier les données va prendre un certain temps...
[11:05] Ubit Umarov : les services vont signaler les manquants, comme manquants.
[11:05] Ubit Umarov : le reste des assets est en train d'être copié.
[11:05] Ubit Umarov : et cela va prendre beaucoup de temps.
[11:05] Andrew Hellershanks : Où cela est-il affiché sur le site Web d'osgrid ? Je ne le vois pas sous "News".
[11:05] Ubit Umarov : car il y a environ 5 To de données.
[11:06] Ubit Umarov : C'est sur le forum.
[11:06] Ubit Umarov : gavin l'a trouvé :)
[11:06] Gavin.Hird @grid.xmir.org:8002: https://forums.osgrid.org/viewtopic.php?f=8&t=6836
[11:07] Ubit Umarov : il semble que la recherche des assets manquants par les nouveaux services sur les anciens services ait  perturbé le processus de copie, provoquant ainsi beaucoup de retard.
[11:07] Ubit Umarov : à ce qu'on m'a dit :)
[11:07] Andrew Hellershanks : Oh. Ils l'ont enterré dans le forum ? Je lis rarement les forums.
[11:07] Gavin.Hird @grid.xmir.org:8002 : cela signifie probablement que les couronnes de Noël qu'on n'a pas utilisées depuis Noël dernier devront être oubliées cette année.
[11:08] Andrew Hellershanks : Bonjour, Jamie
[11:08] Vincent.Sylvester @hg.zetaworlds.com:8002 : Il est assez difficile de régler le déplacement des données concernant les assets, même lorsqu'il s'agit de fichiers, car le déplacement d'une grandes quantités de petits fichiers n'est pas ce pour quoi la plupart des systèmes de transfert sont optimisés. Avec rsync, j'ai commencé à tester les paramètres des tampons et du cache ainsi que l'exécution de plusieurs instances sur une partie de l'ensemble des données, car un seul rsync, même avec le multithreading intégré, ne se comporte pas bien lorsqu'il s'agit de déplacer 300 000 fichiers de quelques Ko chacun.  La structure de données des assets, même dans une configuration imbriquée, est un cauchemar, sans parler d'essayer de faire des sauvegardes par version sous une forme raisonnable sans vraiment repousser les limites de ce que la compression peut faire.
[11:09] Ubit Umarov : bien entendu, vous, les gens de l'hypergrid, ne devriez pas constater le problème.
</pre>
=Viewer  & Glow =
[https://www.dayturn.com/viewer/index.php?resources/ Les viewers Dayturn7 pour macOS et pour Windows]
<pre>
[11:09] Jamie.Jordan @grid.kitely.com:8002 : Bonjour tout le monde, je n'ai pas réussi à charger la viewer aujourd'hui.
[11:09] Gavin.Hird @grid.xmir.org:8002 : ok...
[11:10] Ubit Umarov : la visionneuse a fonctionné correctement pour moi ici.
[11:10] Gavin.Hird @grid.xmir.org:8002 : en parlant de viewer, j'ai posté une nouvelle version il y a quelques jours.
[11:10] Andrew Hellershanks : Jamie, np. Tu as quand même réussi à venir ici.
[11:10] Ubit Umarov : seul sl a  des problèmes.
[11:10] Andrew Hellershanks : Gavin, quelque chose de nouveau et d'excitant ?
[11:10] Gavin.Hird @grid.xmir.org:8002 : oui.
[11:10] Selby.Evans @grid.kitely.com:8002 : Bonjour Jamie.
[11:10] Ubit Umarov : il faut se souvenir de l'url de Gavin :)
vous pouvez définir des objets lumineux (glow) pour qu'ils soient 100 % transparents et qu'ils conservent leur luminosité.
[11:11] Ubit Umarov : je veux dire l'url de téléchargement du viewer.
[11:11] Gavin.Hird @grid.xmir.org:8002 : excellent pour faire des fantômes et d'autres choses.
[11:11] Jamie.Jordan @grid.kitely.com:8002 : Salut Selby
[11:11] Andrew Hellershanks : Il ne se conservait pas du réglage du glow avant maintenant ?
[11:11] Gavin.Hird @grid.xmir.org:8002: https://www.dayturn.com/viewer/index.php?resources/
[11:11] Gavin.Hird @grid.xmir.org:8002 : non.
[11:11] Ubit Umarov : ohh comme la lumière de la lune noire sur l'océan ?
[11:12] Ubit Umarov : ils ont oublié de vérifier le glow sur les prims transp ?
[11:12] Gavin.Hird @grid.xmir.org:8002 : c'est un type différent de glow Ubit.
[11:12] Ubit Umarov : mais une classe de bugs similaire :P
[11:12] Gavin.Hird @grid.xmir.org:8002 : ils l'ont fait.
[11:12] Andrew Hellershanks : IIRC, je n'utilise pas de glow supérieur à environ 30%, au delà, la texture est effacée sur la prim et tout ce que vous voyez est blanc.
[11:12] Ubit Umarov : ( mais la lune ne devrait pas être sombre )
[11:13] Gavin.Hird @grid.xmir.org:8002 : La configuration minimale requise est maintenant Windows 10, c'était XP....
[11:13] Kayaker Magic : Hmm, j'ai profité de l'absence de lumière sur la transparence pour faire des lumières clignotantes !
[11:13] Andrew Hellershanks : Gavin, c'est un grand saut. Cela peut exclure un certain nombre d'utilisateurs.
[11:13] Gavin.Hird @grid.xmir.org:8002: oui
[11:14] Ubit Umarov : ça fait sauter 7 et 8 :)
[11:14] Gavin.Hird @grid.xmir.org:8002 : j'ai aussi monté la version macOS d'un cran.
[11:14] Ubit Umarov: et vista!
[11:14] Gavin.Hird @grid.xmir.org:8002: Vista
[11:14] Gavin.Hird @grid.xmir.org:8002: :-)
[11:14] Ubit Umarov : opensim supporte vista !
[11:14] Ubit Umarov : pas XP :(
[11:15] Ubit Umarov : ( vista peut utiliser .net 4.6, XP ne le peut pas, c'est juste ça )
</pre>
= Lumières clignotantes "J'espère que toutes les lumières de Noël utiliseront une animation de texture" =
<pre>
[11:14] Kayaker Magic : Hmm, je donnerais bien à Gavin une copie de mes lumières clignotantes, mais cet asset ne peut pas être trouvé dans l'inventaire :(
[11:15] Gavin.Hird @grid.xmir.org:8002 : Il existe un script de lumières clignotantes dans la bibliothèque LSL.
[11:15] Gavin.Hird @grid.xmir.org:8002 : J'ai donné à Ubit une copie, donc peut-être qu'il l'a dans sa librairie ?
[11:15] Gavin.Hird @grid.xmir.org:8002 : donné*.
[11:15] Ubit Umarov : l'asset sera là en 2022 :)
[11:15] Andrew Hellershanks : Kayaker, l'article du forum dit que vous devrez peut-être attendre un mois.
[11:16] Ubit Umarov : un script clignotant ?
[11:16] Gavin.Hird @grid.xmir.org:8002 : oui.
[11:16] Ubit Umarov : oui, j'ai l'asset.
[11:16] Gavin.Hird @grid.xmir.org:8002 : il utilise le glow.
[11:16] Ubit Umarov : qui en a besoin ?
[11:16] Ubit Umarov:
  timer()
    {
        isOn = !isOn;
        if( isOn ) llSetLinkPrimitiveParamsFast( LINK_THIS,[PRIM_GLOW,faceNo,glowAmount] );
        else llSetLinkPrimitiveParamsFast( LINK_THIS,[PRIM_GLOW,faceNo,0.0] );
    }
[11:16] Ubit Umarov: c'est ça
[11:17] Andrew Hellershanks : Un script simple et agréable.
[11:17] Gavin.Hird @grid.xmir.org:8002: url de téléchargement du viewer : https://www.dayturn.com/viewer/index.php?resources/
[11:17] Kayaker Magic : Ce n'est pas un script clignotant, il utilise llSetTextureAnim pour déplacer la couleur et la TRANSPARENCE entre les parties du mesh.
[11:18] Gavin.Hird @grid.xmir.org:8002 : mettez-le dans un cube Ubit.
[11:18] Ubit Umarov : les clignotants peuvent être un bon tueur de région.
[11:18] Kayaker Magic : Donc le viewer fait tout le travail.
[11:19] Gavin.Hird @grid.xmir.org:8002 : Le CPU de la région est à 0.11% donc je suis sûr qu'un script de clignotant ne la tuera pas.
[11:18] Andrew Hellershanks : Ubit, cela dépend en partie du timer utilisé.
[11:19] Ubit Umarov: définir une lumière (ou glow) est unc mise à jour complète de la prim prim envoyée  à tous les viewers dans la vue
[11:19] Ubit Umarov: il semble que les régions soient complètement hors service à cause de cela
[11:19] Ubit Umarov: flood complet sur lludp
[11:19] Ubit Umarov: llSetTextureAnim est une bonne façon d'éviter cela
[11:19] Gavin.Hird @grid.xmir.org:8002: CPU for the region is 0.11% so I am sure one blinker script will not kill it
[11:19] Kayaker Magic : Ouais, j'ai vu des gens mettre une région à genoux avec des lumières de Noël ! C'est pourquoi j'ai écrit ce clignotant orienté  client.
[11:20] Jagga Meredith: kewl
[11:21] Ubit Umarov : j'espère que toutes les lumières de Noël utiliseront une animation de texture ou similaire.
[11:22] Andrew Hellershanks : J'en ai vu plusieurs qui utilisent des timers courts (ou presque) pour que les scripts affichent un nombre élevé de temps d'exécution.
[11:22] Ubit Umarov : ce n'est pas seulement le CPU.
[11:22] Ubit Umarov : c'est une utilisation massive de lludp.
[11:22] Objet : Script en cours d'exécution
</pre>
= Incidence des scripts sur une région =
<pre>
[11:23] Vincent.Sylvester @hg.zetaworlds.com:8002 : Ce n'est pas aussi mauvais que vous le pensez, j'ai eu près de 40 personnes sur une région avec environ 30 lumières de chaque couleur et une lumière ponctuelle ainsi que quelques changeurs de couleur supplémentaires, etc., ça a mieux fonctionné qu'il y a 5 ans, c'est certain.
[11:23] Vincent.Sylvester @hg.zetaworlds.com:8002 : Nous avons parcouru un bon bout de chemin depuis l'époque où trop de mises à jour de prims  faisaient planter les régions.
[11:23] Gavin.Hird @grid.xmir.org:8002 : voici le script blink.
[11:23] Vincent.Sylvester @hg.zetaworlds.com:8002 : Maintenant, vous obtenez juste des échecs dans la file d'attente de mise à jour des scènes, ce qui donne l'impression que les scripts se sont arrêtés.
[11:24] Jagga Meredith : non copiable
[11:24] Vincent.Sylvester @hg.zetaworlds.com:8002 : Je reçois ça de temps en temps quand les gens décident de placer des scripts de 800 lignes dans quelque chose juste pour aligner une porte.
[11:24] Andrew Hellershanks : La première indication qu'un script peut causer des problèmes est le temps d'exécution élevé du script. Les utilisateurs ne peuvent pas voir de statistiques sur le trafic UDP.
[11:24] Ubit Umarov : en fait, ils le peuvent.
[11:24] Gavin.Hird @grid.xmir.org:8002 : l'aspect est un peu étrange lorsque la transparence est de 100%.
[11:24] Ubit Umarov : mais pas la source.
[11:25] Vincent.Sylvester @hg.zetaworlds.com:8002 : J'ai pas mal d'éclairage avec des fonctions normalement gourmandes, avec quelques astuces vous pouvez réduire l'impact sur la région, mais un faux mouvement et le processeur s'en va...
[11:25] Ubit Umarov : mais lludp est là en plus des stats.
[11:25] Ubit Umarov : ( ce qu'on ne voit pas c'est http, sauf sur singularity =
[11:26] Vincent.Sylvester @hg.zetaworlds.com:8002 : Je n'ai pas vu un seul utilisateur consommer plus de 3mbit après que la région soit chargée pour lui, à moins que vous ne fassiez du DSL sur un morceau de ficelle mouillée, vous êtes généralement bien sur le front du réseau.
[11:26] Kayaker Magic : En parlant de mauvais scripts, Discovery Grid a découvert qu'un de ses utilisateurs utilisait un script qui sauvegardait une carte chaque seconde, et en a faisait plusieurs copies.
[11:26] Ubit Umarov : singularity a un truc sympa sur l'utilisation de la bande passante http.
[11:26] Ubit Umarov : maintenant je vois que j'utilise 50Mo tout seul :p
[11:26] Ubit Umarov : sur une région
[11:27] Vincent.Sylvester @hg.zetaworlds.com:8002 : Si nous entrons dans une discussion sur les déficiences du protocole, nous en aurons pour des jours, il y a tellement d'appels redondants et de choses qui se produisent, au final, cela fonctionne comme par magie, même si cela ne devrait probablement pas fonctionner.
[11:28] Ubit Umarov : j'ai changé la restriction http sur les assets.
[11:28] Andrew Hellershanks : :)
[11:28] Gavin.Hird @grid.xmir.org:8002 : maintenant le cube avec le script peut être copié.
[11:29] Ubit Umarov : remplacé throttle par autre chose, juste plus intéressé par l'utilisation raisonnable.
[11:29] Jagga Meredith : *regarde le cube, hypnotisée*.
[11:29] Ubit Umarov : et avec le type de priorité des données.
[11:29] Ubit Umarov : au cas où vous n'auriez pas remarqué, les avatars se rechargent beaucoup plus vite maintenant :p
[11:29] Andrew Hellershanks : hm... je me demande si quelqu'un a déjà fabriqué une lampe à lave ?
[11:29] Ubit Umarov : si vous et votre région avez de la bande passante...
[11:30] Vincent.Sylvester @hg.zetaworlds.com:8002 : Les fondus de couleurs lents sont faciles à réaliser dans Yengine grâce à une meilleure gestion des délais de script.
[11:30] Vincent.Sylvester @hg.zetaworlds.com:8002 : Il faut juste trouver le bon point d'équilibre pour la complexité de la fonction et la chose s'écrit toute seule.
[11:31] Ubit Umarov : (notez que cela n'a rien à voir avec certaines forks qui ont simplement supprimé les étranglements sans aucun code de remplacement).
[11:31] Ubit Umarov : a
[11:31] Vincent.Sylvester @hg.zetaworlds.com:8002 : Bonne mesure de l'horloge du processeur en voyant à quelle vitesse la lumière change.
</pre>


= Nouvelles d'OpenSim cette semaine =  
== Pourtour du terrain ==
* Certains paramètres qui étaient auparavant uniquement disponibles pour XEngine sont maintenant disponibles dans YEngine.
* En '''mode object''', délectionner le plan qui simule le niveau de l'eau et le masquer à l'aide de '''la touche H''' .
* Certains problèmes de longue date ont finalement été pris en compte,
* 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.
* Une correction de bogue effectuée la semaine dernière empêche certaines prims de changer de type lorsqu'elles sont configurées en flex avec llSetPrimitiveParams. (mantis [http://opensimulator.org/mantis/view.php?id=7896 7896] et [http://opensimulator.org/mantis/view.php?id=7910 7910]).
* Extruder une fois ces sommets vers le bas avec '''la touche E puis Z''' (2 ou trois carreaux de la grille).
* optimisations dans le code pour économiser quelques cycles d'horloge.
* Égaliser la hauteur des sommets : '''S puis Z puis 0'''
* écriture d'un test qui fonctionne sur les deux moteurs de scripts [[XEngine]] et [[YEngine]]
* Divisier la hauteur des bords avec '''CTRL + R''' et faire 6 boucles avec la '''molette''' de la souris.
* [http://wiki.secondlife.com/wiki/LSL_Test_Harness LSL Test Harness]
* En '''mode Object''' sélectionner le terrain et appliquer les modifications du mesh : CTRL + A  et sélectionner All Transforms.
<pre>
<gallery>
[11:31] Ubit Umarov : ok, et quelles sont les nouvelles que vous avez sur opensim ?
Fichier:Terrain phase 001 H.jpg|Utiliser H
[11:31] Ubit Umarov: :)
Fichier:Terrain phase 001 periph.jpg|Périphérie
[11:32] Andrew Hellershanks : Pas beaucoup de changements cette semaine mais quelques uns.
Fichier:Terrain phase 001 extruder.jpg | E + Z
[11:33] Andrew Hellershanks : Certains paramètres qui étaient auparavant uniquement disponibles pour XEngine sont maintenant disponibles dans YEngine.
Fichier:Terrain phase 001 egaliser.png | S puis Z puis 0
[11:33] Vincent.Sylvester @hg.zetaworlds.com:8002 : La plupart des corrections de bogues que j'aime voir, certains problèmes de longue date ont finalement été pris en compte, mais j'aimerais que mantis soit un peu plus flexible avec tout cela.
Fichier:Terrain phase 001 decoupage.jpg | CTRL + R et molette
[11:33] Vincent.Sylvester @hg.zetaworlds.com:8002 : On ne peut pas vraiment établir de statut "à tester" ou "ne peut pas être corrigé maintenant".
Fichier:Terrain phase 001 modif.jpg |Modifications appliquées
[11:33] Andrew Hellershanks : Il y a eu des changements liés au CO2 mais je ne sais pas ce qu'est le CO2.
</gallery>
[11:34] Ubit Umarov: jezzz
[11:34] Vincent.Sylvester @hg.zetaworlds.com:8002 : Demande à une vache Andrew, ils en font beaucoup j'ai entendu.
[11:34] Jagga Meredith : de l'essence ? (Je sais, "ne démarre pas")
[11:34] Andrew Hellershanks : Vincent, je pensais que c'était du méthane.
[11:34] Andrew Hellershanks : :)
[11:34] Ubit Umarov : c'est plutôt du méthane Vincent :)
[11:35] Gavin.Hird @grid.xmir.org:8002 : Vous produisez tous beaucoup de CO2
[11:35] Gavin.Hird @grid.xmir.org:8002 : chaque expiration contient 40 fois plus de CO2 que votre inspiration.
[11:35] Ubit Umarov : oui, mais notre CO2 est équilibré.
[11:35] Ubit Umarov : les plantes ont tout capturé au cours de notre vie.
[11:36] Ubit Umarov : donc notre co est en quelque sorte "neutre".
[11:36] Gavin.Hird @grid.xmir.org:8002 : Le CO2 n'est absolument pas pertinent pour toute discussion. C'est un gaz à l'état de trace qui représente 0,04% de l'atmosphère.
[11:36] Ubit Umarov : mais oui, sur les commits, il s'agit d'économiser un peu de travail du processeur, donc de l'énergie, donc du CO2 dans la plupart des régions.
[11:36] Ubit Umarov: :p
[11:37] Andrew Hellershanks : Une correction de bogue effectuée la semaine dernière empêche certaines prims de changer de type lorsqu'elles sont configurées en flex avec llSetPrimitiveParams. (mantis 7896 et 7910).
[11:37] Ubit Umarov : "essayez de sauver quelques zeptogrammes de CO2"
[11:37] Ubit Umarov : pas optimiste sur l'impact réel sur le co2 :p
[11:37] Gavin.Hird @grid.xmir.org:8002 : toute l'énergie de mes régions est générée par des centrales hydroélectriques.
[11:37] Andrew Hellershanks : Ubit, j'ai lu ça et je n'ai aucune idée de ce que cela signifie.
[11:37] Ubit Umarov : vous le savez maintenant :p
[11:37] Vincent.Sylvester @hg.zetaworlds.com:8002 : La mémoire a été moins un problème avec OpenSim, mais étant donné que vous ne pouvez utiliser qu'un ou deux cœurs par instance, je pense que le maximum que j'ai vu est de 330% de cpu, économiser de petits morceaux ici et là est utile.
11:38] Andrew Hellershanks cherche la définition de zeptogramme.
[11:38] Andrew Hellershanks : Aucun mot de ce type n'a été trouvé dans le dictionnaire.
[11:38] Gavin.Hird @grid.xmir.org:8002: :-)
[11:38] Vincent.Sylvester @hg.zetaworlds.com:8002 : Certains des changements que je peux imaginer dans certaines situations où il est beaucoup utilisé pourraient avoir un impact plus important, mais rien que l'on puisse vraiment mesurer étant donné le flux de cpu et de threading.
[11:38] Ubit Umarov : tu as un mauvais dictionnaire lol
[11:39] Ubit Umarov : c'est 10^-21 gramme :p
[11:39] Gavin.Hird @grid.xmir.org:8002: yeah
[11:39] Gavin.Hird @grid.xmir.org:8002 : 1 zeptogramme = 0,001 attogramme
[11:39] Jagga Meredith : *Se souvient du professeur de mathématiques du lycée qui disait "oh oui, il y a des choses comme Tera- et pico- mais vous ne les utiliserez jamais".
[11:39] Gavin.Hird @grid.xmir.org:8002 : ou 1 000 yoctogrammes.
[11:40] Andrew Hellershanks : Je n'ai jamais vu zepto avant en termes d'unité de mesure.
[11:40] Ubit Umarov : en fait, les mantis 7896 et 7910 étaient un bug que nous avions depuis toujours.
[11:40] Ubit Umarov : j'espère que c'est corrigé maintenant.
[11:40] Ubit Umarov : en fait, je l'ai fait aujourd'hui.
[11:40] Andrew Hellershanks : Jagga, j'utilise souvent pico.
[11:40] Jagga Meredith : exactement.
[11:40] Vincent.Sylvester @hg.zetaworlds.com:8002: En début de semaine je me suis intéressé à un problème qui concerne des items supprimés qui ne sont pas supprimés quand c'est demandé. Mais il semble que ces items "persitent"  seulement jusqu'à ce que vous vous reconnectiez. Je n'en suis pas sûr mais, je pense que c'est un problème inexistant ou du moins auto-correctif.
[11:41] Ubit Umarov : difficile d'économiser le même picogramme de CO2 en changeant quelques lignes de code :p
[11:41] Ubit Umarov : difficile d'économiser...
[11:42] Jagga Meredith : c'est vieux.
[11:43] Ubit Umarov : certains paramètres lsl sur le [xengine] sont nécessaires sur le [yengine] comme l'a dit andrew certains paramètres qui n'étaient présents que sur X sont nécessaires aussi sur Y.
[11:43] Ubit Umarov : actuellement le code LSLapi les recherche dans les moteurs respectifs.
[11:43] Ubit Umarov : j'ai donc fait une copie de ces fichiers.
[11:44] Ubit Umarov : possible dans le futur qu'ils aient leur propre section.
[11:45] Andrew Hellershanks : Je pense avoir enfin compris la référence au CO2 dans le commentaire. C'était la façon légèrement cryptique d'Ubits de dire qu'il a fait quelques optimisations dans le code pour économiser quelques cycles d'horloge.
[11:45] Vincent.Sylvester @hg.zetaworlds.com:8002 : J'ai fini de corriger les tests de moteur de script précédemment cassés et désactivés pour X et je les ai rendus disponibles en tant que copies pour Y. Ubit m'a remis un script de test de conformité qui semble fonctionner presque complètement dans Y. Il se comporte un peu plus mal pour X. J'ai écrit un test à partir de ce script pour qu'il fonctionne sur les deux, de sorte que les changements apportés aux moteurs de script peuvent maintenant être testés pour les régressions.
[11:45] Ubit Umarov : pas pour gavin.Hird.
[11:46] Ubit Umarov : mais c'est sûr pour les serveurs en Pologne par exemple.
[11:47] Gavin.Hird @grid.xmir.org:8002 : ne pas économiser du CO2, mais réduire la facture d'électricité.
[11:47] Ubit Umarov : j'envisage d'underclocker ma machine :)
[11:47] Gavin.Hird @grid.xmir.org:8002 : comme l'Europe est dans une telle situation de pénurie d'énergie, nous lui vendons toute notre énergie, donc mon prix par kWh a été multiplié par 11 le mois dernier.
[11:48] Vincent.Sylvester @hg.zetaworlds.com:8002 : En travaillant sur les tests, j'ai trouvé quelques problèmes avec les changements qui se déclenchent de manière aléatoire alors qu'ils ne sont pas commandés en tant que tels, bien que je ne sois pas entièrement sûr que ce soit vraiment le cas, je me gratte encore la tête sur ce point.
[11:49] Andrew Hellershanks : Vincent, c'est bien d'avoir un ensemble de tests appropriés pour le moteur de script. Est-ce qu'ils testent la précision du timing de certaines fonctions de script ?
[11:49] Andrew Hellershanks : Bonjour, Dennis.
[11:50] Gavin.Hird @grid.xmir.org:8002 : Salut Dennis
[11:50] Vincent.Sylvester @hg.zetaworlds.com:8002 : Je pourrais écrire un test comme ça, je suppose.
[11:50] Vincent.Sylvester @hg.zetaworlds.com:8002 : Il existe un test pour l'exécution d'un script simple, j'ai copié une grande partie de ce code et j'ai simplement inséré le script de test de conformité pour l'exécuter.
[11:50] Andrew Hellershanks : J'ai trouvé des problèmes de timing avec KFM et/ou llTargetOmega.
[11:50] Vincent.Sylvester @hg.zetaworlds.com:8002 : Techniquement, on peut exécuter n'importe quel script et vérifier le résultat.
[11:51] Gavin.Hird @grid.xmir.org:8002 : LL n'a-t-il pas publié un grand nombre de tests de script ?
[11:51] Ubit Umarov : celui que j'ai partagé avec Vincent est l'un de ceux-là gavin.Hird
[11:52] Gavin.Hird @grid.xmir.org:8002: http://wiki.secondlife.com/wiki/LSL_Test_Harness
[11:52] Ubit Umarov : mais utile pour vérifier l'ordre des évènements.
[11:52] Gavin.Hird @grid.xmir.org:8002: ok
</pre>


= Timer et précision =
= Dessiner les coutures du terrain =
<pre>
== Coutures des bords ==
[11:51] Vincent.Sylvester @hg.zetaworlds.com:8002 : Les timers sont étranges, mais en interne, en fonction de la façon dont ils opèrent, vous pouvez faire des changements mineurs dans la façon dont vous appelez le timer, ce qui augmente la précision, mais il ne sera pas, même dans SL, précis dans le temps.
* 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:52] Ubit Umarov : une affaire qui a fait fumer un peu le cerveau de Vincent :)
* Marquer la couture depuis le menu '''Edge'''  avec '''Mark Seam'''.
[11:52] Andrew Hellershanks : Vincent, le problème avec ça, c'est que ce n'est pas fiable. Vous copiez le script sur une grille différente et vous devez recalculer les ajustements.
* Sélectionner les arêtes des 4 angles des bords du terrain avec le raccourci clavier '''SHIFT + MAJ''' vu précédemment.
[11:53] Andrew Hellershanks : Dans certains cas, le viewer peut être (en partie ?) la cause des problèmes de timing.
* Marquer la couture depuis le menu '''Edge'''  avec '''Mark Seam'''.
[11:54] Vincent.Sylvester @hg.zetaworlds.com:8002 : Eh bien, tu peux presque toujours réduire de 0,3% le temps que tu veux, donc 10 devient 9,7 puis tu t'assures de 9,7f ou le double 9,777777f et tu obtiens environ deux fois plus de précision sur dix minutes qu'avant.
<gallery>
[11:54] Vincent.Sylvester @hg.zetaworlds.com:8002 : Sur la plupart des régions, sauf les plus chargées, cela fonctionne assez bien.
Fichier:Terrain phase 002 selection.jpg|Sélection
[11:54] Vincent.Sylvester @hg.zetaworlds.com:8002 : J'avais l'habitude de calculer la différence de temps et, une fois la seconde passée, de réinitialiser l'événement timer.
Fichier:Terrain phase 002 bord sup.jpg | Ligne supérieure
[11:55] Vincent.Sylvester @hg.zetaworlds.com:8002 : Ou utiliser un timer plus petit dans la plage de précision que vous voulez, disons toutes les 5 minutes pour une vérification horaire.
Fichier:Terrain_phase_002_arete.jpg | Angle
[11:55] Ubit Umarov : (jesus non :P )
Fichier:Terrain phase 002 coutures.png | Coutures
[11:55] Dennis Ravnsholm : Merci.
</gallery>
[11:56] Ubit Umarov : ne fais pas ça :p
 
[11:56] Andrew Hellershanks : Je soupçonne que le code de la grille ou celui du viewer ne suit pas correctement la différence de temps lorsque certaines fonctions sont appelées.
== Dessiner 36 carrés sur le terrain ==
[11:56] Vincent.Sylvester @hg.zetaworlds.com:8002 : Je veux dire qu'il y a aussi le problème suivant : plus vous remplissez l'événement timer, plus il sera lent dans l'ensemble et il ne redémarre le compte qu'une fois l'événement terminé, pas quand il est déclenché.
*  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 +.
[11:56] Andrew Hellershanks : Lorsque j'ai écrit une routine pour déterminer les impulsions par seconde, j'ai pris en compte le fait que le temps entre les appels pouvait ne pas être de 1 seconde. J'ai pris le nombre d'impulsions et l'ai divisé par le temps réel écoulé depuis l'appel précédent.
* Masquer les bords avec la '''touche H'''.  
[11:57] Vincent.Sylvester @hg.zetaworlds.com:8002 : Par exemple, si vous voulez que quelque chose s'exécute deux fois par seconde, ne mettez pas une ligne unique qui fait dix choses, mais dix lignes qui font toutes la même chose, ce qui réduit le nombre de "sous-routines" pour ainsi dire.
* Passer en vue du dessus avec  '''NUM 7''' (touche 7 du pavé numérique) et en sélection par point.
[11:57] Andrew Hellershanks : Vous partez, kayakiste ?
* 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:58] Vincent.Sylvester @hg.zetaworlds.com:8002 : En fin de compte, vous ne faites qu'appliquer des astuces et des solutions de contournement, le timing précis est une industrie d'un milliard de dollars pour les marchés boursiers dans le monde entier, le petit ole OpenSim ne leur donnera pas une course pour leur argent de sitôt.
* 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:58] Kayaker Magic : Pas moi ! Quelqu'un a atterri sur ma tête pourtant...
* 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:58] Gavin.Hird @grid.xmir.org:8002 : il y a toutes sortes de blocages dans le viewer en fonction de ce qui se passe, donc je suppose qu'il ne peut pas fournir un timing précis.
* 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:58] Andrew Hellershanks : oh, ok. On aurait dit que tu étais debout.
* Continuez ainsi pour obtenir 6 subdivisions de 22 lignes chacune sur la largeur du terrain.
[11:59] Kayaker Magic : Bienvenue Dennis !
* 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:59] Kayaker Magic murmure : Tu as une heure de retard pour la réunion !
<gallery>
[11:59] Andrew Hellershanks : N'y a-t-il aucun moyen de savoir quelle était l'heure actuelle et de la comparer à l'heure qu'il est maintenant ? Ce n'est peut-être pas une seconde. Il peut s'agir de 1,04 seconde. Le chronométrage peut être précis si vous utilisez le temps réel entre les appels.
Fichier:Terrain phase 003 base.png |Sélection par face
[12:01] Vincent.Sylvester @hg.zetaworlds.com:8002 : On peut obtenir des temps précis dans des mesures plus grandes, mais en dessous de 10 secondes, il n'y a plus de chiffres avant la virgule.
Fichier:Terrain_phase_003_selection.jpg | CTRL + NUM +
[12:01] Andrew Hellershanks : Je n'ai pas creusé dans la partie du code qui traite du passage du temps. Je pourrais le faire si je peux me libérer d'un autre travail que je dois faire.
Fichier:Terrain phase 003 selection complete.jpg |Sélection
[12:02] Gavin.Hird @grid.xmir.org:8002 : le code du timing du viewer  est dans llcommon/llfasttimer.cpp/h
Fichier:Terrain phase 003 bords masques.png |Masquer avec H
[12:02] Gavin.Hird @grid.xmir.org:8002 : parce que vous avez aussi llcommon/llframetimer.cpp/h.
Fichier:Terrain phase 004 bord gauche.png |Bord gauche
[12:02] Andrew Hellershanks : Gavin, merci. Je vais devoir chercher l'équivalent dans OS.
Fichier:Terrain phase 004 22 lignes.png |23 lignes
[12:02] Vincent.Sylvester @hg.zetaworlds.com:8002 : Je suppose que l'on pourrait suivre en interne si l'événement est désynchronisé et le reprogrammer, de la même manière que l'on teste si l'événement de la minuterie s'est produit à modulo zéro du temps fixé ou non, mais cela ajoute de la complexité, ce qui signifie moins de vitesse globale.
Fichier:Terrain phase 004 ligne 22 marquee.jpg |Couture
[12:03] Gavin.Hird @grid.xmir.org:8002 : et llcommon/llheartbeat.cpp/h
Fichier:Terrain phase 004 selection suite.jpg | Repérage suite
[12:03] Vincent.Sylvester @hg.zetaworlds.com:8002 : Lorsque vous devez exécuter des choses toutes les minutes, vous ne vous souciez généralement pas beaucoup de quelques secondes.
Fichier:Terrain phase 004 divisions horizontales.jpg |Subdivisions horizontales
[12:03] Andrew Hellershanks : Le  timing était autrefois un peu plus précis qu'il ne l'est aujourd'hui. C'est quelque chose que j'ai remarqué et qui affecte une chose sur laquelle je travaillais, donc je vais peut-être devoir creuser la question.
Fichier:Terrain phase 004 selection horizontale.jpg | Sélection horizontale
[12:04] Andrew Hellershanks : Vincent, non, mais quand tu fais des choses basées sur le temps, comme des choses qui sont déplacées via KFM, ça compte.
Fichier:Terrain phase 004 36 carres.jpg | 36 carrés.
[12:05] Vincent.Sylvester @hg.zetaworlds.com:8002 : Encore une fois, plus l'intervalle de temps est faible, plus c'est mauvais.
</gallery>
[12:05] Andrew Hellershanks : Je viens de remarquer que nous sommes au début de l'heure. Est-ce que quelqu'un a une question à poser à quelqu'un qui doit partir bientôt ?
 
[12:05] Andrew Hellershanks : Vincent, pas si c'est bien fait.
= Générer les UVMap =
[12:05] Vincent.Sylvester @hg.zetaworlds.com:8002 : Il faut aussi modifier le code de l'événement lui-même pour qu'il soit moins lourd et que l'événement puisse se terminer rapidement.
== UVMap des bords ==
[12:05] Andrew Hellershanks : Le code ne devrait pas être appelé une fois par seconde. Il devrait vérifier combien de temps réel s'est écoulé entre les appels et agir en conséquence.
* En mode Edit, faire réapparaître les bords avec '''ALT + H'''.
[12:05] Gavin.Hird @grid.xmir.org:8002 : Il est probable que ce ne soit pas le cas, Andrew.
* Sélectionner uniquement le plateau en inversant la sélection avec '''CTRL + I'''.
[12:06] Andrew Hellershanks : Gavin, peut-être pas. Je fais juste des suppositions sur la ou les causes des problèmes que je rencontre.
* Masquer le plateau avec '''la touche H'''.  
[12:07] Gavin.Hird @grid.xmir.org:8002 : bien sûr.
* Sélectionner l'ensemble des bords du terrain avec la touche '''A en mode Edit'''.  
07] Vincent.Sylvester @hg.zetaworlds.com:8002 : Le problème est que le changer pour qu'il soit plus précis signifie probablement un code plus lourd en interne, ce qui signifie que les timers sont moins bons pour les performances de la région qu'ils ne le sont déjà, ce qui signifie à son tour moins d'utilisation et potentiellement des gens qui vont en sommeil, ce qui provoque une foule d'autres problèmes.
* 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.  
[12:08] Jagga Meredith : *a un mal de tête récursif*.
<gallery>
[12:08] Vincent.Sylvester @hg.zetaworlds.com:8002 : Je veux dire que je suppose que l'on peut toujours utiliser une variante d'ossl qui utilise des horloges atomiques ou quelque chose comme ça.
Fichier:Terrain phase 005 afficher bords.jpg| Bords affichés
[12:08] Andrew Hellershanks : Non, ça n'a pas besoin d'être beaucoup plus lourd. Il s'agit vraiment de savoir comment le code détermine le temps qui s'est écoulé.
Fichier:Terrain phase 005 selection plateau.jpg |Plateau sélectionné
[12:08] Jagga Meredith : Temps GPS
Fichier:Terrain phase 005 plateau masque.png | Masquer avec H
[12:09] Kayaker Magic : Entre le serveur, l'internet et le viewer, je suppose toujours que les timers ne seront JAMAIS précis et je code en conséquence.
Fichier:Terrain phase 005 selection bords.png |Sélection avec A
[12:11] Andrew Hellershanks : Par exemple, si vous pouvez obtenir le nombre de ticks d'horloge qui se sont écoulés depuis la dernière fois que votre code a été exécuté et que vous savez combien de ticks d'horloge il y a par seconde, alors vous saurez si une seconde s'est écoulée depuis la dernière fois que votre code a été exécuté. S'il y a plus ou moins de ticks que le nombre de secondes, vous pouvez en tenir compte.
Fichier:Terrain phase 005 UVMap bords.jpg | UVMap des bords
[12:12] Andrew Hellershanks : Il se peut qu'il y ait encore quelques dérapages, mais dans l'ensemble, c'est un moyen simple de suivre le passage du temps.
</gallery>
[12:12] Jagga Meredith : vous supposez que la transmission des "tics d'horloge" est instantanée.
 
[12:12] Gavin.Hird @grid.xmir.org:8002 : et que les tics de l'horloge sont une constante.
== UVMAP du plateau ==
[12:12] Vincent.Sylvester @hg.zetaworlds.com:8002 : Vous savez, cela semble correct à l'écrit mais dans le code, c'est une autre histoire.
* Afficher le plateau du terrain avec la combinaison de touches '''ALT + H'''.
[12:13] Andrew Hellershanks : Les tics d'horloge au niveau du système doivent être constants, sinon vous avez de sérieux problèmes.
* 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é.
[12:13] Gavin.Hird @grid.xmir.org:8002 : oui pour les horloges en temps réel.
* Masquer les bords avec la '''touche H'''.  
[12:13] Gavin.Hird @grid.xmir.org:8002 : mais l'horloge du processeur n'est pas constante.
* '''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.
[12:13] Jagga Meredith : ...comme d'autres choses qui se passent au niveau du serveur.
* 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.
[12:16] Andrew Hellershanks : Vous devez utiliser une source d'horloge fiable. Je l'ai fait sur des systèmes embarqués sans matériel spécial. .
* 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.
[12:16] Ubit Umarov : J'ai déjà parlé des problèmes de kfm et de timing lors de plusieurs réunions, donc je ne le fais pas maintenant.
* 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'''.
[12:18] Andrew Hellershanks : Ubit, je sais que tu as dit que tu avais fait des changements dans le code. Je sais juste que le timing n'est plus aussi précis qu'avant.
* 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.
</pre>
* 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.
=Conclusion=
<gallery>
<pre>
Fichier:Terrain phase 005 selection plateau.jpg | ALT + H
[12:20] Andrew Hellershanks : Il est presque l'heure et demie. Y a-t-il d'autres sujets à aborder avant de conclure la réunion d'aujourd'hui ?
Fichier:Terrain phase 006 selection par zone.png | Sélection par zone avec L
[12:21] Andrew Hellershanks : S'il n'y a rien d'autre, ce sera tout pour cette semaine.
Fichier:Terrain phase 005 afficher bords.jpg| Bords sélectionnés
[12:21] Andrew Hellershanks : Merci à tous d'être venus. Nous vous reverrons la semaine prochaine.
Fichier:Terrain phase 006 plateau.jpg | Bords masqués
</pre>
Fichier:Terrain phase 006 36 carres num.jpg | Numérotation
Fichier:Terrain phase 006 selection de zone.jpg |Sélection par zone avec  L
Fichier:Terrain phase 006 uvmap carre.jpg | UVMap d'une zone
</gallery>
 
= 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'''.
<gallery>
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>
 
== 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 :
# Dans l'éditeur de propriété des matériaux appuyer sur le '''bouton +'''.
# À gauche du bouton New, déplier la liste des matériaux disponibles et sélectionner "Terrain_carre_modele".
# 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'''.
 
<gallery>
Fichier:Terrain phase 008 ajouter materiau.jpg | Nouveau matériau
Fichier:Terrain phase 008 materiau base.jpg | Matériau de base
Fichier:Terrain phase 008 système de noeuds.jpg | Système de nœuds
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

  • 🏗️