EXEMPLES DE SHADERS

Exemple utilisant le blend et la condition :

Dans cet exemple la lumiére se déplace, dès qu'elle est proche de la sphère elle brule le shader de la sphère.

1/ Créez une sphère et une lumière point. Créez deux textures utilisant la texture 3D cratére, faites varier les attributs afin d'obtenir une texture "normale" que vous nommerez UnBurnt et une texture brulée que vous nommerez REalBurnt

2/ Créez un material blinn, assignez le à la sphère.

Il est interressant de définir maintenant un Extra Attribut du shader blinn qui permetra de définir une valeur de chaleur de la lumière.

Dans le shader blinn choisissez le menu ADD, Dans la fenêtre Add Attribut, ajoutez le nom de cet attribut :ScaleOfBurnt. On lui donnera pour l'instant la valeur 1.2 (attribut editor du shader blinn->ExtraAttributes->ScaleOfBurnt=1.2)

 

3/ Light info permet de définir la position de la lumière,

Crèez une lumière point ( un DecayRate = Quadratic est bien venu...).

L'utilitaire Light Info renvoie les coordonnées de la lumière dans l'espace, et nous permet de situer correctement la distance de la lumière à l'objet. Hypergraph->Crete->Utilities->General->LightInfo.

En cliquant-draguant la lumière sur le noeud lightinfo, vous ouvrirez la fenêtre Connection Editor où vous établierez la connection suivante :

4/ Si la distance de la lumière ets supérieure à la valeur ScaleOf Burnt, alors la sphère sera éclairée avec une matière qui ne sera pas brulée.Le noeud de CONDITION permet d'établir cette comparaison :

Cela nous donne :

Nous remarquons que condition.color2 est une couleur blanche. Si l'on désire une transformation des couleurs du shader en zone brulée, nous devons établir sur ce noeud la possibilité d'ume image mixee entre la texture normale et la texture "brulée". Le noeud Blend rempli cet office, l'attribut blender donnant un pourcentage de mélange entre les deux textures.

On connectera donc la sortie du blender vers le noeud condition.color2

Le blender lui même a besoin d'être évalué par la valeur de lightinfo qui doit être "bornnée" entre des valeurs allant de 0 à la valeur de ScaleOfBurn.

on utilisera donc l'utilitaire SetOfRange et uniquement les valeurs X puisque l'on a qu'une valeur flottante:

 

Finalement nous obtenons cette structure (Version MAYA3.0) :