IV - Exemples d'élaboration de macros, pas à pas

2) Macro "Rocky Run" de Stephen Schmitt

Cette fois-ci, on ne va pas élaborer la macro pas à pas (oui, le titre est un menteur, c'est comme ça, les titres) mais on va tenter d'en décortiquer une : La macro "Rocky Run" de Stephen Schmitt, déjà intégrée dans l'installation de World Machine.
Cette macro permet d'obtenir un terrain traversé par une rivière en son milieu.
On peut choisir l'angle de la rivière, connecter un terrain à la macro pour y ajouter la rivière, ou se contenter du terrain par défaut contenu dans la macro.
Exemple :

Terrain avant l'utilisation de la macro

Terrain après l'utilisation de la macro

Bien pratique tout ça, mais comment ça marche ?

Commencez par insérer la macro dans la machine, et reliez-y votre terrain. Ensuite, éditez la macro.

 

Occupons-nous de la partie de gauche :

Comme je l'ai dit, on peut appliquer cette macro sur un terrain qu'on a choisi, ou sur le terrain qui se trouve à l'interieur de la macro. On a en quelque sorte un terrain "par défaut". Ce terrain est la macro "Distorted Perlin" que vous voyez ci-dessus. Je ne vais pas entrer dans les détails de cette macro, retenez juste qu'elle permet d'obtenir un terrain, voilà...
Le module "Rocky Run In" correspond à l'entrée de la macro.
Dans les pages précédentes, il était nommé "Macro In" pour la simple raison que la macro avait été nommée... Macro. Là, Stephen Schmitt a renommé la macro en lui donnant le nom "Rocky Run". (Note : pour renommer une macro ou un module, restez appuyé sur SHIFT et faites un double clic dessus, puis entrez le nom).
Bien entendu, les deux autres modules communs à toutes les macros ont eu leur nom qui a changé par la même occasion : "Macro Out" et "Macro Parameters" sont devenus "Rocky Run Out" et "Rocky Run Params", rien de bien sorcier...

Là, Stephen Schmitt a configuré l'unique port de "Rocky Run In" comme étant optionnel, comme vous pouvez le voir si vous faites un double clic sur le module. En effet, c'est par ce port là que va être connecté le terrain à la macro. Il sera ensuite connecté au module Pull-up par le biais du module "Rocky Run In". Le principe est illustré en page 2 de ce tutoriel :)
Sauf que la macro peut se passer du terrain pour fonctionner, vu qu'il y en a un par défaut qui est fourni ! C'est pour ça que la case "Optional Input" est activée : si ce port n'est relié à rien, la macro fonctionne quand même.

Pull-up sert à faire un choix entre deux terrains. Le terrain relié au port gris sera celui utilisé en sortie du module. Sauf s'il y a un terrain relié au port orange ! Ce module est justement fait pour permettre d'inclure des terrains "par défaut" à vos macros... Vous allez peut-être me dire que le port orange est relié à quelque chose, donc que ça sera forcément lui qui sera utilisé ? En fait, non, puisque "Rocky Run In" ne sera pas forcément relié à un terrain, lorsque vous utiliserez la macro.. Si aucun terrain n'y est relié, c'est le terrain connecté au port gris qui sera utilisé, à savoir "Distorted Perlin".

Pull-up est lui-même relié à un Combiner, on s'en occupera plus tard...

Occupons-nous plutôt de la partie qui se trouve sous ce Combiner, et qui y est reliée par le module Displacement.

Faites un clic sur le module Gradient. Pas de surprise, on a un gradient de base :

L'orientation de ce gradient est déterminée par le paramètre "Valley Angle" du module "Rocky Run Params", paramètre qui passe d'abord par un scalar splitter. Le scalar splitter est ensuite relié au gradient et détermine ainsi la direction du gradient.

Qu'advient-il de ce gradient ? Comme vous pouvez le voir, il est relié à un module "Select Height", qui donne ce résultat :

Pourquoi le Select Height donne-t-il ce résultat à partir du gradient ? Faites un double clic sur le Select Height pour observer ses paramètres :

