bricolage de height field

Bon, je vais essayer d'expliquer comment faire un height-field avec libimage Comme j'écrit cette page en même temps que le code de démonstration, ça risque de sembler un peu décousu. Pour que ça marche, il faut avoir installé la libimage, et persistance of vision.


Le départ

On va définir le motif de base: ce sera une grille de pics régulièrement espacés, que nous allons progressivement transformer en image 3D. Sur l'image à droite, vous voyez peut-être le résultat: quelques points... Consultez premiere.c pour voir comment c'est fait.

La fonction Image_hf15_plot place dans l'image un point dont l'altitude sera comprise entre 0 et 32767.

C'est donc cette image, codée d'une façon un peu particulière, qui va être la carte des altitudes de notre image 3D, faite grâce à POVray. Laissez moi quelques minutes, le temps de placer la caméra, la lumière, toussa... Pendant ce temps, allez lire la doc.


Hop, voilà, c'est gruik, mais ça vous donne cette image, qui elle-même est assez gruike. Bon, c'est pas terrible, tout ça, notre relief ressemble à une forêt de poteaux. On va essayer d'arranger ça...

On va d'abord élargir un peu ces poteaux, puis adoucir leur forme.



deuxième tentative

Nos trucs sont trop étroits et trop bruts. Il existe deux fonctions pour traiter ce problème. La première sert à amplifier les sommets: Pour chaque pixel, Image_hf15_dilate le remplace par le maximum de son voisinage 3x3. La seconde, Image_hf15_lissage, réalise la moyenne des pixels dans le même voisinage. Voici le code en question.

Comme vous pouvez presque le constater sur l'image ci-contre, les choses s'arrangent. Mais il faudrait que je fasse un soft pour afficher de façon crédible les TGA/HF15...


Bon, c'est un peu mieux, mais pas encore terrible. On a quand même l'impression de regarder un truc trop artificiel.

Trop artificiel ? Oui, mais surtout trop régulier. La nature n'est pas régulière... Peut-être allons-nous encore améliorer les choses en rajoutant un peu de bruit ?...



rajoutons donc du bruit.

Là, nous avons le choix entre deux méthodes: On rajoute le bruit dans le hf15 courant, ou on crée un second hf contenant le bruit que l'on mixera à celui des poteaux. Pour créer le bruit dans une autre image, il y a des outils qui peuvent faire ça. Ensuite, il faudra écrire un mixer. On va donc plutôt rajouter le bruit directement. Et ça nous emmene à ce code: bruitage.c. qui nous donnera cette image:

La chose commençe à prendre forme, mais les bords sont, comment dire ? bizarres. On voit le dessous du machin, et c'est pas très beau...



To be continued...