Retour

 

Mise en place de textures photo au sol avec Labomesh - première partie

 

par Marc-Henri Guitteny - (c) Toute reproduction, même partielle, de ce document n'est pas autorisée sans accord écrit de l'auteur.

 

Voici un petit tutorial pour la mise en place et l'intégration des textures photoréalistes dans FS, avec Labomesh. Ceci est ma méthode. Elle n'est pas forcément la meilleure, la plus efficace ou la plus rapide.

 

Les outils que j'utilise :

Labomesh v3.1.6 téléchargeable dans la rubrique fs2004 du site des Pays de Loire

Paint shop pro 7.0 (mais Photoshop doit faire l'affaire)

Imageready 3.0 ( de chez Adobe)

Imagetool (télechargeable chez Microsoft dans le SDK gmax)

Annotator (téléchargeable chez Microsoft dans le SDK autogen)

Déroulons ma méthode sur une partie d'une zone actuellement en cours de réalisation, Noirmoutier.

 

1ère étape : Collecter les données

 

Il faut bien-sûr une photo satellite ou aérienne de la zone que l'on souhaite traiter et une carte de cette même zone. Je récupère des photos aériennes sur un site du Ministère de l'Equipement :

http://siglittoral.test.application.equipement.gouv.fr

Vous ne trouverez malheureusement sur ce site que la bande côtière de la Manche et de l'Atlantique. Les dalles téléchargées sont à assembler en une seule image (après réduction au tiers de leur taille d'origine).

Au final, vous devez disposer de deux images numériques, débordant de la zone à recouvrir, d'une précision supérieure (au moins le double) à la précision finale qui sera de 4.80 m par pixel :

 

 

Vous remarquerez que dans cet exemple, la photo n'est pas complète. C'est volontaire. La partie noire sera complétée ultérieurement pour effectuer la jonction avec les textures standard de FS :

 

 

 

2ème étape : Définir le carré (ou rectangle) à recouvrir

 

A ce moment du projet, il faut se faire une idée, à priori, de la taille du terrain à recouvrir. Labomesh fonctionnant avec un pas de texture d'environ 2.4 m par pixel, si l'on veut recouvrir une zone d'environ 4.5 km par 4.5 km, il faut disposer d'une image de 2048x2048.

Pour caler le projet il faut donc disposer, d'une image en 256 couleurs, de 2048x2048 de dimension, enregistrée au format BMP. N'importe quelle image fera l'affaire, même sans rien dedans, excepté un fond noir.

Créez une image appelée « calage03.bmp » et démarrez Labomesh.

Nota : Il est intéressant de disposer de FSPUIC pour une liaison entre Labomesh et FS2004 mais ce n'est pas vraiment nécessaire. On se retrouve face à ça, dans le module « implantation de textures » :

 

 

Commençons par charger une image de fond de carte (celle qui fait 2048x2048) :

 

 

Maintenant que l'image est chargée, Labomesh affiche dans sa fenêtre Infos secteur, les dimensions de la scène et, autour de l'image, ses coordonnées min et max.

Il faut maintenant intervenir dans la zone des coordonnées de référence :

 

 

Et faire varier les coordonnées min et max de la scène jusqu'à obtenir de valeurs min et max qui se trouve à l'intérieur de votre carte numérisée. Et c'est là le plus délicat, il faut retrouver, dans notre exemple, sur la carte, la valeur 46.9335937 (qui sont des degrés décimaux) sur une carte où ne figure que des degrés, minutes, secondes).

Il y a plusieurs manière d'opérer. Il existe des utilitaires de conversion, Labomesh en dispose en interne. Il affiche en permanence le point de référence de trois manières différentes :

 

 

Attention : Le fonctionnement de FS utilise une grille incontournable pour plaquer des textures. Il y a donc un pas d'environ 1.2 km. Il ne sert à rien de fixer une valeur du point de référence avec une grande précision. Ce sont les valeurs min et max de latitude et longitude qui importent.

Gardez ces quatre valeurs en mémoire, enregistrez le projet Labomesh et quittez le programme.

 

3ème étape : Réaliser une première image

 

