Différences

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
articles:mel-python:materiaux [2010/04/29 16:23]
nico Links to travaux:processing:start changed to travaux:processing
articles:mel-python:materiaux [2010/04/29 22:21] (Version actuelle)
nico
Ligne 1: Ligne 1:
 ======Générer un matériau====== ======Générer un matériau======
- 
-Retour à [[:​famille]]. 
  
 Je n'​explique pas ici la création de matériaux dans Maya, il faudrait beaucoup plus de pages et beaucoup plus de temps, je donne seulement les informations à mon sens nécessaire à la bonne compréhension de la procédure. Avant de se lancer tête baissée dans des lignes de code, il est nécessaire de comprendre certaines notions et comment fonctionne Maya. Je n'​explique pas ici la création de matériaux dans Maya, il faudrait beaucoup plus de pages et beaucoup plus de temps, je donne seulement les informations à mon sens nécessaire à la bonne compréhension de la procédure. Avant de se lancer tête baissée dans des lignes de code, il est nécessaire de comprendre certaines notions et comment fonctionne Maya.
Ligne 9: Ligne 7:
 Ouvrons l'​hypershade en allant dans //Window -> Rendering Editor -> Hypershade//​ ou en cliquant sur son icône située à gauche{{:​tutos:​python:​generer_materiau:​hypershade_button.png}},​ et créons un matériau blinn en cliquant sur "​Blinn"​ dans la liste de gauche. Deux boites "​blinn1"​ apparaissent,​ une dans //​Materials//​ l'​autre dans //Work Area// : Ouvrons l'​hypershade en allant dans //Window -> Rendering Editor -> Hypershade//​ ou en cliquant sur son icône située à gauche{{:​tutos:​python:​generer_materiau:​hypershade_button.png}},​ et créons un matériau blinn en cliquant sur "​Blinn"​ dans la liste de gauche. Deux boites "​blinn1"​ apparaissent,​ une dans //​Materials//​ l'​autre dans //Work Area// :
  
-[{{ :tutos:python:​generer_materiau:​hypershade_blinn.png?​510 |Création d'un Blinn dans l'​Hypershade}}] ​+[{{ articles:mel-python:​generer_materiau:​hypershade_blinn.png?​510 |Création d'un Blinn dans l'​Hypershade}}] ​
  
 En cliquant sur le bouton {{:​tutos:​python:​generer_materiau:​inout_button.png}} après avoir sélectionné "​blinn1"​ nous affichons plus de détails dans l'​espace de travail : En cliquant sur le bouton {{:​tutos:​python:​generer_materiau:​inout_button.png}} après avoir sélectionné "​blinn1"​ nous affichons plus de détails dans l'​espace de travail :
  
-[{{ :tutos:python:​generer_materiau:​hypershade_blinnHierarchy.png?​510 |Le matériau au complet}}]+[{{ articles:mel-python:​generer_materiau:​hypershade_blinnHierarchy.png?​510 |Le matériau au complet}}]
  
 Ces boites sont ce que l'on appelle des "​nodes",​ ou "​nœuds"​ : elles représentent des objets ou fonctions précises de Maya, pouvant transformer un signal. En d'​autres termes, chaque node permet de faire une action précise : inverse ça, réduis ça, crée une image... Ces boites contiennent donc un certain nombre de paramètres que l'on peut modifier : ce sont les attributs, que l'on voit en ouvrant l'//​Attribute Editor// (//​Ctrl+A//​). Ces boites sont ce que l'on appelle des "​nodes",​ ou "​nœuds"​ : elles représentent des objets ou fonctions précises de Maya, pouvant transformer un signal. En d'​autres termes, chaque node permet de faire une action précise : inverse ça, réduis ça, crée une image... Ces boites contiennent donc un certain nombre de paramètres que l'on peut modifier : ce sont les attributs, que l'on voit en ouvrant l'//​Attribute Editor// (//​Ctrl+A//​).
