Un gros plan sur cette falaise, pourtant nettement plus regardable de loin que dans sa version initiale, donne une image assez pitoyable :

Quelques options complémentaires vont permettre d’améliorer le résultat.
Les brins obtenus avec deux triangles croisés permettent de bien apprécier l’implantation de l’herbe, mais il faut bien avouer que de près, ils sont franchement moches. Le second module d’exportation permet de les remplacer par des brins d’herbe courbes et lisses.
![Brins courbes [6k]](brins-courbes.png)
Chaque brin d'herbe est constitué de mutliples triangles
arrangés selon une courbe. Par rapport au module
précédent, ce mode d'exportation présente des
paramètres supplémentaires.
Les deux plages d'angles indiquent les valeurs possibles, prises au hasard, pour les angles par rapport à la verticale, d'une part à la racine du brin, d'autre part au sommet de la feuille. Ces angles doivent être compris entre 0 et 90°.
La raideur indique si le brin va brutalement se plier près
de l'une de ses extrêmités, ou se courber progressivement:
![]() |
![]() |
| Raideur = 0 |
Raideur = 1 |
La résolution est de nombre de triangles par demi-brin. La résolution par défaut de 10 est largement suffisante tant que l'on ne fait pas de gros plan sur l'herbe. Au-delà, il peut être nécessaire d'augmenter ce paramètre, qui doit être compris entre 5 et 100.
Selon les cas, on peut souhaiter que la terre située sous les herbes soit plus ou moins visible. Pour se faire, il est possible d’agir sur la largeur des brins, leur nombre, ou l’échelle d’exportation. Le paramètre « taux de couverture » donne une indication de la façon dont le sol est occupé par l’herbe. Plus il est faible, plus les brins sont fins (et plus la terre est visible). Réciproquement, un taux élevé donnera des brins plus gros. C’est une question de goût et de besoin, qui dépend vraiment de l’image à réaliser. Cette indication permet de retrouver, après un changement de nombre de brins ou d’échelle, une image d’apparence semblable à celle obtenue préalablement au changement.
Jusqu’à présent, nos brins d’herbe sont bêtement verts. Une première amélioration consiste à texturer en bloc tout le champ, par exemple comme ceci :
union{
#include "monexport.inc"
pigment {
bozo color_map {
[0 Green]
[1 ForestGreen]
}
scale 5
}
}
Le résultat peut suffire, vu de loin, mais certainement pas vu de près. De plus, des techniques classiques comme l’utilisation d’un gradient pour faire varier la teinte vers le haut de la feuille sont ici inutilisables puisque les feuilles peuvent être placées à des altitudes différentes.
Toutefois, une possibilité apparue dans MegaPOV et reprise dans POV-Ray 3.5 est l’uv-mapping. Chaque point de la feuille est doté de coordonnées « implicites » en 2D, appelées u et v, que l’on peut utiliser pour placer des textures. Les coordonnées u et v sont semblables pour toutes les feuilles, et ne diffèrent que d’un décalage « horizontal » aléatoire, permettant ainsi une différenciation individualisée de chaque brin :

Le code POV correspondant à une variation de pigment au fur et à mesure que l’on « monte » dans la feuille est par exemple le suivant :
#declare txtGrass=texture {
uv_mapping
pigment {
gradient y
turbulence 0.2
pigment_map {
[0.20 pigEarth]
[0.45 pigGreen]
[0.75 pigSpotted]
[1.00 pigEarth]
}
}
finish{
ambient 0
diffuse 0.7
specular 0.2 roughness 0.015
phong 0.5 phong_size 10
}
scale <0.001,1,0.001>
}
union{
#include "monexport.inc"
texture {txtGrass}
}
|
|
On peut aller encore plus loin, en mélangeant uv-mapping et textures classiques. Cela nécessite un travail un peu plus compliqué, puisque POV-Ray ne permet pas de superposer les deux. Pour « brûler » l’herbe par endroits, on peut par exemple faire comme suit :
#declare txtGrassBrule =texture{
pigment {
spotted
color_map {
[0.0, 0.2 color Tan*0.4 color Tan*1]
[0.2, 0.3 color Tan*1 color Green*1]
[0.3, 0.7 color Green*1
color rgb <.8, 1, .4>*1.5]
}
}
}
#declare txtGrassComplexe = texture {
bozo texture_map{
[0.3 txtGrass]
[0.7 txtGrassBrule]
}
scale 1
}
union{
#include "monexport.inc"
texture {txtGrassComplexe}
}
|
|
Ou encore avec une material_map pour faire des motifs bien maîtrisés à l'avance (atterrissages de soucoupes volantes par exemple) etc...
L’implantation par défaut de l’herbe est très simpliste, puisque les brins sont plantés un par un. HFC permet d’utiliser un algorithme qui donne de meilleurs résultats en gros plan. Son principal défaut est de regrouper les brins, diminuant la surface au sol couverte par ceux-ci. A taille de brins égale, il sera donc souvent nécessaire d’augmenter le nombre total de brins.
L’utilisation est on ne peut plus simple, puisqu’il suffit d’indiquer le nombre moyen de brin par touffe d’herbe. L’algorithme prend ensuite en compte la probabilité de pousse du brin pour déterminer le nombre effectif de brins de chaque touffe, et réduira également la taille des brins là où la vie est la plus rude.

Ben… c’est tout. Il n'en faut pas plus pour faire l'image de la page d'accueil.
Si vous en voulez plus, écrivez-moi ou, mieux, venez faire un petit tour sur le chan IRC #povray-fr (undernet).
2. améliorations générales
Sommaire
© François Dispot 2003