vers l'index général de l'aide - index des matériaux

modificateurs de normale

slope_map

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°
          }
gradient x avec la slope_map par défaut

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
gradient x avec la slope_map triangulaire

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.