Ligne 25: Ligne 23:
 Le matériau est définis techniquement par l'​ensemble des nodes qui le composent, et visuellement par le résultat de ces nodes. Un matériau n'​existe que grâce à un shader, qui est le nœud central : shader et matériau sont intrinsèquement liés. Le matériau est définis techniquement par l'​ensemble des nodes qui le composent, et visuellement par le résultat de ces nodes. Un matériau n'​existe que grâce à un shader, qui est le nœud central : shader et matériau sont intrinsèquement liés.
  
-[{{:​tutos:​python:​generer_materiau:​nodes_simples.png |Un matériau simple}}] 
 Exemple simple : Exemple simple :
 +
 +[{{ articles:​mel-python:​generer_materiau:​nodes_simples.png |Un matériau simple}}]
  
 Ici le premier node est une image procédurale : une image générée par une fonction (procédure) mathématique. Ce node fabrique ainsi une image aléatoire selon une procédure fractale, ce qui donne cet aspect typique. Il existe d'​autres procédures,​ d'​autres algorithmes listés à gauche dans //2D textures// pouvant générer des choses très différentes,​ allant du bruit au tissus. Ce node est relié à notre shader : la couleur générée est envoyée dans la couleur du shader. Le matériau est donc simplement une surface ayant pour couleur cette image fractale. Ici le premier node est une image procédurale : une image générée par une fonction (procédure) mathématique. Ce node fabrique ainsi une image aléatoire selon une procédure fractale, ce qui donne cet aspect typique. Il existe d'​autres procédures,​ d'​autres algorithmes listés à gauche dans //2D textures// pouvant générer des choses très différentes,​ allant du bruit au tissus. Ce node est relié à notre shader : la couleur générée est envoyée dans la couleur du shader. Le matériau est donc simplement une surface ayant pour couleur cette image fractale.
  
-[{{ :tutos:python:​generer_materiau:​nodes_complex.png?​510 |Un matériau un peu plus complexe}}]+[{{ articles:mel-python:​generer_materiau:​nodes_complex.png?​510 |Un matériau un peu plus complexe}}]
  
  
Ligne 40: Ligne 39:
   * Un //​matériau//​ est visuellement le résultat d'un réseau de nodes, techniquement le réseau de nodes lui-même.   * Un //​matériau//​ est visuellement le résultat d'un réseau de nodes, techniquement le réseau de nodes lui-même.
 </​note>​ </​note>​
 +
 =====Codons===== =====Codons=====
 +
 Nous allons dans un premier temps créer un matériau de base, basé sur un shader Blinn. Nous allons dans un premier temps créer un matériau de base, basé sur un shader Blinn.
 +
 ====Créons==== ====Créons====
 +
 Comme on l'a vu précédemment un matériau fonctionnel contiens au minimum un Shading Node et un Shading Group. Comme on l'a vu précédemment un matériau fonctionnel contiens au minimum un Shading Node et un Shading Group.
  
Ligne 74: Ligne 77:
  
 ====Assignons==== ====Assignons====
 +
 Pour assigner notre super matériau à un objet, là aussi rien de plus simple. Pour assigner notre super matériau à un objet, là aussi rien de plus simple.
  
 Créons d'​abord notre objet : Créons d'​abord notre objet :
 +
 <code python> <code python>
 mel.polySphere(name='​tomate'​) #création d'une sphère mel.polySphere(name='​tomate'​) #création d'une sphère
Ligne 82: Ligne 87:
  
 Puis lions notre objet au Shading Group (pas au Shading Node !) : Puis lions notre objet au Shading Group (pas au Shading Node !) :
 +
 <code python> <code python>
 mel.polySphere(name='​tomate'​) #création d'une sphère mel.polySphere(name='​tomate'​) #création d'une sphère
Ligne 88: Ligne 94:
  
 Ce qui donne :  Ce qui donne : 
 +
 <code python> <code python>
 import maya.cmds as mel import maya.cmds as mel
Ligne 101: Ligne 108:
 </​code>​ </​code>​
  
