Mais voila, chez Autodesk "we think different"... En effet, chez eux, on fait mieux que la concurrence (la quoi?), on met les dernières fonctionnalités... Mais on les caches...

Dequoi?

Et oui, il existe, depuis Maya 2008 des "Production Shaders". Ces shaders on été fait pour simplifier des manipulation de node un peu hasardeuses (Ils offrent une solution tout-en-un a des problématiques souvent posé lors des productions). Vous pouvez aller lire le PDF de mental image pour plus d'informations.

Ouaa c'est vachement cool ça! Et comment qu'on les a?

C'est là qu'on rigole (une première fois) : Ils sont caché!

Hein? Caché? Mais pourquoi?

En effet, le principe est tout à fait louable : A la sortie de Maya 2008, Autodesk n'a pas eu le temps de tester parfaitement ses nodes (qui rappelons le, sont des nodes destiné à la production. Ils ne peuvent pas se permettre de mettre sortir des version instables). Ils sont donc présent (les plus curieux peuvent s'amuser avec) mais pas "officiellement supporté".

M'en fout j'ai Maya 2010!

Et c'est la qu'on re-rigole : Ils ne sont toujours pas "visibles" dans la dernière version de Maya! 8-D

...

Et oui, c'est assez rigolo mais bon, on ne va pas se laisser abattre, on peu les utiliser et je vous propose de les "décacher" et, tant qu'a faire, d'essayer le mip_motionblur qui est un motion blur 2.5d utilisant les framebuffer de mental ray pour récupérer les informations de mouvement. :D

Let's Go!

Avant de commencer je vais tout de même vous donner mes sources (j'ai pas trouvé ça tout seul vous vous en doutez bien!). C'est en effet Zap (qui travail à mental image) qui donne la manipulation complète et quelques informations. (zap's mental ray tips)

Les nodes cachés sont les suivants:

  • mip_gamma_gain
  • mip_card_opacity
  • mip_motionblur
  • mip_motion_vector
  • mip_cameramap
  • mip_matteshadow
  • mip_mirrorball
  • mip_grayball

Pour plus de renseignement sur chacun d'entre eux, je vous invite à lire le PDF que je vous ai indiqué plus haut.

Pour "afficher" les shaders dans l'Hypershade, il suffit de taper cette commande:

optionVar -iv "MIP_SHD_EXPOSE" 1;

Et de redémarrer Maya (merci Mayalounge).

Le shader qui nous intéresse est le "mip_motionblur". Pour le créer soit vous cliquez directement dessus:

mip_motionblur004.png

Soit, si il n'est pas affiché dans l'hypershade, vérifiez que Mayatomr.mll est chargé puis tapez ça:

createNode mip_motionblur;

mip_motionblur001.png

Et c'est tout! Maintenant nous avons notre nouveau shader!

mip_motionblur002.png

Avec pleins d'options dedans...

Nous n'aborderons pas les options dans ce billet (elles ne sont pas très facile à expliquer et je n'ai pas tout compris, ni trop cherché à comprendre...).

Pour le moment créez une scène basique avec motion blur (Mettez les paramètres sur le preset "Production" et activez le motion blur "Full"):

mip_motionblur003.png

Vous l'aurez compris, l'originalité est de mise... :siffle:

Scène prête, En avant les connections!

Bon, comme dis plus haut, ces shaders (bien que très pratique) ne sont pas supporté par Autodesk, il n'existe donc pas de méthode "User Friendly" pour les connecter a la camera, il faut le faire, "à la dur" (ce qui implique d'en comprendre le fonctionnement).

En effet, mip_motionblur a besoin de plusieurs framebuffer de mental ray. Et il n'existe pas de méthode simple pour créer soit même des frambuffer que ce node pourra utiliser (Si c'est possible, ça ne m'étonnerai pas, n'hésitez pas à me laisser un commentaire car je suis très intéressé).

mip_motionblur005.png

mip_motionblur006.png

Un nouvel "onglet" sera apparu dans les attributs de la camera: "Legacy Output Shaders":

mip_motionblur010.png

Si nous regardons les attributs du mip_motionblur, nous voyons qu'il nécessite d'avoir d'autres framebuffer pour pouvoir fonctionner (Extrait de la documentation):

  • blur_fb: Sets the ID of the frame buffer to be blurred. An empty string signifies the main color frame buffer. The frame buffer referenced must be a rgba color buffer and must be written by an appropriate shader.
  • depth_fb: Sets the ID of the frame buffer from which to obtain depth information. An empty string signifies the main mental ray z depth frame buffer. The frame buffer referenced must be a depth buffer and must be written by an appropriate shader.
  • motion_fb: Works identically to depth fb but for the motion vector information, and the empty string here means the default mental ray motion vector frame buffer. The frame buffer referenced must be a motion buffer and must be written by an appropriate shader.

En gros:

  • blur_fb: Le framebuffer sur lequel sera appliqué le motion blur. Si rien n'est mis ici, il sera appliqué sur le framebuffer de base. En gros, il ne faut rien mettre si on veut que notre motionblur s'applique sur l'image.
  • depth_fb: Le frambuffer de depth qui servira au calcul du motion blur. Si rien n'est mis, mental ray utilisera le depth framebuffer de base de mental ray (important ça)
  • motion_fb: Idem que depth_fb mais pour le motion framebuffer.

Donc si nous ne mettons rien ici, mental ray utilisera les framebuffer de base. Mais, le problème est que, par défaut, Mentalray pour Maya ne créé pas ces framebuffer. C'est pour ça qu'il faut cocher ses cases:

  • Depth
  • Motion Vectors

mip_motionblur007.png

Si vous rendez maintenant, vous aurez quelque chose d'un peut bizarre. En effet, il calculera l'image avec le "Full" motion blur de mental ray. Puis refloutera l'image derrière...

Encore une fois, si vous avez lu la documentation, il faut mettre le shutter open et shutter close à 0:

mip_motionblur008.png

Lancez:

mip_motionblur009.png

Ayez! On a enfin notre motion blur 2.5d de calculé. Avant que vous ne commenciez à crier de joie (perso, je l'ai fait), il me semble important d'aborder quelques petits points...

Conclusion

Avant de vous lancer corps et âme dans cette technique qui peut sembler séduisante (quand on est un utilisateur de mental ray, on est forcément frustré question motion blur...) il faut savoir que, alors que le full motion blur fonctionne dans tous les cas (entendez par là que c'est celui qui se rapproche le plus d'un motion blur physique), celui ci est très limité...

En effet, essayez de mettre un BG à votre scène, de rendre votre sphère transparente et de lancer le rendu...

mip_motionblur011.png

Voila déjà le premier gros problème: La transparence n'est pas géré, en effet, les framebuffers ne la prennent pas en compte.

Avec tout l'atiraille qu'il y a eu avec la gestion de framebuffer sur Maya 2009 on doit surement pouvoir faire un workaround mais bon, c'est sans compter le second gros point noir de ce node (qui est également le cas sur les autres nodes "production"):

Autodesk n'assure pas le support dessus... Ce qui veut plus clairement dire: "Dès que tu tente des petites manips un peu complexes, tu peut être sur que ça plante...".

En gros, un node qu'il est difficile de conseiller dans le cas d'un pipeline. Mais qui peut s'avérer bien pratique dans le cas de travaux perso ou en pub. A chacun de voir mais le considérer comme une valeur sur c'est prendre le risque d'avoir des (mauvaises) surprises (qui n'apparaitront bien entendu qu'au moment ou on en a le moins besoin, loi de Murphy oblige...).

Sur ce, j'espère que mon petit tuto vous à donné envis de vous plonger dans ses nodes. N'hésitez pas à laisser un commentaire si vous rencontrez des problèmes. :mechantCrash:

A bientôt!

Dorian

EDIT 13 Février 2012

J'ai titillé un peu le motionblur 2.5d de mental ray et fait une comparaison 2.5d/3d. :titille:

Il y a pas photo, la différence est énorme! Je vous invite a ouvrir les images full résolution (1024 png) et de comparer par vous même.

MB_2d.png

MB_3d.png

Bien entendu, le temps de rendu n'a, lui aussi, rien a voir! :baffed: