PuceTerragen 2 > Le shader Power Fractal V3

Introduction

De hautes montagnes, des plateaux, des canyons, des grottes, des strates, des rochers... Pour créer toute la diversité de la nature, deux solutions s'offrent à nous :

  • Utiliser un logiciel comme World Machine, qui génère des heightfields (ou cartes en niveaux de gris). Le principal inconvénient étant l'impossibilité de faire des surplombs, des arches, des cavernes, etc. Les heightfields ont aussi une superficie limitée, ce qui oblige à faire des choix : créer un terrain détaillé avec peu de montagnes ou créer un terrain plein de montagnes peu détaillées ?
  • La 2ème solution est de solliciter la puissance de Terragen 2 pour créer des terrains procéduraux. Ces terrains sont générés à l'aide d'équations mathématiques complexes, basées sur les fractales. Ces fonctions permettent d'obtenir des terrains très détaillés à perte de vue, ou même des planètes entières composées de montagnes de plusieurs kilomètres d'altitude, jusqu'au plus petit grain de sable. Les terrains ainsi obtenus étant en vraie 3D (en non en 2D comme les heightfields), tous les délires sont permis comme créer des arches de pierres aux formes improbables, des surplombs qui défient les lois de la physique, etc.

On peut également faire un mélange des deux en créant les formes principales d'un terrain à l'aide d'un heightfield et ajouter des détails et d'autres formes autour du terrain principal à l'aide des terrains procéduraux.

Les terrains procéduraux sont créés grâce aux shaders de déplacement (Displacement shader). Celui qui va nous intéresser dans cette présentation est le shader Power Fractal V3. Il est utilisé pour créer des terrains, des textures, des masques de distribution(le Fractal Breakup du shader Surface ou Distribution), etc. On s'en sert donc très souvent.

Comme pour la présentation du shader Low-level: Cumulus (3D/Volumetric), j'ai réalisé plusieurs animations pour mieux comprendre le fonctionnement des paramètres du shader Power Fractal V3. Certaines de ces animations se décomposent en deux parties : le rendu du paramètre testé et la présentation du shader en vue de dessus, située en haut à gauche ou à droite, selon l'animation.

Réglages

Les réglages utilisés pour mes tests sont les réglages par défaut du logiciel.
Après chaque test d'un paramètre, celui-ci a été remis à sa valeur par défaut pour tester le suivant (sauf cas particulier que je mentionnerai).

Onglet Scale

C'est dans cet onglet que sont définies les tailles des différentes formes du shader.
Les caractéristiques dominantes sont gérées par le paramètre Feature scale, les plus grandes formes sont gérées par le paramètre Lead-in scale et les plus petites formes par le paramètre Smallest scale. Le paramètre Noise octaves (qui dépend du Lead-in scale et du Smallest scale) représente le nombre de couches utilisées pour générer le bruit fractal. Plus la valeur est haute, plus il y a de détails et plus les temps de rendu sont longs. Les valeurs de Lead-in scale et de Smallest scale agissent sur la valeur de Noise octaves. Cependant, la valeur de Noise octaves agit seulement sur le Smallest scale.

Pour utiliser ces paramètres, je procède comme ceci : je commence par définir les plus grandes formes du terrain (Lead-In scale), puis les plus petites (Smallest scale) pour finir par les formes dominantes (Feature scale). En effet, nous pouvons remarquer que le Lead-in scale fait une sorte de zoom sur le bruit généré pour définir la taille des formes (plus visible sur la 2ème animation "Lead-in scale"), le Smallest scale agit sur la netteté du bruit, et le Feature scale agit sur l'épaisseur du bruit.

Animations

Onglet Colour

Les paramètres de cet onglet permettent d'ajuster les couleurs générées par la fractale.

Les couleurs sont définies par deux curseurs : Apply high colour et Apply low colour. Comme leurs noms ne l'indiquent pas, ces couleurs ne représentent pas une couleur de "basse altitude" et une autre de "haute altitude". Elle s'appliquent aux parties basses et hautes de la fractale.

