Tutorial : faire des pass sous MentalRay.

Bonjour,

Aujourd’hui, je vais vous expliquer comment rendre vos images sous MentalRay en les découpant en pass.

Je ne vais pas faire un énième tutorial sur les renders layers, mais je vais vous montrer une autre technique, plus optimisée et que je trouve largement mieux ! D’ailleurs, je suis étonné que peu de personnes en parle (pourquoi ?….).

On va utiliser les buffers.

Let’s go =).

Explication :

Qu’est ce qu’un buffer ?

Un buffer, c’est comme un « canal », un « tunnel ». Dans chaque buffer, on appliquera une pass de rendu.

Avantages ?

Les avantages sont multiples. Déjà, la création de pass en terme de calculs et largement plus rapide, puisque toutes les pass sont créées en un seul calcul.

Pratique :

Je vais essayer d’être clair et simple. Il y aura beaucoup d’images pour illustrer mes propos.

Je préviens, il y a plusieurs méthodes. Ici je les expliques toute (à peut près).

J’explique d’abord la méthode « galère » pour que vous compreniez, ensuite la méthode ultra rapide avec des customs shaders.

Ce qu’il vous faut :

- Maya 8, 8.5 ou 2008 SP1 ou Maya 2008 Ext2 (peut être la 7 aussi, je n’ai pas testé.)

- ctrl_buffer v2 RC5 pour Maya 8, 8.5, disponible ici

OU ctrl_buffers v2 SP2 pour Maya 2008 SP1, disponible ici.

Attention, si vous êtes sous un Maya 64bits, il vous faut mettre le fichier .dll 64bits. Le fichier .dll 32bits ne marchera pas sous 64bits, et vis verça.

- mia_wrapper, disponible ici (pas obligatoire)

L’utilisation des buffers se fait en 3 étapes :

- le buffer store

- le buffer read

- le buffer write

Commençons par faire une scène simple :

powered by WordPress Multibox Plugin v1.3.5

tutorial_scene

Mettez le moteur de rendu : Mental Ray.

————————————————————

1ère étape : le buffer store :

On va assigner un matériau pour chaque sphères. J’ai fait exprès d’utiliser plusieurs matériaux afin de vous montrer tout les cas possibles auxquels vous pouvez avoir affaire.

Alors, j’ai utilisé :

- un blinn

- un fast_skin_sss

- un mia_material

- un mia_material_x (que sur Maya 2008. C’est un mia_material amélioré justement pour les buffers)

powered by WordPress Multibox Plugin v1.3.5

tutorial_material

Maintenant, nous devons établir la stratégie. Combien de buffers nous allons utiliser, chaque buffer aura quoi.

Pour cette petite scène, je vais utiliser 5 buffers :

- le buffer 1 sera la diffuse

- le buffer 2 les speculaires

- le buffer 3 la reflection

- le buffer 4 la refraction

- le buffer 5 la lumiere indirecte (la pass de Final Gather)

————————————————————

Prenons le cas du mia_material_x.

Créez un matériau « buffer_store » (disponible grâce au ctrl_buffers) . Assigner ce matériau à la sphère qui avait le mia_material_x.

Prenez votre mia_material_x et glisser le dans le « render.buffer » sur buffer_store.

Le Connection Editor va s’ouvrir.

Connectez le « result » de votre mia_material_x au « primarybuffer » de votre buffer_store.

Comme vous vous en doutez, le « result » est juste le résultat que donnera le matériau au rendu, le « primarybuffer » correspond au render.buffer du buffer_store.

powered by WordPress Multibox Plugin v1.3.5

tutorial8miamaterialx_connection

Maintenant, on va connecter le « diffuse.result » dans le buffer 1, donc dans le inbuffer_1. Je pense que vous avez compris pourquoi =).

En passant, vous ne devez rien connecter au buffer 0. Celui-ci est réservé au glow de Maya.

powered by WordPress Multibox Plugin v1.3.5

tutorial_material_diffuse_connect

Je pense que vous devinez la suite.

Vous connectez le « spec.result » au « inbuffer_2″, le « refl.result » au « inbuffer_3″, le « refr.result » au « inbuffer_4″ et le « indirect_result » au « inbuffer_5″.

Voilà ! Pour chaque buffer, vous avez une pass.