Démarrons Paint Shop Pro et ouvrons notre carte scannée (ou autre logiciel de traitement d'image qui gère les calques). Il suffit donc de tracer 4 lignes sur cette image, aux latitudes et longitudes définies dans labomesh. Elles doivent être correctement orientée nord-sud. Il faut éventuellement appliquer une rotation à la carte pour avoir un méridien parfaitement vertical.

On obtient ceci. (J'ai volontairement grossi les traits rouges pour une bonne visibilité) :

 

 

Il n'y a plus qu'à sélectionner le rectangle défini, puis, éliminer le reste de l'image (fonction « recadrer la sélection » dans PSP). La nouvelle image obtenue a une taille aléatoire. Il faut donc lui fixer la dimension de 2048x2048 pixels. (fonction « redimensionner » dans PSP). C'est à ce moment que l'on modifie la proportion de l'image :

 

 

Pour plaquer l'image satellite ou aérienne sur cette carte, il suffit de copier l'image dans un nouveau calque.

Tout d'abord, il vaut mieux élargir les bords de notre carte pour travailler plus facilement. C'est la fonction « taille du support » dans PSP.

Il faut ajouter 500 pixels de chaque coté. On obtient ceci.

 

 

puis copier la photo dans un calque et fixer la transparence du calque à 50%... Il faut alors utiliser l'outil « Déformation » sur le calque jusqu'à superposer l'image sur la carte. C'est un jeu de patience pour trouver, entre la carte et la photographie, des points remarquables à superposer. Un peu de rotation et un ajustement de la hauteur et de la largeur suffisent à obtenir ceci :

 

 

Quand les deux images sont bien superposées, remonter la transparence du calque à 100%, puis aplatir l'image (fusionner tous les calques). Faites une sauvegarde de cette image qui resservira plus tard (Noirmoutier avec bord.psp)

Supprimer les bords (-500 pixels de chaque coté), diminuer le nombre de couleurs à 256 et enregistrez au format BMP (ete.bmp) cette nouvelle image.

Et voilà l'image de base :

 

 

 

4ème étape : Effectuer une première mise en place de la photo

 

Démarrez Labomesh et ouvrez le projet précédemment sauvegardé.

Cliquez sur le bouton réinitialiser le projet.

Vous pouvez à nouveau charger une image de fond.

Charger l'image ete.bmp. Mettez un nom dans la rubrique « nom fichier BGL compilé : sud-noir.bgl par exemple » (ne touchez surtout pas à la rubrique « nom fichier image LMP ». Enregistrez votre projet puis cliquez sur « générer fichier inf »

Nota 1 : Vous pouvez modifier la ligne : buildseasons = 0. Mettez la valeur à 1 pour que FS choisisse une texture différente par saison. Dans le cas contraire, la même texture sera appliquée toute l'année.

Nota 2 : Utilisez des noms de fichiers courts (8 caractères), cela évite les plantages lors de la compilation.

Enregistrez le fichier inf, puis enregistrez le fichier BGL, puis générez les textures et enregistrez-les.

Si tout se passe bien, vous retrouverez dans le répertoire labomesh\scenery\ votre fichier « sud-noir.BGL »

Et dans le répertoire labomesh\textures\ les 16 fichiers suivants :

010333303121100su.bmp

010333303121101su.bmp

etc ...

Il est relativement facile de se repérer dans la numérotation des textures. Le schéma est le suivant :

 

 

La numérotation est en base 4, il va falloir réviser vos cours de CE1.

Vous pouvez désormais créer les répertoires \addon scenery\Noirmoutier\scenery et

\addon scenery\Noirmoutier\texture et y placer vos fichiers crées par labomesh.

Déclarer votre nouvelle scène, déplacer vous vers le sud de l'île, vous devriez voir ceci :

 

 

Vous remarquerez que la mer n'est pas transparente et que le raccord avec les textures FS n'est pas bon. On remarque aussi, dans ce cas particulier, que le trait de côte au sud, ne correspond pas à la photo. Il faudra donc corriger cette approximation de FS, soit en ajoutant une zone de terre supplémentaire, soit en modifiant la photo.

Cet ajout de terre est effectué avec Labomesh, dans le module « Création de surface et de lignes ». Mon but n'étant pas d'expliquer entièrement le logiciel Labomesh, je n'entrerai pas dans le détail de cette fonction qui est très simple à comprendre. Il suffit de créer une surface terrestre sur la zone souhaitée en excluant, dans ce cas, les rives.

Après génération d'un petit bgl que l'on place dans le répertoire scenery, on obtient ceci :

 

 

( lien vers la deuxième partie )