-[{{ :tutos:python:​generer_materiau:​tomateShader_base.png |Notre "​tomateShader"​ dans l'​Hypershade}}]+[{{ articles:mel-python:​generer_materiau:​tomateShader_base.png |Notre "​tomateShader"​ dans l'​Hypershade}}]
  
 ====Modifions==== ====Modifions====
 +
 Tout comme la position d'un objet ou sa taille sont des attributs de l'​objet,​ les paramètres des nodes sont des attributs, et on les manipule de la même manière : avec //​setAttr()//​. Tout comme la position d'un objet ou sa taille sont des attributs de l'​objet,​ les paramètres des nodes sont des attributs, et on les manipule de la même manière : avec //​setAttr()//​.
  
 Modifions l'​attribut diffuse (cf. [[wp>​Diffuse reflection]]) : Modifions l'​attribut diffuse (cf. [[wp>​Diffuse reflection]]) :
 +
 <code python> <code python>
 import maya.cmds as mel import maya.cmds as mel
Ligne 125: Ligne 134:
 Nous pouvons placer cette ligne, donc modifier notre matériau, n'​importe ou __après__ la création du Shading Node : avant de l'​assigner à un objet, après... Nous pouvons placer cette ligne, donc modifier notre matériau, n'​importe ou __après__ la création du Shading Node : avant de l'​assigner à un objet, après...
  
-[{{ :tutos:python:​generer_materiau:​tomateShader_diffuse.png?​ |Notre "​tomateShader"​ avec une réflexion diffuse réduite}}]+[{{ articles:mel-python:​generer_materiau:​tomateShader_diffuse.png?​ |Notre "​tomateShader"​ avec une réflexion diffuse réduite}}]
  
 Notre matériau semble beaucoup plus foncé : normal, nous venons de réduire sa réflexion diffuse. Qui dit moins de réflexion dis moins de lumière renvoyée jusqu'​à notre œil et donc un objet plus sombre. Notre matériau semble beaucoup plus foncé : normal, nous venons de réduire sa réflexion diffuse. Qui dit moins de réflexion dis moins de lumière renvoyée jusqu'​à notre œil et donc un objet plus sombre.
Ligne 132: Ligne 141:
  
 Nous venons de modifier un attribut simple, demandant une seule valeur. Hors un très grand nombre d'​attributs sont définis par une couleur, donc trois valeurs : R, G, B. La syntaxe change donc un peu dans ce cas : Nous venons de modifier un attribut simple, demandant une seule valeur. Hors un très grand nombre d'​attributs sont définis par une couleur, donc trois valeurs : R, G, B. La syntaxe change donc un peu dans ce cas :
 +
 <code python> <code python>
 import maya.cmds as mel import maya.cmds as mel
Ligne 148: Ligne 158:
 </​code>​ </​code>​
 Nous faisons donc suivre le nom de l'​attribut par trois valeurs et lui précisons qu'il doit bien en récupérer trois. Nous faisons donc suivre le nom de l'​attribut par trois valeurs et lui précisons qu'il doit bien en récupérer trois.
-[{{ :tutos:python:​generer_materiau:​tomateShader_color.png |Notre "​tomateShader"​ avec une couleur différente}}]+ 
 +[{{ articles:mel-python:​generer_materiau:​tomateShader_color.png |Notre "​tomateShader"​ avec une couleur différente}}]
  
 <note tip> <note tip>
Ligne 156: Ligne 167:
 <code python>​mel.setAttr('​nomShader.attribut',​ R, G, B, type='​double3'​)</​code>​ <code python>​mel.setAttr('​nomShader.attribut',​ R, G, B, type='​double3'​)</​code>​
 </​note>​ </​note>​
- 
  
 --------------- ---------------
 Si vous avez des questions, des remarques, des suggestions,​ n'​hésitez pas à m'en faire part. Si vous avez des questions, des remarques, des suggestions,​ n'​hésitez pas à m'en faire part.
- 
-Retour à [[:​famille]]. 
  
 ~~DISCUSSION~~ ~~DISCUSSION~~