Vous devriez avoir votre buffer_store comme ceci (en passant, pour ne pas vous perdre, nommez vos buffers : diffuse, spec, etc…).

N’oubliez pas de cocher la case « store » pour prendre en compte le buffer.

powered by WordPress Multibox Plugin v1.3.5

tutorial_buffer_sore

Voilà ! Votre buffer store pour le mia_material_x est configuré ! Mais attention, on ne la fait que sur une sphère/un matériau.

Je vais expliquer comment faire avec d’autres matériaux par la suite.

————————————————————

2ème étape : le buffer read :

Maintenant, on va configurer le buffer read.

C’est là, où on dit à MentalRay le nombre de buffers utilisés.

Allez dans les options de rendu, dans MentalRay —-> framebuffers —-> use frame buffers

Le miDefaultOptions va s’ouvrir. Allez dans « Frame buffers ».

Créez un buffer en cliquant sur « Create ».

powered by WordPress Multibox Plugin v1.3.5

tutorial_bufferread

Double cliquez sur votre 1er buffer read. Dans « Data Type », mettez « RGBA Float 4×32 bits ».

Pourquoi du 32 bits ? Parce que nous allons utiliser comme format d’image « .exr ». L’exr est un format suportant le 32 bits flottant (ainsi que d’autres choses que vous verrez plus loin dans ce tutorial). Ceci permet d’avoir toutes les infos de couleur même dans une zone « cramée ».

Mais si vous souhaitez utiliser un autre format, vous pouvez mettre du RGBA 4×8 bits.

powered by WordPress Multibox Plugin v1.3.5

tutorial_bufferread_rgba

Créez donc non pas 5 buffers read, mais 6 buffers read. Pourquoi 6 buffers alors qu’on en a 5 à la base (diffuse, speculaire, reflection, refraction, indirecte light) ?

Tout simplement parce que comme je l’ai dis plus haut, le buffer 0 est réservé à Maya pour le glow. Et ici, le buffer read 1 correspond au buffer 0, le buffer read 2 au buffer 1, le buffer read 3 au buffer 2, etc etc. Certes, cela semble tiré par les cheveux.

powered by WordPress Multibox Plugin v1.3.5

tutorial_bufer_readall

Voilà ! Le buffer read est configuré. Il ne reste plus que le buffer write.

————————————————————

3ème étape : le buffer write :

Qu’est-ce que le buffer write ?

Le buffer write, c’est lui qui va écrire les buffers (les pass donc) sur votre disque. On devra lui dire le format des images, où elles doivent être écrite, etc.

Allez dans votre caméra, MentalRay —-> Primary Output Pass.

Créez un buffer write en cliquant sur « create ». Le 1er corresponds au diffuse.

powered by WordPress Multibox Plugin v1.3.5

tutorial_bufferwrite

Les configurations sont simples :

Cochez « use user buffer », et prenez le buffer read 2 (n’oubliez pas, le buffer read 1 corresponds enfaite au buffer 0 réservé pour le glow) !

Mettez vous en « File mode ». Et le format, vous l’aurez deviné : OpenExr.

En image prefixe, tapez : diffuse.

powered by WordPress Multibox Plugin v1.3.5

tutorial_bufferwritediffuse

Revenez dans votre caméra, créez un 2ème buffer write qui correspondra au speculaire.

Même principe. Dans User Buffer, vous prenez donc le buffer read 3.

powered by WordPress Multibox Plugin v1.3.5

tutorial_bufferwritespec

Et ainsi de suite, jusqu’à créer donc 5 buffers write.

powered by WordPress Multibox Plugin v1.3.5

tutorial_bufferwriteall

Voilà, votre buffer write est configuré !

————————————————————

Faites un rendu =).

Et hop, vous devriez avoir 5 images en plus ! Ce sont vos pass !

powered by WordPress Multibox Plugin v1.3.5

tutorial_imagebuffers

Une fois composité (ici avec Fusion) :

powered by WordPress Multibox Plugin v1.3.5

tutorial_miamaterialx_fusion

Voilà ! Vous savez tout sur les buffers. Ah mais non, il n’y a que la sphère avec le mia_material_x !

Normal, on a fait qu’un buffer store sur elle.

