Ce tutoriel décrit pas à pas les différentes étapes de la création d'une forêt personnalisée pour votre scène.
Par exemple le Bloc-notes (Notepad) de Windows ou TextEdit de MacOS
Par exemple Photoshop, Gimp, ...
Tout d'abord, créez un fichier texte avec l'extension .for : à partir de votre éditeur de texte préféré utilisez le menu Enregistrer sous... pour créer un fichier vide dans un des dossiers de votre scène, en lui donnant le nom de votre choix, suivi de l'extension .for. (Rappel : le nom du fichier .for ne doit pas comporter d'espace, évitez les caractères accentuées ou spéciaux).
Dans le dossier Custom Scenery de X-Plane, créez un dossier Ma Scene, puis dans ce dernier créez un sous-dossier Forets.
Dans ce sous-dossier Forets, enregistrez le fichier foret_de_bocage.for
I 800 FOREST
La commande TEXTURE sera suivie du seul nom du fichier texture avec son extension :
TEXTURE Texture_arbres.png
La commande TEXTURE sera suivie du chemin du fichier texture, relatif à l'emplacement du fichier .for
Le fichier texture est dans un dossier qui se nomme Texture lui même placé dans le dossier Ma Scene :
La commande sera alors :
TEXTURE ../Textures/Texture_arbres.png
Notes :
SCALE_X 2048 SCALE_Y 2048
L'unité utilisée pour indiquer la taille du fichier texture est libre (pixels, centimètres, pouces), mais la même unité devra être utilisée pour définir les coordonnées des rectangles délimitant les emplacements des arbres dans le fichier texture.
Cette astuce permet de changer la taille réelle d'un fichier texture sans devoir ajuster les coordonnées dans les fichiers .for qui l'utilisent.
L'exemple ci-dessus utilise un fichier texture de 2048 x 2048 pixels. La taille a été indiquée en pixels et correspond exactement à celle de la texture.
SPACING 8 8
Ces valeurs définissent l'espace entre deux arbres (le pas de la grille de leur placement).
Elles sont en mètres et indépendantes de l'unité du fichier texture.
Par exemple, si les arbres font 4 mètres de large, la commande SPACING 2 2 placera des arbres jointifs, sans espacement entre eux.
RANDOM 4 3
Ces valeurs définissent les décalages aléatoires des arbres par rapport à la position théorique sur la grille. Elles sont en mètres.
Pour chaque arbre, le centre du polygone qui le contient (généralement l'emplacement du tronc) sera décalé d'une valeur aléatoire positive ou négative comprise entre 0 et la valeur indiquée.
La commande RANDOM 0 0 aligne tous les arbres de la forêt sur la grille théorique
La commande RANDOM 2 2 place chaque arbre avec un décalage aléatoire allant jusqu'à 2 mètres autour du point de la grille correspondant.
Lorsque X-Plane lira le fichier .for afin de créer la forêt :
Ceci permet de créer un tableau qui rendra plus lisible les points de coordonnées à définir
#Appel Coordonnées Taille de la Position du Répétition de Hauteur Nombre de Type Nom de #d'un du point en texture de centre, depuis l'arbre appelé de l'arbre, polygones d'arbre l'arbre #arbre bas à gauche l'arbre appelé la gauche en mètres de l'arbre #------------------------------------------------------------------------------------------------------------------------------ # Largeur Hauteur (Totale = 100%) (tjs mettre 4) #------------------------------------------------------------------------------------------------------------------------------ #tree s t w y offset occurrence min max quads type name #------------------------------------------------------------------------------------------------------------------------------ TREE v v v v v v v v v v arbre_a
Voici à quoi correspondent les valeurs (v) à renseigner :
Les logiciel de dessin ou de retouche photo ont tous des outils qui permettent d'afficher les coordonnées de chaque pixel
Utilisez les Règles et Repères afin que s'affichent ces coordonnées
ATTENTION ! L'axe Y de Photoshop est inversé par rapport à la valeur t de X-Plane !
Voici comment définir les coordonnées (s,t) d'un point sur le fichier texture :
Rappel : les coordonnées des rectangles délimitant les arbres doivent utiliser la même unité que celle choisie lors de la définition de la taille du fichier texture
Si le fichier texture fait 30 x 30 (centimètres, pixels, etc)
Nous utilisons un fichier texture de taille 2048 x 2048
Nous allons donc définir les coordonnées de l'arbre de l'exemple de ce tutoriel comme ceci :
#Appel Coordonnées Taille de la Position du Répétition de Hauteur Nombre de Type Nom de
#d'un du point en texture de centre, depuis l'arbre appelé de l'arbre, polygones d'arbre l'arbre
#arbre bas à gauche l'arbre appelé la gauche en mètres de l'arbre
#------------------------------------------------------------------------------------------------------------------------------
# Largeur Hauteur (Totale = 100%) (tjs mettre 4)
#------------------------------------------------------------------------------------------------------------------------------
#tree s t w y offset occurrence min max quads type name
#------------------------------------------------------------------------------------------------------------------------------
TREE 1190 248 442 431 206 v v v v v arbre_exemple
#Appel Coordonnées Taille de la Position du Répétition de Hauteur Nombre de Type Nom de #d'un du point en texture de centre, depuis l'arbre appelé de l'arbre, polygones d'arbre l'arbre #arbre bas à gauche l'arbre appelé la gauche en mètres de l'arbre #------------------------------------------------------------------------------------------------------------------------------ # Largeur Hauteur (Totale = 100%) (tjs mettre 4) #------------------------------------------------------------------------------------------------------------------------------ #tree s t w y offset occurrence min max quads type name #------------------------------------------------------------------------------------------------------------------------------ TREE 1190 248 442 431 206 75 v v v v arbre_exemple TREE 2028 2028 20 20 10 25 v v v v Vide
(notez que le deuxième arbre définis pour cet exemple est une partie "vide" du fichier texture) (nous y reviendrons par la suite)
#Appel Coordonnées Taille de la Position du Répétition de Hauteur Nombre de Type Nom de #d'un du point en texture de centre, depuis l'arbre appelé de l'arbre, polygones d'arbre l'arbre #arbre bas à gauche l'arbre appelé la gauche en mètres de l'arbre #------------------------------------------------------------------------------------------------------------------------------ # Largeur Hauteur (Totale = 100%) (tjs mettre 4) #------------------------------------------------------------------------------------------------------------------------------ #tree s t w y offset occurrence min max quads type name #------------------------------------------------------------------------------------------------------------------------------ TREE 1190 248 442 431 206 75 8 10 v v arbre_exemple TREE 2028 2028 20 20 10 25 1 1 v v vide
(le "rapport hauteur/largeur" du rectangle définissant un arbre sera toujours conservé; Donc plus l'arbre sera grand, plus l'arbre sera large)
#Appel Coordonnées Taille de la Position du Répétition de Hauteur Nombre de Type Nom de #d'un du point en texture de centre, depuis l'arbre appelé de l'arbre, polygones d'arbre l'arbre #arbre bas à gauche l'arbre appelé la gauche en mètres de l'arbre #------------------------------------------------------------------------------------------------------------------------------ # Largeur Hauteur (Totale = 100%) (tjs mettre 4) #------------------------------------------------------------------------------------------------------------------------------ #tree s t w y offset occurrence min max quads type name #------------------------------------------------------------------------------------------------------------------------------ TREE 1190 248 442 431 206 75 8 10 4 v arbre_exemple TREE 2028 2028 20 20 10 25 1 1 1 v vide
(Il est donc conseillé de toujours mettre une valeur de "4"; Afin que les personnes disposants d'un ordinateur à forte capacités puissent disposer du maximum de polygone possible)
(notez qu'étant donné que le deuxième arbre défini pour cet exemple est une partie vide du fichier texture il est inutile de lui définir 4 quads) (nous y reviendrons par la suite)
Nous souhaitons créer une forêt qui serai composée d'arbres et de ronces
#Appel Coordonnées Taille de la Position du Répétition de Hauteur Nombre de Type Nom de #d'un du point en texture de centre, depuis l'arbre appelé de l'arbre, polygones d'arbre l'arbre #arbre bas à gauche l'arbre appelé la gauche en mètres de l'arbre #------------------------------------------------------------------------------------------------------------------------------ # Largeur Hauteur (Totale = 100%) (tjs mettre 4) #------------------------------------------------------------------------------------------------------------------------------ #tree s t w y offset occurrence min max quads type name #------------------------------------------------------------------------------------------------------------------------------ TREE 1190 248 442 431 206 50 8 10 4 1 arbre_exemple TREE 709 248 480 431 240 25 8 10 4 1 arbre_exemple_2 TREE 0 867 387 728 200 25 10 22 4 1 arbre_exemple_3 #------------------------------------------------------------------------------------------------------------------------------ TREE 0 0 960 241 477 50 0.5 1.5 4 2 ronces_exemple_1 TREE 1638 0 410 244 213 50 1 2 4 2 ronces_exemple_2
Le fait que la somme totale des occurrences doit être égale à 100% pour chaque type d'arbre peut poser problème dans certain cas...
Nous souhaitons créer une brousse dans laquelle poussent quelques arbres et arbustes
#Appel Coordonnées Taille de la Position du Répétition de Hauteur Nombre de Type Nom de #d'un du point en texture de centre, depuis l'arbre appelé de l'arbre, polygones d'arbre l'arbre #arbre bas à gauche l'arbre appelé la gauche en mètres de l'arbre #------------------------------------------------------------------------------------------------------------------------------ # Largeur Hauteur (Totale = 100%) (tjs mettre 4) #------------------------------------------------------------------------------------------------------------------------------ #tree s t w y offset occurrence min max quads type name #------------------------------------------------------------------------------------------------------------------------------ TREE 0 0 960 241 477 50 1 2 4 1 brousse_exemple_1 TREE 1797 867 242 312 118 4 3 5 4 2 arbuste_exemple_1 TREE 2028 2028 20 20 10 92 1 1 1 2 vide TREE 968 0 664 241 332 50 1 2 4 1 brousse_exemple_2 TREE 1190 248 442 431 206 4 8 10 4 2 arbre_exemple
(l'arbre "vide" permet donc de ne pas avoir un arbre à chaque pied de brousse)
(notez qu'en changeant l'ordre d'apparition des arbres dans le fichier .for, la forêt sera composée différemment)
(tout logiquement, plus vous définirez d'arbres dans votre forêt, plus elle sera variée)
SKIP_SURFACE water SKIP_SURFACE concrete SKIP_SURFACE asphalt
Pour définir plusieurs surfaces vous devez insérer une nouvelle ligne SKIP_SURFACE pour chaque surface.
X-Plane ne placera aucun arbre ces surfaces :
(car nous avons fini sa création)
Une fois que vous avez fini d'écrire et enregistré le fichier .for, il ne reste plus qu'a définir l'emplacement de la forêt dans votre scène
Vous retrouverez la forêt que vous avez créé dans le "Library Pane" de WED sous l'onglet "â–ºLocal"
(ou en sélectionnant "Objects in this package" avec OverlayEditor)
(ceci n'a pas grand intérêt étant donné que nous avons déjà définis l'espacement entre les arbres lors de l'écriture du fichier .for)
(cliquez au minimum 3 fois)
(n'oubliez pas que si vous avez définis des valeurs supérieur à "0" à la commande "RANDOM" dans le fichier .for de la forêt, les arbres seront décalés par rapport à la ligne ! )
Pour placer des arbres très rapidement sur une scène vous pouvez "jongler" entre le mode "Linear" et le mode "Points"
Par exemple, vous souhaitez placer des arbres "solitaire" au milieu d'une prairie ou au bord d'une route
(ou "cliquez→glissez" si l'arbre n'est pas sur la ligne)
(facile et rapide ! )
Il ne vous reste alors plus qu'à démarrer X-Plane, vous rendre sur les lieux de votre scène et contempler votre forêt !
Vous pouvez télécharger un exemple de fichier .for ICI.