vers l'index général de l'aide - index des matériaux
Par défaut, dans une normale,les valeurs de motif (de 0 à 1) sont converties linéairement en valeurs de hauteur, de 0 à 1 aussi.
slope_map est un modificateur de normale qui donne à l'utilisateur la possibilité de définir exactement comment les valeurs de motif sont converties en hauteurs apparentes.
La syntaxe est la suivante :
normal {... //motif, bump_size,... slope_map { [Position1, <Hauteur1,Pente1>] [Position2, <Hauteur2,Pente2>] ... } } //note : les crochets sont à utiliser (n'indiquent pas une option).
C'est un peu comme si on établissait une courbe de corrélation entre la valeur (de 0 à 1)
retournée par le motif (en abscisse) et la hauteur apparente de ce point.
"Position" est une valeur sur l'abscisse, Hauteur étant la position (entre 0 et 1 également)
sur l'ordonnée qui lui correspond, et Pente étant la pente de la courbe de corrélation
en ce point.
pente 0 = horizontale
pente 1 = 45° vers le haut
pente -1 = 45° vers le bas ...
On peut spécifier entre 2 et 256 points de contrôle.
Note : la valeur de la pente est égale à la tangente de l'angle de son inclinaison.
La courbe linéaire employée par défaut pourrait se définir comme suit :
slope_map {[0, <0,1>] //commence en bas à 45° [1, <1,1>] //termine en haut à 45° }
exemple avec un gradient x
On pourrait par exemple en faire une courbe d'allure triangulaire :
[0 <0, 1>] // commence en bas et part à 45° [0.5 <1, 1>] // à la moitié, bute sur le maximum avec une pente de 45° intacte [0.5 <1,-1>] // du même point, repart brutalement à -45° vers le bas [1 <0,-1>] // et termine avec le même angle
exemple avec le même gradient x
Attention : la "pente" dont il est question ici n'est pas la pente du "relief", mais celle de la courbe de corrélation entre la valeur du motif et la hauteur apparente de la normale ! (quoique, en pratique, cela revienne à peu près au même).
Attention aussi : la courbe de la slope_map est une fonction du 3ème degré (cubique), et ne contiendra donc que rarement des segments de droites.
Voici un exemple qui montre le passage d'une rupture brusque à une pente douce.
box {-1,1 texture { normal { gradient <.5,.5,.5> slope_map { [0.00 <0,1>] [0.25 <1,1>] [0.25 <1,-1>] [0.50 <1,0>] [0.75 <0.5,0.5>] [1.00 <0,1>] } } pigment {SteelBlue} finish {phong 1 reflection .3} } }
Remarque : slope_map peut être utilisé avec tous les motifs excepté brick, checker, hexagon, bumps, dents, ripples, waves, wrinkles et bump_map.