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

pigment

pigment est une structure qui définit une couleur et/ou une répartition de couleurs. Plusieurs cas de figure sont possibles.

couleur unie

C'est la forme la plus simple d'un pigment : une couleur unie, opaque ou pas. Exemples :

pigment {color rgb <1,0,0>}
pigment {color rgb <1,0,0> filter .5}
pigment {color rgbft <1,0,0,.5,.5>}
pigment {Red}

pigment avec motif + palette de couleurs

Très classique aussi, ce type de définition associe un motif et une palette de couleurs qui seront déployées suivant le motif. Exemple :

pigment {
  crackle
  color_map {
   [0.0 Red]
   [0.5 Yellow filter .5]
   [1.0 LightBlue]
  }
}

Lorsque le motif est un motif "à liste", comme checker par exemple, spécifiez simplement les couleurs les unes à la suite des autres :

pigment {checker Red White}

Voyez la page des palettes pour la syntaxe complète de color_map.

pigment avec motif + palette de pigments

Cette structure est très similaire à celle qui comporte une palette de couleurs, à ceci près que les composants de la palette sont eux-mêmes des pigments !

pigment {
  crackle
  pigment_map {
   [0.0 MonPigment1]
   [0.5 checker Red White]
   [1.0 MonPigment2]
  }
}

pigment avec plaquage d'image (image_map)

Pour appliquer une image sur un objet (un logo, du bois,...), on utilise le motif particulier image_map. Il est particulier parce qu'il ne s'utilise que dans un pigment, et parce qu'il prend ses couleurs dans les couleurs d'origine de l'image, et pas dans une palette.

pigment {
image_map {
           png / tga / ppm / pgm / jpeg / tiff / sys 
           "Nom_du_Fichier"
           (map_type 0 / 1 / 2 / 5)
           (once)
           (interpolate 2 / 4)

           (filter Index,F / all)
           (transmit Index,T / all)
 }
}

Pour la première partie de la syntaxe, voyez la page du motif image_pattern.

Les mots clés filter et transmit permettent de spécifier une transparence de l'image. Si l'image possède une palette de couleurs indexées (typiquement, une image en 256 couleurs), on pourra faire ceci par exemple :

pigment {
image_map {
            ...
           filter 2,0.5
           transmit 15,1
 }
}

...ce qui apliquera une transparence filtrée de 50% aux pixels dont l'index de couleur est 2, et une transparence non-filtrée aux pixels dont l'index est 15.

Pour appliquer une transparence à toute l'image, on écrira filter all ou transmit all. N'oubliez pas que filter est sans effet sur le noir !

Si l'image possède un canal alpha, celui-ci sera interprété comme des valeurs de transmit.

quick_color

En sus de toute autre définition, on peut toujours ajouter à un pigment une 'couleur rapide' (quick_color), qui sera utilisée lorsque la qualité de rendu choisie ne permet pas de rendre le pigment dans toute sa complexité :

pigment {
      ...
      quick_color Red
}

De nos jours, ce procédé est un peu désuet, et on lui préférera une gestion intelligente de la complexité des textures (en enclenchant l'utilisation de définition simplifiées, par exemple).