FAQ: Ecrire vos propres modèles

FAQ Terraform, version 0.1 Juin 09, 2000 par David A. Bartold mis en forme après la FAQ Hacking Terraform

FAQ terraform, version 0.1.1 Mar. 10, 2001 par David A. Bartold mis à jour pour Terraform 0.8.0+

Traduction Raymond Ostertag


0: Introduction

Terraform vous permet de dessiner des formes de paysages toutefois vous voudriez peut-être utiliser la fonction 'height field'. Si vous voulez changer la couleur de la terre, ou sa texture, et qu'il n'y a pas de fichier modèle disponible à votre goût, vous pouvez écrire le votre. Terraform vient avec quelques modèles décrivant la texture de la terre et de son environnement céleste. Ces modèles sont des fichiers type *.pov typiquement positionnés dans le répertoire /usr/share/terraform/. Les fichiers modèles peuvent être  sélectionnés dans le menu Edition >Options puis en cliquant sur POV-Ray >Thème. Ceux inclus en ce moment sont : bare_rock, earth_basic, earth_canyon, and earth_green. Ce document explique comment rédiger vos propre fichiers de modèles et  suppose que vous compreniez déjà la syntaxe des scènes POV-Ray, que vous ayez regardé à un fichier POV-Ray exporté par terraform. Aussi  ce serait une bonne idée de voir defaults.inc comme une référence décrivant tous les paramètres.

1: Comment Terraform fait le rendu d'une scène POV-Ray

Terraform rend une scène POV-Ray en commençant par créer un fichier temporaire *.pov file dans votre répertoire /tmp. Ensuite il écrite un 'heightfield' temporaire dans ce répertoire. Il appelle l'exécutable "povray", passe le fichier temporaire *.pov et un chemin inclus qui typiquement pointe vers usr/share/terraform. Le fichier temporaire *.pov contient des paramètres déclarés par #declare suivis par un #include du fichier modèle.

1.1: Paramètres

Il y a plutôt assez peu de paramètres que Terraform passe au fichier modèle. Les plus importants d'entre eux : TF_HEIGHT_FIELD, TF_WATER_LEVEL, TF_X_SCALE, TF_Y_SCALE, TF_Z_SCALE, TF_CAMERA_LOCATION, et TF_CAMERA_LOOK_AT. Le premier est une déclaration de l'objet  'height field', les deux derniers sont des vecteurs utlisés pour définir la caméra, et le reste des paramètres dans la liste ci-dessus sont des variables. Bien d'autres paramètres sont disponibles pour le fichier modèle, dont certains sont des booléens. Vous n'avez pas besoin d'appliquer chaque paramètre.

1.2: Quels paramètres sont définis et où

Il n'y a qu'un paramètre que Terraform ne définit pas explicitement dans le fichier POV-Ray temporaire qu'il exporte : TF_LANDSCAPE_TEXTURE. Ce paramètre sera défini par le fichier modèle comme nous allons le voir bientôt. Pour plus d'information sur des paramètres individuels, voyez le fichier defaults.inc pour plus de documentation.

2: Fichiers de données POV-Ray

Il y a des fichiers utilisés par le système de modélisation pour définir une scène :

2.1: Votre kit de fichiers

Les fichiers mentionnés dans la section 2 sont ici pour votre usage. Sentez-vous libre de les inclure (#include) dans votre fichier modèle. Vous êtes aussi encouragé a  créer des nouveaux fichiers. Vous avez créé une jolie texture de paysage martien que vous souhaitez partager ? Mettez-le dans un fichier nommé mars_rocky_landscape.inc et postez le sur la liste d"email Terraform. Essayez d'être consistant avec l'arrangement du nom. La plupart des fichiers sont nommés avec le texte situation_courtedescription*.*. Si vous contribuez avec des fichiers, il serait bien d'envoyer aussi au moins un exemple de fichier *.pov qui les utilise. Une fois qu'il y aura une multitude de fichiers, il sera possible de les mélanger et de les réarranger à volonté. Imaginez d'être capable de rendre un paysage martien avec un ciel terrestre aussi bien qu'une lune supplémentaire avec un anneau autour. Cool...

3: Comment le monde est déterminé

Les sphère céleste, soleil et lune sont centrés autour de l'origine <0, 0, 0>. Générallement la distance de l'origine jusqu'à, disons, un soleil, devrait toujours être proportionnelle a vlength (<TF_X_SCALE, TF_Y_SCALE, TF_Z_SCALE>). Vous pouvez toujours déjouer les règles si un corps céleste à, disons, un chemin elleptique, mais essayez toujours de faire l'ellipse proportionnelle à la valeur évoquée précédemment. Sinon, changer l'échelle dans Terraform peut causer des problèmes de mesure.

3.1: Où se trouve la terre et l'eau

La terre est centrée sur le plan XZ depuis <-TF_X_SCALE / 2.0, 0.0, -TF_Z_SCALE / 2.0> jusqu'à <TF_X_SCALE / 2.0, TF_Y_SCALE, TF_Z_SCALE / 2.0>. En relation avec l'actuel 'height field' Targa, le coin bas-gauche  du fichier *.tga correspond à <-TF_X_SCALE / 2.0, y, -TF_Z_SCALE / 2.0>. Le plancher océanique est à y=0, le niveau de le mer à  y=(TF_Y_SCALE * TF_WATER_LEVEL), et le pic le plus haut à y=TF_Y_SCALE.

3.2: Où est le texture de la terre

Si vous utilisez une 'texture_map' pour la terre ( par exemple faites #declare TF_LANDSCAPE_TEXTURE = texture { texture_map { ... } }), 0.0 texture au niveau du fond de la mer, TF_WATER_LEVEL texture au niveau de la mer, et 1.0 texture au niveau du plus haut pic ) voyez earth_green_landscape.inc pour comprendre comment étirer la texture du paysage pour garder le niveau de la mer à la bonne position. Il utilise aussi un truc pour réduire l'apparence du recouvrement de la texture en appliquant la texture de 0.0 à 1.0 et puis en la multipliant ensuite par 10.0. Ce serait bien si POV-Ray avait un motif qui  ne comportait pas une telle fonction de répétition/réflection mais il n'a pas.

4: Créer vos propres modèles

Premièrement créez un fichier *.pov et copier dedans ces lignes :
// Fichier inclus standard POV-Ray.
#include "colors.inc"
#include "skies.inc"

// Met tous les paramètres non assignés à leur valeur par défaut.
#include "defaults.inc"

// Impose la texture par défaut.
#declare TF_LANDSCAPE_TEXTURE = texture
{
  pigment { color rgb <0.8, 0.4, 0.1> }
}

// Ajoute un ciel terrestre, soleil, lune et étoiles.
#include "earth_sky.inc"

// Crée l'eau.
#include "earth_water.inc"

// Crée la terre et la caméra.
#include "generic_land.inc"
Notez que vous devez déclarer TF_LANDSCAPE_TEXTURE après #including defaults.inc. Ceci  car votre texture peut dépendre du paramètre TF_WATER_LEVEL. Ensuite copiez ce fichier *.pov dans votre répertoire /usr/share/terraform/themes. Générez un terrain et rendez le en utilisant ce fichier modèle. Vous pouvez sélectionner votre thème depuis le menu déroulant Edition > Options > POV-Ray > Terrain thème. Vous pouvez modifier la texture pour quelle convienne à votre goût. Jouez un peu avec. Si vous vous sentez à l'aise à créer votre propre texture, essayez quelque chose de plus difficile, tel que dessiner un ciel martien. Essayez d'utiliser les fichiers qui viennent avec Treraform comme un point de départ pour faire les votres.

5: Conclusion

Ce n'est pas difficile de créer des textures de terrain de base. Une fois que vous vous serez fait la main sur les fichiers disponibles et que vous aurez compris comment les utiliser, vous pourrez les modifier et créer vos propres textures de terrain et même votre propre monde. Mais, par dessus tout, soyez créatif et prenez du plaisir.