Dorian Fevrier's blog - Mot-clé - writeToColorBufferJe m’appelle FEVRIER Dorian, je suis infographiste 3D passionné par mon métier, l’informatique en général, l’internet, la programmation et l’évolution de tout ce petit monde. Vous trouverez sur ce blog des tutoriaux, mes coups de cœurs, avis, etc.2024-01-02T23:48:05+01:00FEVRIER Dorianurn:md5:695d9c73474c33ce3dab043823509c4bDotclearEcrire avec les framebuffers persos de Mayaurn:md5:c3c7f6989802ce88c31eb757d85541802009-02-28T14:14:00+01:002013-07-26T22:42:30+02:00NarannInfographie 3D - Boulotarea lightbrdffinal gatherfrframebuffermayamental raymia_material_xwriteToColorBuffer<p><img src="https://www.fevrierdorian.com/blog/public/framebuffer/icone.png" alt="iconefbcolor" style="float:left; margin: 0 1em 1em 0;" title="iconefbcolor, fév. 2009" height="150" width="150" />Les framebuffers sont un peu à un moteur de rendu ce que sont les "calques" à Photoshop (Désolé les puristes pour la comparaison foireuse). Pour faire simple, disons qu'on peut demander à mental ray d'écrire dans des framebuffers et d'y stocker des informations (spéculaire, color, et bien d'autres...) Depuis Maya 2009, il est possible d'écrire dans les framebuffers de mental ray (les mauvaises langues dont je fais partie diront: "Enfin..."). Je vous propose donc ce mini tuto sans trop d'ambitions qui vous offrira je l'espère un aperçu rapide et concis de "comment-qu'on-fait-pour".</p> <p>Commençons déjà par faire un scène tout ce qu'il y a de plus bateau.</p>
<p><a href="https://www.fevrierdorian.com/blog/public/framebuffer/sceneClassique001.png"><img src="https://www.fevrierdorian.com/blog/public/framebuffer/.sceneClassique001_m.jpg" alt="sceneClassique001.png" style="display:block; margin:0 auto;" title="sceneClassique001.png, fév. 2009" height="358" width="448" /></a></p>
<p>Bon, j'avoue, il y a du area light et du final gather... (Pas si bateau que ça...)</p>
<p>Allons chercher le node qui va nous permettre d'écrire dans les framebuffers:</p>
<p><img src="https://www.fevrierdorian.com/blog/public/framebuffer/chercherWriteToColor001.png" alt="chercherWriteToColor001.png" style="display:block; margin:0 auto;" title="chercherWriteToColor001.png, fév. 2009" height="604" width="254" /></p>
<p>Regardons un peux ce qu'il a dans le ventre:</p>
<p><a href="https://www.fevrierdorian.com/blog/public/framebuffer/infoWriteToColor001.png"><img src="https://www.fevrierdorian.com/blog/public/framebuffer/.infoWriteToColor001_m.jpg" alt="infoWriteToColor001.png" style="display:block; margin:0 auto;" title="infoWriteToColor001.png, fév. 2009" height="268" width="448" /></a></p>
<ul>
<li>Custom Color Pass est une liste des passes de custom color qu'on a créé. C'est dans cette passe que le framebuffer sera utilisé.</li>
<li>Write opération est la façon dont le framebuffer courant va s'ajouter a celui déjà présent. (Add par défaut est très bien dans la mesure ou on ne va pas utiliser plusieurs framebuffer pour cet exemple.</li>
<li>On s'en fout, laisser à 1.0.</li>
<li>Evaluation Mode est un peu subtile à comprendre. Disons que ce paramètre sert si vous voulez "transformer un shader en un autre". Les différents modes sont assez subtile à comprendre et je vous invite à lire la doc Maya. Laisser "Always".</li>
<li>Evaluation Pass Through: Quand le shader connecté ici est calculé, le framebuffer calculera aussi le shader qu'on lui indique juste en dessous.</li>
<li>Color est la couleur du shader qui sera calculé dans le framebuffer.</li>
<li>Alpha, idem mais pour l'alpha.</li>
</ul>
<p>Avant d'aller plus loin il faut créer une renderPass qui supporte notre node "writeToColorBuffer", à savoir, une "custom color pass":</p>
<p><img src="https://www.fevrierdorian.com/blog/public/framebuffer/createCustomColorRenderPass001.png" alt="createCustomColorRenderPass001.png" style="display:block; margin:0 auto;" title="createCustomColorRenderPass001.png, fév. 2009" height="840" width="569" /></p>
<p><img src="https://www.fevrierdorian.com/blog/public/framebuffer/renderSettingAssociatedPasses001.png" alt="renderSettingAssociatedPasses001.png" style="display:block; margin:0 auto;" title="renderSettingAssociatedPasses001.png, fév. 2009" height="670" width="461" /></p>
<p>Elle est là!</p>
<p>Maintenant nous allons dire à notre node de "writeToColorBuffer" d'utiliser cette passe:</p>
<p><img src="https://www.fevrierdorian.com/blog/public/framebuffer/selectCustomColorPass001.png" alt="selectCustomColorPass001.png" style="display:block; margin:0 auto;" title="selectCustomColorPass001.png, fév. 2009" height="115" width="396" /></p>
<p>On est près à vraiment commencer.</p>
<p>Si nous voulons, par exemple, une reflexion sur le premier cube, nous connectons la sortie du shader du premier cube sur le Evaluation Pass Through, nous créons un shader perso qui ne fera que refléter (ici, un mia_material_x tout en noir avec réflexion à 1 et BRDF à 1), on le connecte sur le Color.</p>
<p><img src="https://www.fevrierdorian.com/blog/public/framebuffer/connections001.png" alt="connections001.png" style="display:block; margin:0 auto;" title="connections001.png, fév. 2009" height="543" width="435" /></p>
<p>On lance le rendu, il se fini et...</p>
<p>...Rien ne ce passe...</p>
<p>En effet, votre buffer à été écrit sur le disque, vous ne pouvez pas le voir directement depuis Maya. Allez voir ou est votre workspace puis allez dans le dossier image. Je vous donne directement un lien:</p>
<p>C:\Documents and Settings\<nom>\My Documents\maya\projects\default\images\tmp\customColor</p>
<p>Votre image doit s'y trouver:</p>
<p><a href="https://www.fevrierdorian.com/blog/public/framebuffer/passReflectCube001.png"><img src="https://www.fevrierdorian.com/blog/public/framebuffer/.passReflectCube001_m.jpg" alt="passReflectCube001.png" style="display:block; margin:0 auto;" title="passReflectCube001.png, fév. 2009" height="336" width="448" /></a></p>
<p>Cool!</p>
<p>En bidouillant vous pouvez <del>finir le boulot d'Autodesk</del> faire des scripts qui peuvent, par exemple, créer un writebuffer par shader et le connecter à une même passe.</p>
<p><img src="https://www.fevrierdorian.com/blog/public/framebuffer/allWritebufferCreated001.png" alt="allWritebufferCreated001.png" style="display:block; margin:0 auto;" title="allWritebufferCreated001.png, fév. 2009" height="552" width="110" /></p>
<p><a href="https://www.fevrierdorian.com/blog/public/framebuffer/allWritebufferCreated002.png"><img src="https://www.fevrierdorian.com/blog/public/framebuffer/.allWritebufferCreated002_m.jpg" alt="allWritebufferCreated002.png" style="display:block; margin:0 auto;" title="allWritebufferCreated002.png, fév. 2009" height="336" width="448" /></a></p>
<p>A chacun de voir. N'hésitez pas a laisser un commentaire si vous avez des questions.</p>
<p>See you soon!</p>
<p>Dorian</p>