Table des matières
Les informations présentes ci-dessous sont partiellement anciennes, les outils de génération de scène faisant l'objet de multiples changements en ce moment. Le Wiki international, dans sa partie “TerraGear”, est un peu plus récent sur ce point. Construire les scènesIntroductionLe “terrain” utilisé dans FlightGear, c'est à dire la surface de la terre au-dessus de laquelle vous volez, sa texture (en fonction de l'activité humaine : ville, champs) et ses caractéristiques naturelles : forêts, lacs, rivières, sont générées à partir d'un projet-soeur de FlightGear appelé Terragear. TerraGear est utilisé pour lire en entrée des données géographiques (élévation du terrain, texture terrestre, positionnement et topologie des aéroports, …) et générer en sortie un terrain au-dessus duquel il est possible de voler. Il y a plusieurs raisons pour lesquelles vous pourriez souhaiter générer le terrain par vous-même, plutôt que d'utiliser les scènes téléchargeables dans FlightGear.
Pour toutes ces raisons, apprendre comment utiliser TerraGear est une bonne idée. Il existe de la documentation pour TerraGear (en anglais) à au moins quatre endroits :
Cette dernière source est la plus à jour et la documentation présente sur le site Web gagnerait vraiment à être mise à jour. Car, dans l'ensemble, ces versions sont toutes plus ou moins périmées d'une manière ou d'une autre. Lorsque j'ai essayé d'utiliser la documentation la plus récente pour utiliser TerraGear, j'ai rencontré toutes sortes de problèmes : j'ai réussi à en solutionner quelques uns, pour d'autres, j'ai reçu de l'aide). Ce billet a dont pour but de détailler ce que j'ai dû faire avec Terragear pour créer mes scènes. Je n'essaye pas de réécrire la documention; ceci devrait être simplement considéré comme un ajout, un supplément aux documentations Terragear. Les documentations peuvent parfois vous guider dans la mauvaise direction ou vous faire oublier quelque chose. Ceci est mon effort pour essayer de corriger ces imperfections. Je vais donc décrire ici ce que vous devrez faire pour avoir un TerraGear fonctionnel, et comment l'utiliser pour générer un terrain pour une zone particulière. Cependant, attention, j'utilise GNU/Linux, donc cette description se limitera à GNU/Linux. J'espère que les instructions seront identiques pour d'autres systèmes d'exploitation, mais je n'ai pas pu le tester. En particulier, je n'ai pas d'accès facile à une machine Windows, donc je ne sais pas si ce que j'avance diffère des instructions pour Windows. En fait, je ne sais même pas si TerraGear peut être utilisé/compilé sous Windows. J'espère donc qu'il fonctionnera à l'identique, et que les conditions ne seront pas trop différentes de celles précisées ici. Sinon, j'espère qu'un utilisateur Windows pourra éditer cette page et qu'il clarifiera si possible la manière de faire. Ce tutoriel vous propose donc la construction pas à pas de la tuile w010n40, qui comprend (parmi d'autres villes) Caen, Nantes et Brest. J'ai dû reconstruire cette tuile pour visualiser les résultats de mes modifications sur les aéroports de Morlaix, Landivisiau, Brest, Ouessant, Lanvéoc et Quimper. A la fin du processus, vous obtiendrez une zone de 10°x10° avec ses aéroports, lacs, la texture de la terre (et ses caractéristiques), routes, voies ferrées et autres rivières et cours d'eau. Vous pourrez facilement adapter ce tutoriel pour créer des scènes n'importe où dans le monde. Toutes les données citées ont une couverture mondiale, et fonctionneront correctement que ce soit pour le Tibet, la Nouvelle Guinée ou le fin fond de la Bretagne ! Dans certains cas, des données de meilleure qualité (c'est à dire de meilleure résolution) sont disponibles pour les Etats-Unis mais pas pour le reste du monde. Ce tutoriel se base sur les jeux de données qui couvrent le monde entier, mais fait parfois référence aux jeux de données US de meilleure résolution pour ceux qui le souhaiteraien Compiler TerragearTerraGear dépend d'autres librairies qui vous seront nécessaires pour la compilation. Mais commencez par ceci :
sudo mkdir /usr/local/src/terragear cd /usr/local/src/terragear cvs -d :pserver:cvs@cvs.terragear.org:/var/cvs/TerraGear-0.0 login cvs -d :pserver:cvs@cvs.terragear.org:/var/cvs/TerraGear-0.0 co source
Si vous regardez dans Quelques commentaires sur les librairies dont vous aurez besoin :
Une fois ces prérequis installés, vous pouvez continuer par la configuration de la configuration de Terragear, puis par sa compilation à proprement parler. La page “Resources” du CVS de Terrager qui vous a dit comment récupérer la version CVS de Terragear vous dit aussi comment la compiler : lancer un
Ensuite, quand vous lancez le $ ./configure - with-gts=/usr/local/lib/ \ --with-gpc=/usr/local/lib/ \ --with-newmat=/usr/local/lib/ \ --with-plib=/usr/local/lib/ \ --with-simgear=/usr/local/lib/
Ensuite vient le moment de compiler tous les exécutables. Les instructions dans
A ce point, vous êtes prêts à lancer le Je n'ai pas rencontré de problème en suivant cette manière de faire. Tout s'est bien compilé et a été installé correctement. Mais cela a été la partie la plus simple de l'expérience TerraGear ! Télécharger les jeux de donnéesTerraGear génère les scènes de FlightGear automatiquement à partir de jeux de données gratuits et librement disponibles : vous n'avez pas besoin (et ne pouvez actuellement pas) définir les rivières, les routes… à la main. Nous utiliserons deux types de jeux de données géographiques dans ce tutoriel :
Voici les données géographiques qu'il vous faudra télécharger : Données d'élévation de terrainSRTM de 3-arsecftp://e0srp01u.ecs.nasa.gov/srtm/version2/SRTM3/
Ces données sont les plus précises disponibles pour le monde entier. Pour l'Europe, choisissez Eurasia, puis la zone que vous voulez créer. Ce sont des zones de 1°x1°, pour Brest vous prendrez donc Ce fichier contient les données géographiques d'altitude, ce qui permet de ne pas faire une scène au niveau de la mer et avec du relief. DEM de 30-arcsec (déconseillé)ftp://edcftp.cr.usgs.gov/pub/data/gtopo30/global/w020n90.tar.gz (8,4 Mo). Ce fichier contient toutes les données d'élévation nécessaires pour le fragment de scène concerné (ainsi que d'autres avoisinants). Si vous créez une scène pour une autre région, allez à l'adresse http://edcdaac.usgs.gov/gtopo30/gtopo30.html et cliquez sur le rectangle approprié de la mappemonde pour obtenir vos données. Ces modèles numériques d'altitude (DEM) ont approximativement un point chaque kilomètre. Donc les éléments (vallées, collines, gorges…) plus petites qu'un kilomètre d'apparaîtront pas. Des modèles de meilleure résolution sont disponibles pour les Etats-unis à l'adresse http://edc.usgs.gov/geodata/. Pour le reste du monde, il y a les SRTM-3, 10 fois plus précis. Aéroports et topologie aéroportuaire
Si vous avez déjà FlightGear installé sur votre machine, ce fichier sera présent dans le répertoire
Vous devrez éditer ce fichier pour ajouter de nouveaux aéroports ou modifier des aéroports existants. Pour une description compète du format, voir le fichier vmap0Télécharger le fichier http://geoengine.nima.mil/ftpdir/archive/vpf_data/v0eur.tar.gz (Europe et Asie du Nord, 239,6 Mo). Ce jeu de données (connu auparavant sous le nom de carte numérique mondiale (DCW, Digital Chart of the World)) contient les données vectorielles (hors aéroports) pour toute l'Europe et l'Asie, dont les limites terrestres (le trait de côte), les lacs, rivières, villes et villages, routes, voies ferrées, rivières et données de surface, ainsi que beaucoup d'autres informations que nous n'utilisons pas encore. Après avoir décompressé le fichier, vous pouvez si vous préférez le graver sur un CD-ROM et travailler à partir de celui-ci. Si vous créez une scène en-dehors de la zone couverte par ce vmap, vous devrez télécharger l'une des trois autres couvertures VMAP0 à la place :
Il existe d'autres données vectorielles de meilleure résolution disponibles pour les Etats-Unis, dont :
vmap1, une version d'une résolution bien supérieure à vmap0, est également disponible à l'adresse http://geoengine.nima.mil/ pour quelques régions des Etats-Unis. Cependant, à l'heure de rédaction de ce document, TerraGear et FlightGear ne peuvent encore interpréter ces données, bien que ce soit tentant. Préparer les jeux de donnéesAprès avoir suivi les instructions précédentes, vous devriez avoir les trois fichiers de données suivants téléchargés sur votre ordinateur :
Avant d'aller plus loin, il vous faut créer un répertoire racine pour la création de vos scènes. A titre personnel, j'utilise $ cd /usr/local/src/Scenery/ $ mkdir work $ mkdir data Préparer les données d'altitudeAvec les SRTM-3
Créez dans $ cd data $ mkdir SRTM2-Eurasia-3 $ for i in data/SRTM2-Eurasia-3/N*.hgt.zip; do hgtchop 3 $i work/SRTM2-Eurasia-3/; done
Le prochain outil à utiliser est un script python appelé $ ln -s ...Terragear/src/Prep/TerraFit/terrafit.py . N'oubliez pas le . à la fin de la commande ci-dessus.
Terrafit va chercher Terrafit est un programme conçu pour améliorer les données d'élévation. Il offre de nombreuses options, mais pour l'instant nous le lancerons de la manière suivante : $ ./terrafit.py -m 50 -x 3000 -e 2 work/SRTM2-Eurasia-3/ Avec les DEM-30 (déconseillé)
Dans le répertoire $ cd data $ mkdir dem30 $ cd dem30 $ tar xvzf ../../w020n90.tar.gz Vous devriez vous retrouver avec quelque chose comme cela : 479814 56312 -rw-rw-r-- 1 olivier olivier 57600000 1997-04-11 19:50 W020N90.DEM 479815 4 -rw-rw-r-- 1 olivier olivier 222 1997-04-11 19:29 W020N90.DMW 479816 84 -rw-rw-r-- 1 olivier olivier 78561 1997-04-11 20:11 W020N90.GIF 479817 4 -rw-rw-r-- 1 olivier olivier 327 1997-04-11 19:30 W020N90.HDR 479818 4 -rw-rw-r-- 1 olivier olivier 648 1997-04-11 19:30 W020N90.PRJ 479819 4 -rw-rw-r-- 1 olivier olivier 326 1997-04-11 19:32 W020N90.SCH 479820 28160 -rw-rw-r-- 1 olivier olivier 28800000 1997-04-11 19:52 W020N90.SRC 479821 4 -rw-rw-r-- 1 olivier olivier 28 1997-04-11 19:46 W020N90.STX
Tout d'abord, nous devons convertir les données DEM de leur format actuel binaire vers le format ASCII que TerraGear peut gérer, en utilisant la commande $ mkdir ascii
$ raw2ascii W020N90 ascii
Ouf ! La conversion dure un moment et fini par créer 2000 fichiers dans le sous-répertoire
Dans le répertoire $ rm W020N90*
Maintenant, si vous êtes certain (vraiment certain) que vous n'allez pas créer de scène en-dehors du fragment
Bien, maintenant il est temps de hacher les fichiers DEM en segments pour les utiliser avec TerraGear. Allez dans le répertoire racine de votre scène (dans notre exemple $ mkdir work/DEM-30
Maintenant, la prochaine partie du traitement est un peu plus dépendante du système d'exploitation que les points précédents. Vous aurez besoin d'utiliser la commande demchop sur chacun des fichiers $ for file in data/dem30/ascii/*.dem; do demchop $file work/DEM-30 done
Le programme mouline pendant quelques minutes, puis vous trouverez un sous-répertoire
Vous avez maintenant terminé la préparation des données d'élévation. Pour créer les scènes, TerraGear n'a besoin que des fichiers et répertoires sous le répertoire Préparer les données des aéroports
Notez que vous devez préparer les données d'altitude avant de préparer les données des aéroports, et que ces données doivent êtres présentes dans un répertoire nommé
Même si vous avez déjà une copie du fichier
A partir du répertoire racine de vos scènes, changez de répertoire vers $ cd data $ mkdir airports $ cp $FG_ROOT/Airports/apt.dat.gz airports/
Puis déplacez-vous dans le répertoire airports et créez l'ensemble de vos données d'aéroport en une seule instance de la commande $ cd airports $ genapts --input=apt.dat.gz --work=../../work/ --min-lon=0 --max-lon=-5 --min-lat=44 --max-lat=49 (par exemple)
En pratique, la version actuelle de
Lorsque la commande se termine, vous devriez obtenir deux nouveaux répertoires à l'intérieur de Si un jour vous avez besoin de remplacer un aéroport, la manière la plus simple est de supprimer tous les aéroports du fragment concerné et de les reconstruire. Par exemple, si vous avez modifié les entrées de l'aéroport LFRU (Morlaix), vous feriez : $ rm -rf work/AirportArea/w010n40/ $ rm -rf work/AirportObj/w010n40/ Et ensuite répéteriez les instructions ci-dessus. Il est possible de remplacer les fichiers individuels, mais cela devient assez compliqué et ce n'est pas une bonne idée pour de nouveaux utilisateurs. Préparer les données vmap0
Vous devriez d'ores et déjà avoir décompressé le fichier
Le programme Nous commencerons par la surface terrestre basique (c'est à dire tout ce qui n'est pas l'océan) :
NOTE : cet exemple ainsi que les suivants partent du principe que vous construisez les scènes pour $ cd work $ tgvpf --chunk=w010n40 --work-dir=LandMass --material=Default ../data/vmap0/vmaplv0 eurnasia bnd polbnda
Cette commande crée un sous-répertoire Si vous êtes impatient de voir si cela a fonctionné, vous pouvez passer à la section suivante dès maintenant et essayer de construire les scènes. Notez cependant que vous n'aurez que les océans, une surface terrestre avec des forêts et les aéroports. Ensuite, nous allons ajouter les lacs intérieurs et les grandes rivières, histoire de diversifier un peu le paysage : $ tgvpf --chunk=w010n40 --work-dir=Lakes --material=Lake ../data/vmap0/vmaplv0 eurnasia hydro inwatera
Ces polygones seront placés dans un répertoire séparé, appelé Ensuite, ajoutons quelques rivières plus étroites et des cours d'eau. vmap0 n'utilisant que des lignes pour les localiser, nous utiliserons une largeur standard, par exemple 50 m : $ tgvpf --chunk=w010n40 --work-dir=Rivers --material=Stream --width=50 ../data/vmap0/vmaplv0 eurnasia hydro watrcrsl Cette commande ajoute les polygones pour les villes et villages importants : $ tgvpf --chunk=w010n40 --work-dir=Cities --material=Urban ../data/vmap0/vmaplv0 eurnasia pop builtupa vmap0 considère les petites villes uniquement comme des points, donc nous utiliserons des carrés par défaut de 1×1 km pour les représenter : $ tgvpf --chunk=w010n40 --work-dir=Towns --material=Town ../data/vmap0/vmaplv0 eurnasia pop mispopp Les deux commandes suivantes ajoutent des forêts de base et des zones agricoles : $ tgvpf --chunk=w010n40 --work-dir=Forest --material=MixedForestCover ../data/vmap0/vmaplv0 eurnasia veg treesa $ tgvpf --chunk=w010n40 --work-dir=Crops --material=MixedCropPastureCover ../data/vmap0/vmaplv0 eurnasia veg cropa Enfin, les trois dernières commandes utilisent les données linéaires de vmap0 pour créer des autoroutes (50 m de large), des routes nationales (20 m de large) et les voies ferrées (10 m de llarge) : $ tgvpf --chunk=w010n40 --width=50m --work-dir=Freeways \ --material=Freeway --att=med:1 ../data/vmap0/vmaplv0 eurnasia trans roadl $ tgvpf --chunk=w010n40 --width=20m --work-dir=Roads \ --material=Road '--att=!med:1' ../data/vmap0/vmaplv0 eurnasia trans roadl $ tgvpf --chunk=w010n40 --width=10m --work-dir=Railroads \ --material=Railroad ../data/vmap0/vmaplv0 eurnasia trans railrdl Notez que c'est juste un début. Il y a en fait beaucoup plus d'informations disponibles dans les données vmap0, et une fois que vous vous sentirez à l'aise avec la construction de scènes, vous pourrez distinguer les différents types de cours d'eaux, de zones agricoles, de forêts, etc… et également ajouter de nouvelles zones de couverture, comme la toundra, les zones polaires, les marécages. Quand vous serez prêts, jetez un oeil à http://www.terragear.org/docs/vmap0 pour avoir une documentation complète sur la commande tgvpf et à http://www.terragear.org/docs/vmap0/coverage.html pour obtenir plus de détails sur les couvertures du vmap0 et ses attributs. Maintenant, il est temps cependant de construire nos données de scène FlightGear. Générer les scènes
Après avoir créé vos fichiers de travail pour l'altitude, les aéroports et la couverture de la zone en vmap, vous devriez obtenir les sous-répertoires suivants dans votre répertoire racine de scène
(Sur mon système, cet ensemble représente environ 265 Mo d'espace disque; si vous utilisez un système de fichiers qui utilise des blocs de taille fixe et large, alors l'espace disque utilisé peut être plus important en raison de la quantité de petits fichiers utilisés). Lorsque vous construisez votre scène, vous pouvez décider d'inclure ou d'exclure chacun de ces répertoires de manière séparée. Pour l'instant, nous les utiliserons tous.
Avant de démarrer la génération de la scène, nous devrons aller dans votre répertoire de travail et créer un sous-répertoire $ cd work $ mkdir Status $ touch Status/MASTER_ON Maintenant, nous sommes prêts à bientôt créer la scène w010n40. Nous utiliserons deux programmes pour générer la scène : fgfs-tools-server, qui contrôle le processus global de création, et fgfs-tools-client, qui effectue la construction de la tuile à proprement parler. Tout d'abord, à partir de votre répertoire de travail, démarrez fgfs-tools-server (dans le cas restrictif) : $ fgfs-tools-server . . w004n48 Lorsque le programme démarre, il vous informe de la manière suivante : Work base: . Output base: . Area width: 10 degrees Area height: 10 degrees lons = w010 lats = n40 start_lon = -10 start_lat = 40 socket is connected to port = 33933
La dernière ligne est la plus importante : vous devez savoir sur quel port le serveur s'est placé en écoute avant de pouvoir démarrer un client (le port sera différent à chaque démarrage de
Maintenant, dans une fenêtre terminal séparée, placez-vous dans le répertoire $ fgfs-tools-client --rude \ --output-dir=. \ --work-dir=. \ --port=33933 \ SRTM2-Eurasia-3 LandMass AirportArea AirportObj \ Cities Crops Forest Freeways Lakes Railroads Rivers Roads Towns
Si vous travaillez sur une machine multiprocesseurs, vous pouvez lancer des instances complémentaires de
Si vous ne souhaitez travailler que sur une tuile, alors ne mettez que cette tuile dans votre répertoire Cela prendra un certain temps à TerraGear de compiler la scène, peut-être une heure ou deux, en fonction de la charge de votre système, de la vitesse de votre processeur et de la rapidité de votre disque. Prenez une pause (bien méritée) jusqu'à ce que la compilation soit terminée.
En cas de problème, le serveur écrit des informations dans
Une fois le travail terminé, fgfs-tools-server sera toujours lancé (vous devrez tuer le processus manuellement), mais fgfs-tools-client sera terminé. Dans Scenery/, vous devriez trouver un sous-répertoire $ FG_SCENERY=./Scenery fgfs --fdm=magic --disable-panel --airport-id=LFRU Notez que vous démarrerez légèrement sous le niveau du sol, mais dès que vous aurez pris un peu d'altitude, vous verrez la scène correctement. Si votre scène apparait correctement, alors vous avez réussi votre première compilation de scène, bravo ! Installer la scène
Vous pouvez positionner la scène où vous le voulez, à partir du moment où vous pointez dessus avec votre variable d'environnement
Si vous avez fait des modifications au fichier par défaut apt.tar.gz et que vous voulez que FlightGear soit au courant de cette modification (par exemple, pour modifier l'aéroport de démarrage ou la vue de la tour de contrôle), il vous faudra faire une petite installation supplémentaire. Faites une copie de sauvegarde de votre $ rm -f simple.mk4 $ /usr/local/src/flightgear-cvs/src/Airports/gensimple apt.dat.gz simple.mk4 rm -f runways.mk4 $ /usr/local/src/flightgear-cvs/src/Airports/genrunways apt.dat.gz runways.mk4 C'est terminé ! Félicitations pour la construction de votre première scène FlightGear, et n'hésitez pas à expérimenter, tout spécialement en ajoutant des aéroports et en améliorant ceux qui existent, ou en extrayant des informations plus détaillées du vmap0. Si vous souhaitez ajouter des bâtiments ou d'autres objets statiques ou partagés, intéressez-vous à Blender, à Google Sketchup, à la base de données Scenemodels ou essayez de travailler manuellement à partir des instructions présentes dans docs/Model/fgfs-model-howto.html dans la distribution source de FlightGear. Ajouter des objets partagés est, notamment, à la portée d'un enfant. Donc n'hésitez plus. N.d.T : Merci à Guillaume pour son aide. |