Mais si vous faites des buffers store sur tout, en isolant à chaque fois les mêmes choses (ici diffuse, spec, etc.) sur les bons buffers (1, 2, etc.), vous aurez tout.

Pour la suite, je vais vous montrer comment cela fonctionne avec d’autres matériaux, autre que le mia_material_x.

————————————————————

1ème étape bis : buffer store avec un blinn :

Avec un blinn (ou lambert, ou autre matériau de la même catégorie).

Exactement comme la 2ème étape. Créez un nouveau matériau buffer store, appliquez le à la sphère qui avait le blinn, et faites glisser votre blinn sur le render.buffer du buffer_store.

Oh ! Etonnant, le Connection Editor ne s’ouvre pas !

Normal, le blinn (ou ce même type de matériaux) n’est pas fait pour les buffers.

Mais cela ne fait rien, il y a toujours une solution.

Donc, comment créer la pass de diffuse avec un blinn ?

Enfait, ceci est très simple. il suffit de dupliquer votre blinn « principal » et de le configurer pour qu’il ne fasse que du diffuse. C’est-à-dire que l’on met les speculaires, reflections à 0.

Dès que vous avez fait cela, vous glissez votre « blinn de diffuse » dans le buffer.1 du buffer_store.

powered by WordPress Multibox Plugin v1.3.5

tutorial_buffer_store_blinndiffuse

Faites de même pour faire un « blinn de speculaire » (diffuse noir, reflection à 0) et glisser le sur le buffer.2 du buffer_store.

Pareille pour les reflections.

Pareille pour la refraction (transparence).

Pour la lumière indirecte, on ne peut pas le faire. Donc laissez le buffer.5 vide. Ne cochez pas la case « store » du buffer 5 donc.

powered by WordPress Multibox Plugin v1.3.5

tutorial_bufferstore_blinnall

Faites un rendu.

Et hop, vous avez votre blinn dans les pass.

powered by WordPress Multibox Plugin v1.3.5

tutorial_passblinn

————————————————————

1ème étape bis : buffer store avec un mia_material :

Bon là, il y a deux méthodes :

- celle du blinn d’au dessus (buffer_store, on duplique etc)

- celle avec la mia_wrapper

Qu’est ce que le mia_wrapper ?

Le mia_wrapper est un buffer_store tout « fait » pour le mia_material.

Créez un matériau mia_wrapper, appliquez le à la sphère qui avait un mia_material.

Dans les attributs de mia_wrapper, glissez votre mia_material dans le « mtl » :

powered by WordPress Multibox Plugin v1.3.5

tutorial_mia_wrapper

Il ne vous reste plus qu’à configurer les numéros des buffers du mia_wrapper.

Une image sera plus explicite, vous allez vite comprendre.

powered by WordPress Multibox Plugin v1.3.5

tutorial_wrapper_numero

Faites un rendu.

powered by WordPress Multibox Plugin v1.3.5

tutorial_wrapperfusion

Notre sphère avec un mia_material est dans nos pass.

————————————————————

1ème étape bis : buffer store avec un SSS :

Avec un fast_skin_shader, c’est un peu le même principe que le « blinn ».

Vous dupliquez votre matériau SSS, vous enlevez tout les speculaire, reflection, etc, et vous le glissez dans le buffer 1 pour faire le diffuse.

powered by WordPress Multibox Plugin v1.3.5

tutorial_bufferstire_sss

Attention, n’oubliez pas de reconnecter le « Mentalray texture » de votre SSS principal dans le « Lightmap » de votre « SSS Diffuse ».

powered by WordPress Multibox Plugin v1.3.5

tutorial_bufferstore_sss_diffuse

N’oubliez pas aussi de reconnecter le « misss_fast_lmap_maya » dans le shading groupe de votre buffer_store.

powered by WordPress Multibox Plugin v1.3.5

tutorial_buffer_storesssshading

Pour le fun (et pour une meilleure compréhension) , nous allons rajouter une pass de back SSS.

Comme d’habitude, dupliquez votre matériau SSS, mettez tout les diffuses, spec, reflection, etc  à 0, pour ne laisser que la pass de back scattering (rouge pour de la peau généralement. A moins d’être un extra-terrestre).

Glissez le dans le buffer.6 du buffer_store.

Qu’est-ce qu’il faut faire maintenant pour avoir cette pass en plus ?

Tout simplement, rajouter un buffer read, et un buffer write.

Donc allez dans les options de rendu, framebuffer, etc… et créez un nouveau buffer read (qui doit être le buffer read numéro 7 normalement).

Ensuite, allez dans votre caméra, creez la aussi un nouveau buffer write.

powered by WordPress Multibox Plugin v1.3.5

tutorial_bufferwrite_sss

powered by WordPress Multibox Plugin v1.3.5

tutorial_bufferwrite_ssss

Faites un rendu.

powered by WordPress Multibox Plugin v1.3.5

tutorial_all_sss

Et voilà, vous avez une pass de SSS en plus.

————————————————————

2ème bis étape : le buffer read avec un custom shader :

Comment créer votre buffer read read rapidement ?

Très simple :

- créez un cube que vous allez placer n’importe ou dans votre scène. Pour vu qu’on ne le vois pas et ne gêne pas votre rendu. Vous le mettez derrière la camera par exemple.

On va appeler ce cube : dummy.

- allez dans l’attribut editor de votre cube (pas le shape, le noeu de transform qui doit s’appeler : dummy).

- dans la partie Mental Ray —-> Geometry shader, cochez : Enable geometry shader.

- dans geometry shader, mettez un shader « buffer_api » qui se trouve dans les shaders « geometry » de Mental Ray.

Voilà ! Plus besoin de prendre du temps à passer par l’interface de base de Maya pour les buffers reads (qui est bien nul et longue, il faut l’avouer).

C’est pas plus rapide la ? =)

Configurationde votre buffer_api :

- mode : ben la comme d’habitude, le mode de votre image RGB Alpha, 32 bits flottant, etc etc…

- min max buffers : la attention, il faut que vous mettez le nombre exact de buffers (comme dans le buffer_write avec un custom shader).

- les autres options : pas obligatoire. A vous de fouiller =)

————————————————————

3ème étape bis : le buffer write avec un custom shader :

Et si on utilisait non pas le buffer write intégré de Maya, mais un custom shader ?

Retirez toutes les buffers write de votre caméra.

Dans « Secondary Output Pass » —> Output shader, connecter un « buffer_write » qui se trouve dans les output shader dans l’hypershade.

powered by WordPress Multibox Plugin v1.3.5

tutorial_bufferwrite_custom

Là, les configurations sont simples.

Mettre le chemin où les images doivent être écrite, le format, le nombre de buffers .

Ici, j’ai choisi l’exr (comme d’habitude) comme vous pouvez le voir.

powered by WordPress Multibox Plugin v1.3.5

tutorial_bufferwrite_custum_exr

Faites un rendu.

powered by WordPress Multibox Plugin v1.3.5

tutrorial_imagecustum

Voilà. Normalement, vous avez le même résultat.

Mais alors pourquoi utiliser un custom shader ?

Plusieurs raisons. Déjà, comme vous pouvez le constater, c’est plus rapide à mettre en place.

Il y aussi une autre raison :

Cochez « Multichannel  » dans les options exr du shader buffer_write.

Faites un rendu.

powered by WordPress Multibox Plugin v1.3.5

tutorial_multichannel

Hey, vous vous retrouvez avec un seul fichier !

Enfait, c’est la force de l’exr. Ici, avec un seul fichier, on a toutes les pass dedans.

powered by WordPress Multibox Plugin v1.3.5

tutorial_exr_muti

A vous après d’isoler chaque buffer pour « extracter » les pass que vous voulez.

On a utilisé un custom shader pour le buffer write, mais il existe aussi des cutoms shader pour le buffer read, ainsi que d’autres shader « store » .

A vous de les trouver sur le net.

Les scènes d’exemples sont ici :

- avec le buffer write de Maya : tuto_buffer_write_maya

- avec un custom buffer write pour faire du multichannels avec l’exr : tuto_buffer_custom_write

J’espère que ce tutorial aura été clair et qu’il vous a plu. Si vous avez des questions, n’hésitez pas à les poser ici.

Toute reproduction sans mon accord est interdite.

Share on TumblrShare on TwitterShare via email

Comments

abdelkader

Salut bigbossfr le lien des scene est vide error 404..

admin

Corrigé =)

Post you comment here





Deex

Le blog de Damien BATAILLE