PROJET AUTOBLOG


blog.fevrierdorian.com

source: blog.fevrierdorian.com

⇐ retour index

Deex VRay Arsenal, un petit tool qui fait gagner beaucoup de temps

jeudi 7 février 2013 à 00:00

VRay_Arsenal_tn.pngÇa fait un moment que j’entends Damien (alias Deex) parler de son tool. J'ai même eu l'occasion d'être sur la même prod que lui quand il réfléchissait aux grandes lignes. Quand il m'a dit que son outil était enfin fini, je n'ai pas pu m’empêcher de lui demander une licence pour tester ça. :sourit:

L'idée de ce billet est de présenter les principales features d'Arsenal. Vous allez voir que malgré une approche qui peut sembler un peu trop user friendly, cette outil est un vrai outil de production qui facilite pas mal le boulot.

C'est 'tipar mon canard! :sauteJoie:

Note: Avant de commencer je vous invite à cocher la case Use V-Ray VFB dans l'onglet VRay Common des Render Settings:

VRay_Arsenal_012_useVRay_frameBuffer.png

Ceci vous donnera accès à une sorte de Render View spécial VRay qui permet (en plus de pas mal de choses) de visualiser directement les passes (en haut à gauche).

VRay_Arsenal_011_frameBuffer.png

VRay_Arsenal_sampleImage.png

Mon image de test: Une HDR de sIBL, et beaucoup de talent! :smileFou:

L'installation

J'ai trouvé l'installation un peu rebutante. Ce n'est pas dans ce qu'on à l'habitude de voir avec la plupart des scripts.

En premier lieu, il faut installer PyQt ce qui, en temps normal, n'est pas une mince affaire (en particulier sous Windows). Heureusement, un installeur "pas prise de tête" est proposé sur le site. C'est bien senti.

L'installation du tool à proprement parler est, quant à elle, pensé pour simplifier l’intégration en prod (via des variables d'environnements) mais peut se révéler assez rebutante pour les gens n'ayant pas forcément l'habitude de jouer avec leur Maya.env. D'autant que je suis sur qu'il aurait été possible de faire une installation "à l'ancienne" (les scripts dans le dossier script, les shelves dans le dossier shelves, etc...), c'est juste que ce n'est pas forcément propre et qu'à chaque MAJ ça aurait été un peu plus compliqué alors qu'avec le système actuel, il suffit de remplacer un seul dossier. :laClasse:

La fenêtre de base

Quand on ouvre, on a ça:

VRay_Arsenal_001.png

Nous passerons les onglets en revu plus bas.

Il y a un bouton épingler. Une fois coche, Arsenal restera au devant de vos fenêtres. Sinon, il se comporte comme une fenêtre Maya.

Il y a aussi le bouton close en bas dont je ne vous ferais pas l'affront de vous expliquer l'utilité. :reflexionIntense:

Il y a trois onglets que nous allons voir dans l'ordre:

L'onglet Pass

Sur la partie haute vous avez, tout bêtement, les Render Layer de Maya (injustement nommé "Pass" dans les trois boutons de gauche). Cliquez sur un de ces Render Layer vous le sélectionne de la même façon que Maya. C'est juste pour gagner du temps. Pour des rendus ne nécessitant pas de passes complexes vous ne devriez pas en avoir besoins.

Notez que vous pouvez faire un Set global to on sur vos RenderLayers directement depuis cette fenêtre (voir doc Maya).

Rentrons maintenant dans la partie la plus intéressante. :popcorn:

Properties control

VRay_Arsenal_onglet_propertiesControl.png

Ce système est extrêmement rapide pour préparer vos passes.

C'est très (très) simple:

C'est à la fois limpide mais aussi beaucoup plus rapide que la méthode "conventionnelle" visant à gérer ces propriétés de manière granuleuse sur les groupes/objets. Ici, le système est inversé: Vous gérez les objets en fonction de leurs propriété.

Je trouve ça beaucoup plus clair. :redface:

Voici une explication rapide des différentes properties. Pour plus de détails, se référer à la documentation officielle.

Black hole

Les objets ayant cette property ne seront pas affiché dans le rendu (ils seront noir) et leur alpha sera vide.

Receive shadow: Les objet Black hole ayant cette property recevront les ombres et les répercuteront dans leurs alphas (pour un sol par exemple).

GI
Visibility
Shadows

Cast off: Les objets ayant cette property ne projetteront pas d'ombres.

On fly control

VRay_Arsenal_002_onFlyControl.png

Je ne suis pas adepte des terminologies utilisées dans cet onglet. Je vais donc essayer d’être clair. :gne:

Light select

Ici on cherchera à sortir des passes par light ou pour toutes les lights. Ces pass seront nommé sous la forme nomDeMaLightShape_normal, nomDeMaLightShape_diffuse, etc...

Arsenal settings

Ici on a mes options préférées. Même si on ne peut pas deviner à quoi elles servent au premier abord. :siffle:

Matte control

VRay_Arsenal_003_matteControl.png

Celui là aussi je l'aime bien tellement il est simple! :dentcasse:

Le principe est de générer des passes de "masque". Vous savez? Les masques RGB:

VRay_Arsenal_013_passMask.png

En gros:

C'est tellement simple que je ne vois même pas quoi ajouter! :redface:

Ah si! Ce systeme outrepasse une limitation de VRay. Exemple:

Elle est noire. Pourquoi? Parce que VRay ayant remarqué que les objets dans le groupe ont un object ID, il ne les affiche pas dans la passe.

Avec le systeme de Arsenal, si vous demandez à ce que le groupe soit rouge, il sera rouge!

FastControl

VRay_Arsenal_004_fastControl.png

Cet onglet rassemble juste les principales options de VRay pour les activer/désactiver rapidement.

L'onglet Quality

VRay_Arsenal_005_qualityTab.png

Un gros slider qui change de couleur! :D

Ici on est clairement dans la partie qui plaira au personnes qui ne sont pas forcément des as du rendu. Et pourtant, vous allez voir qu'il peut très largement faire de l’œil à des personnes ayant l'habitude de modifier leurs paramètres à la main. :dentcasse:

La première chose à faire pour activer tout ça est de cliquer sur Save actual settings qui se chargera de mettre de coté vos paramètres actuels, puis sur Optimize pour mettre en place les différentes expressions. A partir de ce moment là, vous pouvez commencer à modifier le slider principale pour faire varier la qualité du rendu.

Preset Type

Ici, on parle plus de configuration du slider que de Preset. Il y a deux Preset Type:

Ces deux choix représentent la majorité des cas de lighting.

Les presets en question sont de simple fichier texte que vous pouvez retrouver dans:

C:\Users\Narann\Documents\maya\deeXVRayArsenal\2013\win64\scripts\presets

Ces fichiers, à la syntaxe relativement simple, permettent de piloter les ranges (min et max) des attributs de VRay qui seront ensuite modifié par votre slider. Si je ne dis pas de bêtises, la relation entre le slider et les paramètres qu'il drive est logarithmique pour éviter que les paramètres n'explosent vos temps de rendus quand vous commencer à vous monter haut dans le slider. :grenadelauncher:

Si la possibilité de créer ces propres presets n’intéressera surement pas les lighters du dimanche occasionnels, le fait de pouvoir mettre sois même ces paramètres min et max à piloter peut être très intéressant pour les lighters à poil dûr qui ont leurs petites habitudes. :papi:

D’ailleurs, il aurait presque fallu que cette outil soit indépendant de VRay pour pouvoir, par exemple, piloter Mental Ray. :baffed:

Si vous souhaitez empêcher la modification d'un attribut par Arsenal il suffit de le locker.

Offset quality

On a ici une très bonne initiative. L'idée étant d'appliquer un offset au slider pour certains paramètres.

Par exemple, supposons que mon slider soit à 50. Je trouve que le sampling est un peu sensible et augmente les temps de rendu trop rapidement. Pourtant, je suis satisfait du reste.... Qu'à cela ne tienne, il me suffit de cocher la case Image sampler puis de taper -10 pour que les paramètres du sampler s'applique comme si mon slider globale était à 40! :youplaBoum:

Optimize material(s)

Encore une initiative intéressante: Vous déterminer deux valeurs extrêmes de subdivision (sampling), cliquez sur le bouton Optimize material(s) et Arsenal va déterminer la valeur à utiliser en fonction de la valeur de Glossiness du material.

Attention toutefois, le système est un peu trop "bête". Si une texture est connecté au paramètre de glossiness, la valeur subdiv est déterminé en fonction de la valeur de l'attribut, même si elle ne correspond à rien en temps que tel. Une option telle que skip connected pourrait être intéressante.

Notez la checkbox à droite LayerMode. Si vous la cocher avant de cliquer sur le bouton Optimize material(s) et que vous êtes dans un RenderLayer (autre que le masterLayer), les attributs seront modifié uniquement sur le RenderLayer en cours.

Optimize light(s)

Pas sur que ce bouton soit très utile. Pour l'instant il ne fait que passer le paramètre de Subdiv des VRayLights de la scène à 5...

L'onglet ToolBox

VRay_Arsenal_006_toolBoxTab.png

Ici vous trouverez des petits outils très spécifiques.

Proxy