J'avais donné une explication sur le Select Height, à la page précédente. Pour résumer, il y a trois choses à régler :
- Le premier slider, qui sert à choisir la hauteur minimale
- Le second slider, qui sert à choisir la hauteur maximale
(ou l'inverse selon les cas, ce qui ne change absolument rien au résultat).
Une fois ces deux hauteurs choisies, le terrain obtenu par le Select Height comprendra, en blanc, les hauteurs comprises dans la tranche sélectionnée.
Regardez bien les paramètres de ce Select Height : la hauteur minimale se trouve au milieu, et la hauteur maximale aussi. Résultat :

------>

Seules les hauteurs du milieu du gradient ont été retenues, car ce sont celles qui correspondent à la tranche sélectionnée dans les paramètres du Select Height. Le résultat est un trait blanc (les hauteurs retenues, donc), et le reste, du noir (les hauteurs ne correspondant pas à la tranche sont devenues noires).

Avec un dégradé entre les deux : Celui-ci correspond au troisième paramètre du Select Height, le paramètre "Fuzziness". Il contrôle ce qui se passe pour les hauteurs proches de la tranche sélectionnée. Si ce paramètre est mis à zéro (comme pour la page précédente), les hauteurs comprises dans la tranche seront en blanc, celles hors de la tranche seront en noir, point barre. Si vous augmentez Fuzziness, Les hauteurs proches de la tranche formeront un dégradé qui ira du blanc (pour celles très proches de la tranche) au noir (pour celles qui en sont éloignées). Et c'est Fuzziness qui définit la largeur de ce dégradé.

Voilà pour le Select Height.

On continue : le Select Height est relié à un module "Inverter". Rien de bien sorcier, il inverse le terrain :

------>

Le module "Inverter" est ensuite relié à un module "Displacement".
Très pratique, ce module : il permet d'appliquer une distorsion au terrain relié à l'entrée du haut (ici, le terrain du module "Inverter") à partir d'un autre terrain relié à l'entrée du bas (ici, le terrain du Perlin Noise).

 

Module "Inverter"

---------------------------->

Module "Perlin Noise"

 

Résultat...

Le module "Inverter" a subi la distorsion, à partir du module "Perlin Noise". Le résultat, c'est que la ligne noire n'est plus aussi régulière...

Le module "Displacement", responsable de la distorsion, possède plusieurs paramètres.
- La direction de la distorsion qui gère euh... la direction de la distorsion. Dans le cas de la macro, elle est définie par le paramètre "Valley Angle", comme pour la direction du gradient. Le Scalar Splitter auquel est relié le paramètre permet de dédoubler ce paramètre afin de l'attribuer à plusieurs modules : ici, le Gradient et le Displacement.
- L'intensité ("Strength") du déplacement. Si ce paramètre est mis à zéro, ben... pas de déplacement :)
- La case "Centered" : Pas évident à expliquer, celle-là. En gros, si elle est cochée, le déplacement se fait dans le sens que vous avez défini, mais aussi dans le sens inverse, ce qui permet de garder les collines et les creux de votre terrain à peu près au même endroit. Ils seront déformés, mais resteront au même endroit. Décochez la : le terrain est déformé, mais il est aussi "emporté" dans la direction que vous avez définie par le paramètre du même nom...
- Edge Handling : On pourrait plus ou moins traduire ça par "Prise en main des bords". Cela définit ce qui se passe lorsque le bord du terrain est déplacé. En effet, il y a un risque pour que le bord se retrouve "sans information", puisque la partie du terrain qui le couvrait a été déplacée ailleurs. Dans ce cas, deux choix : "Mirror interior values" permet de dupliquer les valeurs du terrain déplacé, en les inversant. Le bord du terrain se retrouve alors avec les mêmes hauteurs que le terrain qui se trouve un peu plus loin, mais ces hauteurs sont inversées. Autrement, "Repeat edge values" permet, lors du déplacement, de conserver la valeur de la hauteur du bord. Elle est ainsi dupliquée, mais est la même pour toute la partie du terrain qui se retrouve sans informations.
Oui je sais, ce n'est pas très clair. Deux exemples qui n'ont rien à voir avec la macro, juste pour vous montrer...


Terrain de départ, qui va être déplacé vers la gauche.

"Mirror interior values"

"Repeat edge values"

Vous remarquerez que ce dernier paramètre n'affecte que le bord. Le reste du terrain reste identique...

Bon, revenons à notre macro. On a donc notre gradient inversé, puis déplacé :

Ça ne vous fait pas vaguement penser à une rivière, ça ?
Mais il reste encore à l'insérer à notre terrain de départ. C'est là que le combiner intervient :

Pour rappel, le module "Pull-up" contient le terrain de départ.
Il va être connecté au Combiner, ainsi que le module Displacement, le module Combiner étant paramétré pour la méthode "multiplication" que j'ai expliquée à la page précédente..
Le résultat :


Terrain de départ

Module "Inverter", mais cette fois avec d'autres couleurs


Module "Combiner" qui résulte de la combinaison des deux

Les zones les plus basses du module Inverter ont servi à abaisser le terrain de départ, alors que les zones les plus hautes l'ont laissé tel quel. Voir la page précédente :)

Et voilà, notre rivière est à peu près creusée... Cependant, vous pouvez voir qu'il reste encore un module "Clamp" relié au combiner.

Qu'est-ce que le module "Clamp" ?
La traduction serait "tenailles". Le module sert à "compresser" le terrain verticalement.
Je m'explique...
Dans Terragen, il y a une hauteur minimale et une hauteur maximale, pour le terrain : Il suffit de cliquer sur "Modify" dans la fenêtre Landscape, puis, à côté du bouton "Set Height Range".

Le module Clamp permet de les changer. Il est fait de deux "sliders" : Celui de gauche est plus élevé que celui de droite.
Celui de gauche représente la hauteur maximale, et celui de droite la hauteur minimale.

Pour simplifier, on va dire que la hauteur minimale du terrain est de 0m et la hauteur maximale de 100m.
Imaginez que l'on veuille que le terrain ne soit plus compris qu'entre 0m et 50m, il suffit alors de baisser le slider de gauche à la moité...
Augmenter le slider de droite revient au contraire à augmenter la hauteur minimale.

Depuis la version 0.99 de World Machine (ou meme la 0.98, je ne sais plus), il y a deux autres modes :
Le mode "Clip" sert à tronquer les hauteurs qui dépassent. Imaginez à nouveau le terrain qui va de 0 à 100m. Les deux sliders sont mis à 0 (minimum) et à 1 (maximum).
Maintenant, si on les met à 0.25 et 0.75, le terrain va être tronqué : Les hauteurs supérieures à 75m seront toutes ramenées à 75m (ça se voit d'ailleurs, le haut du terrain est aplati), et les hauteurs inférieures à 0.25 sont augmentées, un peu comme si on bouchait les trous du terrain...

Et le mode Expand, celui là je ne m'en suis jamais servi, mais c'est celui qui est utilisé pour la macro. Il sert à étirer le terrain, en permettant de fixer la hauteur minimale à un nombre inférieur à 0 et la hauteur maximale à un nombre supérieur à 1.
Le résultat, c'est que les hauteurs en dessous de 0 restent à 0, et celles au dessus de 1 restent à 1.
(Quand à la case "Normalize Input", très pratique, elle sert à modifier le terrain d'entrée en "forçant" la hauteur minimale à être à 0 et la hauteur maximale à être à 1. Les modifications appliquées avec le mode Clamp, Clip ou Expand viennent seulement ensuite).

Ici, le mode expand sert à élargir la rivière : le fond de la rivière va être "tiré" vers le bas, mais comme les hauteurs vont devenir inférieures à 0, elles vont s'aplatir...


Module "Combiner"

Module "Clamp"

Le module "Clamp" est celui qui est relié à "Macro Output", et c'est donc lui le résultat final de la macro.

 

Il reste encore quelques choses à expliquer : les paramètres utilisés pour la macro.
- Le paramètre "Valley Angle", comme je l'ai déjà dit, spécifie la direction du gradient et du déplacement. Le gradient, après avoir été déplacé, formera le "masque" de la rivière. La direction du gradient correspond donc à l'orientation de la rivière...

- "Valley Meandering" est un paramètre qui est relié au paramètre "Strength" du module Displacement. C'est grâce à lui que vous pourrez spécifier à quel point le gradient va être déformé. Mettez le à 0 : le module "Displacement" n'a plus aucun effet, le gradient n'est pas déformé, et le résultat, c'est que la rivière est totalement rectiligne.

- "Valley Sharpness", lui, est relié au paramètre "Fuzziness" du Select Height. Le Select Height permettait de choisir les hauteurs du milieu gradient. "Fuzziness" permet de choisir la taille du dégradé lorsque les hauteurs sont proches de la tranche choisie. Le dégradé va servir à creuser le terrain de départ, mais moins nettement que la ligne blanche du centre... Fuzziness sert alors à choisir avec quelle "brutalité" la rivière va s'insérer dans le terrain.
Mettez-le à zéro : vous remarquez que le terrain est creusé quasiment "d'un coup".
Cependant, l'auteur de la macro a pris soin de faire passer ce paramètre par un "Scalar Clamp". Celui-ci fonctionne comme le module "Clamp", expliqué plus haut, mais il s'occupe de la valeur du paramètre et nom du terrain.
Double-cliquez sur Scalar Clamp : "Current Value" correspond à la valeur de départ du paramètre, c'est-à-dire celle de "Valley Sharpness". Min Range et Max Range ne sont pas mis aux valeurs extrêmes mais respectivement à 0.078 et 0.83. Le mode choisi est du type "Rescale". Ainsi, en passant par le Scalar Clamp, "Valley Sharpness" va être contraint de prendre une valeur comprise entre 0.078 et 0.83.
Comme ce paramètre est relié à Fuzziness, cela signifie que vous ne pouvez pas choisir de mettre Fuzziness à zéro ou au maximum.
...Résultat, le terrain ne sera pas creusé complètement "brutalement" par la rivière. Ce serait le cas si Fuziness était à zéro, mais le Scalar Clamp l'en empêche...

- "Meandering Scale" : Il est relié au paramètre "Scale" du Perlin Noise servant pour le module "Displacement". Ce paramètre permet de spécifier la taille du Perlin Noise, et donc la taille du masque servant pour Displacement... La rivière possedera alors des "virages" plus ou moins grands, la taille de ces virages étant définie par la taille du Perlin Noise, elle-même définie par "Meandering Scale".
En passant, là aussi, il y a un Scalar Clamp. Il permet d'éviter de faire en sorte que la taille du Perlin Noise soit trop petite ou trop grande.

- "Meandering Noise" est relié au paramètre "Persistence" de Perlin Noise. Si vous avez déjà utilisé Perlin Noise à part, vous devez savoir que plus ce paramètre est élevé, moins le terrain résultat de Perlin Noise sera lisse. Dans cette macro, Perlin Noise est utilisée pour le module Displacement. Augmenter le paramètre "Persistence" permet de faire un déplacement plus chaotique, ce qui se répercute sur la forme de la rivière. Si ce paramètre était mis à zéro, Perlin Noise aurait des bosses et des creux tous lisses, et la rivière aurait elle aussi des virages bien lisses...
Là encore, un Scalar Clamp empêche de spécifier des valeurs trop extrêmes.

- Et enfin, "River Width" est relié au Clamp final, celui qui sert à abaisser le terrain afin d'élargir la rivière. "River Width" est relié au slider qui s'occupe de spécifier jusqu'à quel point le terrain va être abaissé.
Encore une fois, un Scalar Clamp empêche de spécifier des valeurs trop extrêmes, et donc de trop abaisser le terrain. Si c'était le cas, la rivière prendrait tout le terrain et ça ne ressemblerait à rien... En fait, si vous regardez les paramètres du Scalar Clamp, vous remarquez que les limites ne laissent pas beaucoup de choix : entre 0.031 et 0.094. Soit même pas un vingtième des valeurs que le paramètre pourrait prendre... On peut donc choisir la largeur de la rivière (par l'intermédiaire du Clamp final, qui abaisse le terrain), mais pas trop...

 

Voilà, c'est la fin de cet énorme tutoriel, j'espère que vous aurez à peu près tout compris ! Et sinon, relisez le, et expérimentez vous même... Si vous avez des questions ou des remarques, merci de m'adresser un mail :)

Page précédente
Page : 1 - 2 - 3 - 4 - 5 - 6