Colour contrast, Colour offset et Colour roughness permettent de régler la quantité et le mélange des couleurs "haute" et "basse". Des valeurs négatives pour le Colour roughness n'apportent aucun changement sur le shader. Sur la première animation "Colour roughness", l'effet du paramètre est difficilement visible. L'animation "Colour roughness 2" montre l'effet de façon moins progressive, mais avec les mêmes réglages.

Les fonctions Clamp permettent de forcer la luminosité d'une couleur à rester dans un intervalle [0;1] où 0 représente une absence de luminosité et 1 le maximum de luminosité pour une couleur donnée. En d'autres termes, pour une couleur verte par exemple, avec une valeur de 0 nous avons du noir, avec une valeur de 1, la luminosité maximale pour la couleur choisie et avec une valeur de 0.5, un vert plus foncé, mais toujours dans la même teinte. Il est cependant possible de dépasser ces valeurs en paramétrant une couleur "haute" à 3 et une couleur "basse" à -2 et en désactivant les fonctions Clamp correspondantes. On peut ainsi obtenir un vert fluo ou un rouge très vif en utilisant un vert plutôt banal et un marron tout aussi commun comme on peut le voir dans l'animation "Clamp colour" ! Les fonctions Clamp sont particulièrement utiles pour les maps de distribution en niveaux de gris (Animation "Clamp colour 2"). Pour obtenir des résultats assez marqués avec ces fonctions, il faut utiliser des valeurs de Colour contrast ou Colour offset assez élevées : dans mon exemple, le Colour contrast est à 10.

Animations

Onglet Displacement

L'onglet Displacement sert principalement à paramétrer l'aspect du shader, comme son épaisseur ou son orientation.

La case Apply displacement permet d'activer "l'épaisseur" du shader ou son déplacement (Traduction littérale de... displacement ;-) ).
Juxtaposée à cette case, une liste permet de choisir l'orientation du shader par rapport à la normale du terrain. Si vous ignorez ce qu'est une normale (ou plutôt une droite normale), je vous invite à lire cet article de Wikipédia, qui explique en peu de lignes ce concept.
Pour tester ce paramètre, j'ai créé un terrain à l'aide de World Machine, j'ai importé ce terrain dans Terragen 2 et je lui ai appliqué un shader Power Fractal V3. Pour fonctionner correctement, certaines valeurs (identifiées par requires computed normal) nécessitent qu'un shader Compute normal ou Compute terrain soit connecté en amont.
Les différences entre les réglages Vertical only / Along vertical et Lateral only / Lateral normalized ne sont pas flagrantes, mais elles existent. Les explications données ça et là sur ces différences (sur le forum Planetside et sur le Wiki, par exemple) n'étant pas forcément claires, on se contentera des animations (Comme l'a dit un grand Sage : Un dessin vaut mieux qu'on long discours). Sur l'animation "Comparatif Vertical", on peut cependant constater que le displacement ne change pas sur un terrain plat, quelle que soit l'orientation utilisée.

Le paramètre Displacement amplitude permet de définir la distance entre le point le plus haut et le point le plus bas du shader.
Displacement offset applique un décalage par rapport au niveau 0 du shader. Ainsi, au lieu d'apparaître au niveau 0, le shader apparaîtra plus haut ou plus bas suivant la valeur saisie dans ce paramètre.
Displacement roughness agit sur la rugosité du shader : des valeurs inférieures à 1 lissent le shader alors qu'avec des valeurs supérieures à 1, le shader est plus rugueux. A noter pour ce paramètre : des valeurs négatives sont sans effet. Si une valeur négative est utilisée, le Displacement roughness apparaîtra comme si cette valeur était définie à 0.

Animations

Mis à jour le 04/11/2012. En cours d'écriture...

Catégorie : Terragen 2

0

Crayon CommentaireAjouter un commentaire

Quelle lettre se situe après la lettre "f" ?

12345
bfeha