Deex VRay Arsenal, un petit tool qui fait gagner beaucoup de temps
Par Narann le jeudi, 7 février 2013, 00:00 - Infographie 3D - Boulot - Lien permanent
Ç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:
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).
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:
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:
- Pass, qui regroupe les Render Layer de Maya et le système de passe de VRay. Leur utilisation combinées étant fréquente.
- Quality, qui est une feature fort pratique à l'utilisation: Un slider, de 0 a 99 pour augmenter ou diminuer la qualité du rendu via une augmentation progressive de vos paramètres de rendu.
- ToolBox, qui regroupe pleins de petits outils qui font gagner pas mal de temps.
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
Ce système est extrêmement rapide pour préparer vos passes.
C'est très (très) simple:
- Vous sélectionnez un objet/groupe, vous faites Add et hop!
- Vous voulez supprimez un objet/groupe? Remove!
- Vous voulez voir les objets ayant une propriété particulière? Select!
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
- Generate off: Les objets ayant cette property ne seront pas considéré lors de la génération de l'illumination globale (pour séparer la GI entre les personnages et le décors par exemple).
- Receive off: Les objets ayant cette property ne recevront aucune illumination indirects.
Visibility
- Primary off: Les objets ayant cette property ne seront pas visibles sur les rayons primaires (ils seront donc visibles dans les reflections/refractions/GI).
- Reflection off: Les objets ayant cette property ne seront pas visibles dans les rayons de reflections (peut être pratique pour empêcher un objet complexe de se refléter si il n'apporte pas grand chose au rendu final).
- Refraction off: Les objets ayant cette property ne seront pas visibles dans les rayons de refractions.
Shadows
Cast off: Les objets ayant cette property ne projetteront pas d'ombres.
On fly control
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...
- Manual: Si vous souhaitez sortir les "contributions" uniquement pour certaines lights données, c'est ici que vous le ferez.
- Normal: Et c'est là ou ça prête pas mal à confusion: Normal ici ce n'est pas la normale au sens vecteur mais normal au sens "classique". C'est donc une passe contenant toute l'illumination direct d'une light. C'est tout. Notez que c'est la terminologie utilisé par VRay...
- Diffuse: Pass d'éclairage direct de la light ne contenant que les informations de diffusion.
- Raw: Pass contenant les informations "brut" de l'éclairage direct de la light
- Specular: Pass de spéculaire pour la light donnée.
- Automatic: Disons que si vous avez comptez de toute façon sortir toute les passes pour toutes les lights de la scène, passez directement par là. Vous pouvez également combiner le mode Automatic pour un type de passe avec le mode Manual pour un autre type de passe.
- Specular: Sort toute les pass de spéculaire pour toute les lights de la scène.
- Raw: Idem que Specular mais pour le Raw.
- Diffuse: Idem mais pour la Diffuse.
- Normal: Idem mais pour la passe Normal.
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:
- VrayMtl Lambert: Cocher cette case transformera, à la volé, au moment du rendu, tout les matériaux de votre scène en VrayMtl Lambert, ce qui est très pratique pour vérifier son éclairage globale. La ou cette option se distingue d'un RenderLayer avec un material override, c'est que les materiaux conserveront leur displacement/bump/normalmap si ils en ont.
- Material ID on fly: Cocher cette case génèrera des Material ID à la volé au moment du rendu en utilisant les noms des matériaux (sans les namespaces) comme "référence". Ainsi, vous obtiendrez toujours la même couleur de Material ID tant votre material porte le même nom. Bien entendu, il faut avoir créé un Render Element de type Material ID. Notez également que cette feature est compatible avec les VRayblendMaterial: Si vous avez blendé plusieurs materials (avec des masques) dans un VRayblendMaterial, chaque material aura son ID propre dans la pass.
- Proxy Objects ID on fly: Même principe que pour les Material ID mais cette fois dans le cas des proxy VRay.
Matte control
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:
En gros:
- Vous faites Create new.
- Vous donnez un nom à votre passe de mask (Mask name). Si vous ne donnez pas de noms à votre passe de masque elle sera supprimée. :mitraille:
- Vous sélectionnez un/des objets/groupes.
- Vous faites add in red (ou green/blue).
- Vous rendez et vous avez votre passe de mask.
- Vous pouvez recommencer la manœuvre pour une autre passe.
C'est tellement simple que je ne vois même pas quoi ajouter! :redface:
Ah si! Ce systeme outrepasse une limitation de VRay. Exemple:
- Vous avez un objet_A avec un ID 1.
- Un objet_B avec un ID 2.
- Ces deux objets sont dans un group avec ID 3.
- Créez un Render Element Multi Matte et passez le Red object ID à 3.
- Rendez et regardez votre passe de multimatte.
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
Cet onglet rassemble juste les principales options de VRay pour les activer/désactiver rapidement.
L'onglet Quality
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:
- deeX_interior
- deeX_exterior
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
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
- Add on: Permet d'appliquer les attributs de Material ID aux materials sélectionnés/tout les materials/tout les shading engine.
- Set on: Applique un ID unique aux attributs de Material ID des materials sélectionnés/tout les materials/tout les shading engine. Ce numéro est généré aléatoirement en se servant du nom du material. Cette méthode est à double tranchant: Si vous changez le nom d'un material puis que vous recliquez sur Set on, la couleur de son ID changera également. Notez que la checkbox Material ID on fly de l'onglet Pass/On fly control fait la même chose directement à la volée. :)
- Remove on: Supprime les attributs de Material ID des materials sélectionnés/tous les materials/tous les shading engine.
Dernier point, pour que tout cela fonctionne, n'oubliez pas de créer une pass (un Render Element) de Material ID:
Object ID
Même principe que pour les Material ID mais au niveau des objets.
Chaque objet aura un identifiant différent.
Une fois de plus, n'oubliez pas de créer le Render Element Object ID:
Material control
Cette partie vous permet d'appliquer quelques valeurs clefs à tous les materials/aux material sélectionnés en un seul clique.
- Reflection/Refraction Subdivs
- Reflection/Refraction Interpolation
- Reflection/Refraction Max depth
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:).
- Le temps gagné à préparer ses passes est monstrueux et vous évite d'avoir à passer par toutes les fenêtres de VRay.
- Le fait de pouvoir contrôler les objets en fonction de leurs properties et pas l'inverse est tout ce qu'il a de plus simple.
- La gestion des Mattes RGB est aussi très simple.
- Des Material/Object ID on the fly qui marchent en quelques cliques... Il ne reste aucun prétexte pour ne pas les utiliser.
- La VRayMtlLambert on the fly meriterai une section à elle toute seule tant elle peut être pratique.
- Le Quality slider va loin avec les preset et les offsets.
Ce qu'il manque:
- Pouvoir exporter son "set de passe" dans un fichier texte pour l'importer plus tard (c'est prevu!).
- Encore plus d'options On the fly (Je suis fan du principe).
- Une API Python aussi simple à utiliser que les boutons. Genre arsenal.pass.propertiesControl.blackHole.add("myObject"). Mais à part moi je ne suis pas sûr que ça serve à grand monde! :trollface:
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!
Commentaires
Salut Dorian!
Petite question, les data / settings sont persistantes dans la scene? Genre tu reouvres, le tool a garde les infos?
Sinon je trouve ca un peu cher, pour 30 euros de plus il n'y a pas si longtemps, on pouvait acheter Octane Render... :)
Python node locke aussi :|
Thomas
Hello Thomas! :)
Oui, les datas sont en fait des connections et des attributs d'un node Arsenal (le seul) qui est stocké dans ta scène. Donc tu ne perd rien à l'ouverture. :)
Pour le prix, ça dépend vraiment de l'utilisateur pour le coup. Si tu est un adepte de VRay et aimerai profiter des features proposées sans te prendre la tête, (personnellement) je ne trouve pas ça si cher. Damein va aussi continuer à ajouter des features (import/export des sets de passe, je croise les doigts pour les users attribute aussi). Si ces ajouts reste aussi simple à utiliser que ce qui est déja là le gain de temps de vraiment devenir important.
Pour le "Python node lock" je n'ai pas bien compris. ^^'
C'est le fait que ce soit distribué sous forme de .pyc ou que ce seule la licence Node Lock soit dispo?
Damien devrait bientôt proposer des licences flottantes.
Peut être qu'un Bundle a 5 et/ou 10 licences flottantes serait intéressant aussi plutôt que d'être directement sur du 30.
A bientôt!
Dorian