Les VRayProxy sont une petite merveille. On les a utilisés sur Or Noir pour faire des cycles d'animation de cheval changeant de vitesse.

Multi proxy importer

Ce bouton permet d'importer plusieurs VRayProxy car, aussi surprenant que cela puisse paraitre, il n'est pas possible de faire cela en standard...

Shader auto connect

Quand vous exportez un VRayProxy, des "slots d'assignations" y sont créés. Le principe est de pouvoir conserver, à l’intérieur du proxy, les assignations de vos shaders pour les réassigner.

Une fois le VRayProxy réimporté dans votre scène, vous pouvez lui appliquer un VRayMeshMaterial (pour info, il est déjà créé au moment de l'import). Ce material affichera les différents slots d'assignations de votre proxy pour y connecter vos propres shaders.

Le bouton Shader auto connect permet de reconnecter automatiquement les shaders en fonction de leur noms, ce qui évite d'avoir à le faire sois même. Sur des proxy ayant des dizaines voir des centaines d'assignations, c'est plutôt pratique...

Ignore namespace

Cette case permet d'ignorer les namespaces des shaders de votre scène pour les réassigner au proxys. Dans le principe, cela permet d'avoir ces shaders en référence externe (avec un namespace) sans pour autant que ça ne pose problème de les reconnecter via leur noms.

ID

Une fois de plus, ici nous avons des outils pour assigner très rapidement des ID aux matériaux et aux objets.

L’intérêt est ensuite de sortir ces ID sous forme de passe à donner à vos amis du compositing.

Material ID

VRay_Arsenal_008_materialID.png

VRay_Arsenal_014_materialID.png

Dernier point, pour que tout cela fonctionne, n'oubliez pas de créer une pass (un Render Element) de Material ID:

VRay_Arsenal_007_materialID.png

Object ID

Même principe que pour les Material ID mais au niveau des objets.

VRay_Arsenal_015_objectID.png

VRay_Arsenal_010_objectID.png

Notez la différence avec la passe de ''Material ID''.

Chaque objet aura un identifiant différent.

Une fois de plus, n'oubliez pas de créer le Render Element Object ID:

VRay_Arsenal_009_objectID.png

Material control

Cette partie vous permet d'appliquer quelques valeurs clefs à tous les materials/aux material sélectionnés en un seul clique.

Une option Trace (Reflection/Refraction) pour activer/désactiver complètement le raytracing aurait put être intéressante ici. :dentcasse:

Lights control

On peut pas faire plus simple: Appliquer une valeur de Shadow subdivs à toutes les lights/les lights sélectionnées de la scène en un clique.

Techniquement, comment ça marche?

Hahaha! La particularité de cet outil est de ne pas modifier votre scène quand vous générez les passes (Sauf les RenderLayers de Maya bien évidement), que vous faites du "On the fly" ou même du Matte.

Mais alors? Comment qu'il fait? :gne2:

Et bien il utilise une feature de VRay que je rêverai de voir généralisé sur tout les moteurs tant elle est monstrueuse en terme de possibilités: L'API Python VRay Scene Access.

Je quote la doc, c'est très clair:

The V-Ray scene access python API allows you to modify the V-Ray scene after it is translated by the V-Ray for Maya translator, and before it is rendered and/or exported to a .vrscene file. The scene access API allows you to expand the V-Ray for Maya translator by providing custom translation for constructs that are not recognized by V-Ray, or for modifying the scene before rendering without changing the original Maya scene.

Boum! Rien que ça! :sauteJoie:

En gros, ça permet de piloter le moteur avant le rendu. On peut donc imaginer des trucs de dingue comme générer une scène directement dans VRay, à la volé, sans avoir recours à un fichier vrscene. Pour ceux qui ont déjà travaillé avec Renderman, ça veut dire fini la génération des RIB bien lourd qui ne servent qu'une fois. Ici, on peut piloter VRay via du Python!

J'ai posé la question sur le forum de Nvidia ARC (ancien Mental Image) tant je trouvais ça génial mais je ne suis pas sur que ça change grand chose. :triste:

Bref, l'outil de Damien utilise ça, et c'est ce qui lui permet de conserver une scène Maya propre et de pouvoir intervenir directement au niveau de VRay avant le rendu.

Conclusion

Pour avoir testé le truc de fond en comble je peut vous assurez qu'il vaut (très) largement son prix (69€! :bravo:).

Ce qu'il manque:

Bon, je vends un peu complètement le truc mais oui: Il vaut le coup! :aupoil:

Au delà du fait que je vous invite à vous ruer sur cet outil, j'espère que si vous le possédez déjà, cette présentation/tuto vous permettra d'aller encore plus loin! :)

A bientôt!

:marioCours: