mip_motionblur: Quand Mental Ray fait du motion blur en 2.5d
Par Narann le jeudi, 20 août 2009, 22:04 - Infographie 3D - Boulot - Lien permanent
Chaque nouvelle version d'un soft 3D est toujours l'occasion de se gargariser (jaune quand même) de la politique des éditeurs d'Autodesk. Tout infographiste 3D c'est déjà retrouvé dans une situation ou il est face à une personne utilisant un soft X qui se moque joyeusement de lui parce que le soft Y (qui se trouve être votre soft de prédilection) n'a pas la dernière version du "trucmuche-machin-super-chouette-et-super-rapide". En général, on se contente de baisser les yeux en pestant contre l'éditeur de son logiciel et on décide d'attendre patiemment (et avec espoirs) la sortie d'une nouvelle version qui intègrera enfin la fonctionnalité qui va révolutionner sa façon de travailler.
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:
Soit, si il n'est pas affiché dans l'hypershade, vérifiez que Mayatomr.mll est chargé puis tapez ça:
createNode mip_motionblur;
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"):
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é).
Un nouvel "onglet" sera apparu dans les attributs de la camera: "Legacy Output Shaders":
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
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:
Lancez:
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...
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.
Bien entendu, le temps de rendu n'a, lui aussi, rien a voir! :baffed:
Commentaires
Salut,
Et merci pour ton fabuleux blog qui m'apport (en ce moment) beaucoup chaques jours.
Aurrais-tu un peu de temps pour nous parler de la version
2011 qui apport de nouveau noeud je croix ?
merci
Merci pour le compliment. :hehe:
Concernant le rendu de la version 2011, il n'y a, à ma connaissance, que deux nouveaux nodes:
- mia_photometric_light
- mia_ciesky
Si il y en a d'autres n'hésite pas à me le dire! :)
Le second n'a pas beaucoup d'intérêt. La première phrase de la doc résume assez bien le truc (traduction):
Le modèle CIE sky est un modèle standard utilisé en analyse d'éclairage. C'est un modèle en niveau de gris. Il n'est donc pas adapté à la fabrication des images de qualité de production, mais il a l'avantage de suivre une distribution de luminance normalisée (connu).
Le premier est en effet très intéressant. Ça peut être pertinent de faire un billet dessus. En gros, ce node permet de définir l'intensité des photons en fonction de l'intensité lumineuse (ce qui semble logique mais jusqu'à présent, dans mental ray, les deux étaient divisé, ce qui est pas très friendly).
Ça permet de se rapprocher encore plus d'un éclairage physiquement correct car les photons sont projeté avec une intensité cohérente vis à vis de la light. En revanches peut d'options sur les ombres et le dégradé d'intensité lumineuse, je dirait que ça facilite surtout l'utilisation des profils IES: On plug un profil dessus, donne une intensité et ils s'occupe du reste.
Pour tout te dire, j'ai beaucoup de billets qui sont commencés (certains ne verrons peut être jamais je jour). Je prend note du node mia_photometric_light. Ça ne devrait pas être trop long de faire un billet dessus.
Mais ça ne sera pas pour tout de suite! :nannan: