PROJET AUTOBLOG


blog.fevrierdorian.com

source: blog.fevrierdorian.com

⇐ retour index

Combine importons with Final Gather (English Translation)

dimanche 10 février 2013 à 20:40

fg_render_002_29sec_tn.pngThis is an english translation of a ticket I wrote few days ago.

Have you ever had a lighting where mister Final Gather give you a scene with a whole dirty flicking? The only solution is often to increase render settings and so, render times (when it is still possible ^^') to hide the misery.

And yet, sometimes, increase all settings like a pig is not enough, simply because Final Gather can not handle your case.

A solution to drastically solve (but not always) this problem exists: Importons.

Importons are more than a simple Final Gather variation. They fit in a significant change in the way mental ray will deal with global illumination and sampling in general.

First step, get a correct Final Gather.

The question on how to configure the Final Gather is not straightforward as the results can deeply change depending on the scene. I'm going to assume we don't want a perfect Final Gather but an "effect" of Final Gather (indirect illumination in one bounce). I invite you to look at the documentation.

Accuracy

It's the number of samples send through the scene for each point of Final Gather to determine the value of the illumination at this point. If there is not enough, the actual point will not be stable. We can set it to 200-500 for most cases, but sometime you need to go on values close to 1000 in really extreme cases.

If you have a high point density value, accuracy car drastically increase render times.

Point density

This is a factor of the number of Final Gather points shoot from the camera. A value of 2.0 doubles the number of Final Gather points to compute, and so, double the Final Gather generation time.

This is the first parameter that I invite you to increase before boost the accuracy. Keep in mind that accuracy has an exponent effect. Do not change one without taking care the value of the other. A value of 10 on a production render with flat surfaces of uniform color is possible. With textures, variations can be less visible and you can almost stay on the little values like 2.0-5.0.

Point interpolation

This is the number of Final Gather points that will be interpolated to return a value of indirect illumination to the projected sample. This value drastically changes the visual appearance of Final Gather. The more interpolation is, the more Final Gather is smooth but more it flick in animation if it's not bake. If your scene has high contrasted lighting, I suggest you go down this value to make the flicking generally less visible (more granular). We can put 1 if needed.

Note that you can increase this value at the same time as point density, because the more you have points, the more you can interpolate and keep flicking invisible.

For the rest...

I do the following things:

Why all of this to zero? Because beyond to increase rendering time and potential artifacts, one diffuse bounce is enough to create a convincing "effect" of indirect illumination.

I will not spend much time on this, it was mainly a reminder. Let's talk about Importons! :hehe:

What importons are?

I could spend a lot of time trying to explain what the importons are but I think the official documentation is very clear. Just read it! :RTFM:

Basically, you guessed it, mental ray "shoot" particles from camera that bounces in the scene and determines which areas of the scene have "visual" importance in the final image. Therefore, mental ray is able to "know" which areas of the scene will be important to sample and forget the others. Until now, Final Gather was very silly, but with the importons, it is much less. :jdicajdirien:

Autodesk, again and again and...

Well, I starts to get bored to slug them all the time but you will see that, once again, we fight against Maya to run the thing... For an unknown reason, Autodesk has decided that if the user tick Final Gather, he had no interest to tick Importons (neither Irradiance Particles). This option becomes grayed out. Yes, that's stupid... I suppose choice has been made one day, without paid to much attention to the documentation and has never been change since (are they only aware of?). So, we will not speak about this too much, I invite you to use my tool enjoyMentalRayStringOptions to go through Maya's limitations.

Insofar tick Final Gather disables importons, you need to tick Final Gather in Render Settings THEN Importons from my interface... Reverse would disables Importons...

Notice that each time you restart Render Settings window, Final Gather will disable Importons... So keep it open! (Yes yes, I know... :pasClasse: )

There is also a tool that I have not tested but who aim to fully integrate with Maya and should solve this problem. It is shown here and the page of the script is here.

And the tiny tutorial!

Once you've understand the above part, you will see it's quite easy! :D

fg_001.png

DIM Tick FG!

fg_002.png

DAM Tick importons!

DOOM Launch the render! :grenadelauncher:

fg_render_001_27sec.png

Before... (27sec)

fg_render_002_29sec.png

After... (29sec)

There is a clear improvement in artifacts on the walls. Indeed, mental ray shoot it Final Gather points taking into account the importance (calculated at the beginning of the render) of these points in the final image.

I also invite you to look at the log in Progress mode to ensure Importons are well shooted through the camera

fg_003.png

fg_004.png

Importons are very fast to shoot through camera so don't hesitate to use them! :banaeyouhou:

Conclusion

I hope this little explanations will help you to improve your renders with Final Gather. :sourit:

See you!

:marioCours:

Combiner les importons avec le Final Gather

dimanche 10 février 2013 à 19:36

fg_render_002_29sec_tn.pngNe vous est il jamais arrivé d'avoir un éclairage un peu vicieux ou monsieur Final Gather vous propose un bloblotage du pire effet? La seule solution étant souvent de monter les temps de rendu (quand c'est encore possible ^^') pour cacher la misère.

Et encore, parfois, monter tous les paramètres comme un goret n'est pas suffisant, tout simplement parce que le Final Gather ne peut pas gérer ce cas.

Depuis peu, une solution permettant de régler drastiquement (mais pas toujours) ce soucis a été mise au point: C'est les importons.

L'utilisation des importons est plus large qu'une simple variante du Final Gather. Ils s'inscrivent comme une évolution importante (c'est le cas de le dire) de l'illumination globale de mental ray.

Dans un premier temps, configurer un Final Gather correct.

La question sur comment configurer le Final Gather n'est pas simple tant le résultat peut être variable suivant la scène. Je vais partir du principe qu'on ne souhaite pas un Final Gather parfait mais un "effet" de Final Gather (une illumination indirect sur un seul rebond). Je vous invite à regarder la doc.

L'accuracy

C'est le nombre de sample envoyé dans la scène PAR point de Final Gather pour déterminer la valeur de l'illumination en ce point. Si il n'y en a pas assez, le point en question ne sera pas stable. On peu le mettre à 200-500 pour la plupart des cas mais on est parfois obliger de monter sur des valeurs proches de 1000 sur des cas vraiment extrême.

Si vous avez une valeur de point density élevé, l'accuracy peut drastiquement augmenter le temps de rendu.

Point density

C'est un facteur du nombre de point de Final Gather shoote depuis la camera. Une valeur de 2.0 double le nombre de point de Final Gather à calculer et donc, le temps de génération du Final Gather.

C'est le premier paramètre que je vous invite à augmenter avant de booster l'accuracy. Gardez à l'esprit que l'accuracy fait effet d'exposant. Ne faites pas varier l'un sans prendre en compte la valeur de l'autre. Une valeur de 10 sur un rendu de prod avec des surfaces de couleur uniforme est envisageable. Avec des textures, les variations peuvent ne pas sauter au yeux et on peu pratiquement rester sur du 2.0-5.0.

Point interpolation

C'est le nombre de point de Final Gather qui seront interpolés pour renvoyer une valeur d'illumination indirect au sample qui le demande. Cette valeur change drastiquement l'allure visuelle du Final Gather. Plus il y a d'interpolation, plus c'est doux mais aussi plus ça flick en cas d'animation si le Final Gather n'est pas baké. Si votre scène a un éclairage contrasté, je vous conseille de descendre cette valeur pour rendre le bloblotage général moins visible (plus granuleux disons) on peut tout à fait la mettre à 1.

Notez que vous pouvez augmenter cette valeur en parallèle de votre point density, car plus vous avez de point, plus vous pouvez les interpoler sans que le flicking ne soit trop visible.

Le reste

En vrac je fait les choses suivantes:

Pourquoi tout ça à zéro? Parce qu'au delà d'augmenter les temps de rendu et les potentiels artefacts, un seul diffuse bounce suffit à créer un "effet" d'illumination indirect convaincant.

Je ne vais pas développer, c’était principalement un rappel. Passons au Importons! :hehe:

Les importons c'est quoi?

Je pourrais passer pas mal de temps à tenter d'expliquer ce que sont les importons mais je trouve que la documentation officielle explique cela très clairement. Je vous propose une traduction: Les importons sont des "particules virtuelles". Sur certains aspects, ils sont similaire aux photons: Ils rebondissent dans la scène. Il y a toutefois des différences significatives: Contrairement aux photons, les importons ne distribuent pas d’énergie. Au lieu de cela, ils contiennent une couleur décrivant avec quel facteur une illumination à un point donné contribuerait à l'image finale. De ce fait, ils fournissent des information au moteur pour l'aider gérer ses calculs de manière à obtenir une image d'une meilleur qualité visuelle tout en diminuant les ressources nécessaires.

Contrairement aux photons, les importons sont émis depuis la camera et rebondissent vers les lights. C'est le fonctionnement inverse des photons. Cela dit, le fonctionnement interne des lights fait qu'il est possible d'appliquer un photon shader aux importons. Pour des raisons de simplicité, mental ray n'introduit pas de nouveau type de shader mais permet d'utiliser les photons shaders pour les importons.

Les importons servent de mécanisme supplémentaire qui améliore la qualité et les performances du rendu. Il fait office de mécanisme principale pour driver la qualité des irradiance particles. Les importons peuvent également êtres utilisé pour améliorer la qualité des photon maps d'illumination globale. Ils permettent de réduire drastiquement la taille (et donc, la vitesse de consultation) des photon map en procédant à un merging adaptatif déterminé via les importons. Un tel mécanisme adaptatif est supérieur au merging fixe déjà existant.

Si ils sont activés, les importons sont shootés avant que la photon map ne soit créé. Ils sont utilisés durant la creation de la photon map d'illumination globale. Comme ils ne sont pas d'utilisation autre que la recherche des photons pertinents, les importons sont jetés une fois que la photon map est créée.

L'importons map est contrôlé par les options de rendu de la scène. Certaines limitations sont connus.

En gros, vous l'avez compris, on "shoot" des particules puis la camera qu'on fait rebondir dans la scène et on détermine quelles sont les zones de la scène qui on de l'importance "visuelle" dans l'image final. De ce fait, on est capable de savoir quelle sont les zones de la scène qu'il va être important de sampler/"finalgatheurer" et on oublie les autres. Le Final Gather était jusqu'à présent très bête, mais avec les importons, il l'est beaucoup moins. :jdicajdirien:

Autodesk, encore et toujours

Bon, ça commence à me saouler de leur taper dessus mais vous allez voir qu'une fois encore on bataille contre son soft pour faire marcher le truc... Pour une raison qui m’échappe totalement, Autodesk a décidé que si l'utilisateur cochait Final Gather, il n'avait pas d’intérêt à cocher Importons (ni Irradiance Particles). L'option devient donc grisée. Oui, c'est stupide. Le choix a due être fait un jour, sans trop lire la documentation et n'a jamais été changé depuis (sont ils seulement au courant?). Bref, on ne va pas s’éterniser, je vous invite très fortement à télécharger mon tool enjoyMentalRayStringOptions pour pouvoir outrepasser les limitations imposées par Maya.

Dans la mesure ou cocher Final Gather désactive les importons, il faut cocher Final Gather depuis les Render Settings de Maya PUIS Importons depuis mon interface... L'inverse désactiverait les Importons.

Notez qu'a chaque fois que vous relancez la fenêtre Render Settings, le Final Gather désactive les importons... Gardez la donc ouverte! (Oui oui, je sais... :pasClasse: )

Il existe aussi un tool que je n’ai pas teste mais qui se veut complètement intégré à Maya. Il est présenté ici et la page du script est ici.

Et le petit tuto!

Une fois que vous avez compris la partie ci dessus, vous allez voir que c'est très (très) rapide! :D

fg_001.png

PIF Cocher le FG!

fg_002.png

PAF cocher les importons!

BOUM Lancez le rendu! :grenadelauncher:

fg_render_001_27sec.png

Avant... (27sec)

fg_render_002_29sec.png

Après... (29sec)

On constate une nette amélioration au niveau des artefacts sur les murs. En effet, mental ray a projeté ses Final Gathers Points en prenant en compte l'importance (calculé au début du rendu) de ces points dans l'image finale.

Je vous invite aussi à regarder le log en mode Progess pour vous assurer que les Importons sont bien shoote depuis la camera.

fg_003.png

fg_004.png

Conclusion

J'espère que ces petites explications vous aiderons à améliorer vos rendu en Final Gather. :sourit:

A bientôt!

:marioCours:

Déplacer récursivement un fichier vers un emplacement qui n'existe pas (encore)

vendredi 8 février 2013 à 10:37

Python_logo_150.pngC'est rien du tout mais à chaque fois que je dois déplacer un fichier vers un dossier qui n'existe pas je me retape cette fonction à la mano avec les désagrément que peut engendrer l'utilisation des os.mkdir et os.rename. :casseTeteMur:

Comme ce genre de fonction peut intéresser des gens je la met ici pour en faire profiter tout le monde (afin de participer activement et agrandir cette intelligence collective qu'est l'internet... Pourquoi je dis ça? Euh... Et bien en fait j'essais de grapiller quelques lignes sinon le bloc du code se place mal... :seSentCon: )

Vous allez voir que c'est assez simple et facilement modifiable.

def recursivelyMoveFile(srcFile, dstFile) :
 
	curFolderPath = os.path.sep	# get the os separator. "/" on linux.
 
	# we regenerate the folder path we want to create the file in and check, at every step the folder exists
	for folder in os.path.dirname(dstFile).split(os.path.sep) :
 
		curFolderPath = os.path.join(curFolderPath, folder)
 
		if not os.path.isdir(curFolderPath) :
 
			os.mkdir(curFolderPath)
 
	os.rename(srcFile, dstFile)

Vous voyez? Rien de bien sorcier. :sourit:

Notez que la fonction ne vérifie rien du tout. Soyez donc vigilant avec le os.rename.

Bon... Comme je suis gentil je vous propose une fonction blindé anti-pythonic pour le coup (pour les copieurs/colleurs foux qui ne prennent pas le temps de lire :aupoil: )

def recursivelyMoveFile(srcFile, dstFile) :
 
	if not os.path.isfile(srcFile) :
		raise Exception("srcFile is not a file -> %s", srcFile)
 
	if os.path.isfile(dstFile) :
		raise Exception("dstFile already exist -> %s", dstFile)
 
 
	curFolderPath = os.path.sep	# get the os separator. "/" on linux.
 
	# we regenerate the folder path we want to create the file in and check, at every step the folder exists
	for folder in os.path.dirname(dstFile).split(os.path.sep) :
 
		curFolderPath = os.path.join(curFolderPath, folder)
 
		if not os.path.isdir(curFolderPath) :
 
			os.mkdir(curFolderPath)
 
	os.rename(srcFile, dstFile)

Codez bien! (Et vite surtout! :gniarkgniark: )

Deex VRay Arsenal, a small tool that saves a lot of time (English Traduction)

jeudi 7 février 2013 à 10:03

VRay_Arsenal_tn.pngIt's been a while since I heard Damien (aka Deex) talk about his tool. I even had the opportunity to be on the same production when he thought the main line. When he told me that his tool was finally done, I could not help but ask him a license to test it out. :sourit:

The idea of this post is to present the main features of Arsenal. You will see that despite an approach that may seem a little too user friendly, this tool is a true production tool that make the job quite easier.

Let's go! :sauteJoie:

Notice: Before we start, I invite you to check Use V-Ray VFB in the VRay Common tab of the Render Settings panel:

VRay_Arsenal_012_useVRay_frameBuffer.png

This will give you access to a kind of special VRay Render View that allows you (in addition to a lot of things) to directly visualize passes (top left).

VRay_Arsenal_011_frameBuffer.png

VRay_Arsenal_sampleImage.png

My test imaget: A HDR from sIBL, and a lot of talent! :smileFou:

Installation

I thought installation was "special" in some part. This is not what we are used to see in common scripts.

First, you must install PyQt which most of the time is not an easy task (especially on Windows). Fortunately, an "easy" installer is available on the website. It's pretty cool!

The tool installation has been, designed to simplify the production integration (using environment variables), but can be quite daunting for people who are not necessarily used to play with their Maya.env file. Especially since I'm sure he would have been possible to have a "old school" install (scripts in the script folder, the shelves in the shelves folder, etc ... ), but this wouldn't have been so clean and it would have been a bit more complicated to deal with every update then with the current way, you just need to replace one folder. :laClasse:

The main window

When you launch it, you've got this:

VRay_Arsenal_001.png

We will talk about tabs bellow.

There is a spin button. Once ticked, Arsenal will "stay at the top". Else, it behave like a Maya window.

There also is a close button at the bottom I would not insult you explain the purpose. :reflexionIntense:

There is three tabs we will see in the order:

L'onglet Pass

On the top part, it's just Maya Render Layer (unjustly named "Pass" in the three buttons on the left). Click on one of these Render Layer select it the same way Maya does. It's just a time saver. For renderers that don't need complex passes you should not need them.

Notice you can do a Set global to on directly on your RenderLayers from this window (see the Maya doc).

Let's go now through the most interesting part. :popcorn:

Properties control

VRay_Arsenal_onglet_propertiesControl.png

This system is extremly fast to prepare your passes.

It's quite (quite) simple:

It's at once clear and also much faster than the "conventional" method aimed to manage these properties in grainy way on the groups/objects. Here, the system is reversed: You handle objects based on their property.

I find it much clearer. :redface:

Here is an quick explaination of the differentes propertties. For more details, refer to the official documentation.

Black hole

Objects having this property will not be shown in the render (their will be black) and their alpha will be empty.

Receive shadow: Black hole objects having this property will recieve shadows and store it in their alpha (example: a ground).

GI
Visibility
Shadows

Cast off: Les objets ayant cette property ne projetteront pas d'ombres. Cast off: Object with this property will not project shadows.

On fly control

VRay_Arsenal_002_onFlyControl.png

I'm not a big fan of terminologies used in this tab (even if it is VRay one). I'll try to be clear. :gne:

Light select

Here we will try to render passes by light or for every lights. This passes will be named as nameOfYourLightShape_normal, nameOfYourLightShape_diffuse, etc...

Arsenal settings

Here are my favorite options. Even if you can't really guess what they are at first. :siffle:

Matte control

VRay_Arsenal_003_matteControl.png

This one I also love it as it's simple! :dentcasse:

Principe is to generate "mask" passes. You know? RGB mask:

VRay_Arsenal_013_passMask.png

Roughly:

It's as simple I don't even know what to add! :redface:

Oh yes! This system bypasses a VRay limitation. Example:

It is black! Why? Because as VRay notice objects in group have an object ID, it doesn't show them in the pass.

With the Arsenal system, if you want to have a red group, it will be red!

FastControl

VRay_Arsenal_004_fastControl.png

This tab just gather main VRay options to quickly activate/desactivate them.

Quality tab

VRay_Arsenal_005_qualityTab.png

A big slider which change of color! :D

Here we are in the area that peoples who are not really render guru should enjoy. And yet, you will see it can definitely pleased peoples who are used to change their settings manually. :dentcasse:

The first thing to do to activate all of this is to click on Save actual settings which will save your current settings, and on Optimize to setup different expressions. From this point, you can start to change the main slider to vary render quality.

Preset Type

Preset Type are more about slider configuration than "preset". There is two Preset Type:

This two choices represent a majority of lighting case.

Presets are simple texte file that can be found in:

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

This files, with very simple syntax, are used to drive ranges (min and max) of VRay attributes which will be then modified by your slider. If I don't talk nonsense, the relationship between the slider and settings it drive is logarithmic to avoid settings burn render times when you start to increase too much the slider. :grenadelauncher:

If the opportunity to create it own presets will probably doesn't interest occasional lighters, being able to set these min and max parameters manually can be very interesting for VRay gurus having their little habits. :papi:

Moreover, it would have been great to see this tool independent of VRay to drive, for example, Mental Ray. :baffed:

If you want to prevent Arsenal modifications on a specific attribute, just lock it.

Offset quality

Here we have a very good idea. Principe is to apply an offset to the slider for some parameters.

For example, my slider is suppose to be 50. I think sampling is a bit sensitive and increases the rendering time too quickly. However, I am satisfied with the rest... So, I just check the Image sampler then type -10 for the settings of the sampler applies as if my overall slider was 40! Brillant! :youplaBoum:

Optimize material(s)

Another interesting idea: You determine two extrem subdivision values (sampling), click Optimize material(s) button and Arsenal will determine the value to use based on Glossiness value of the material. More it's gloss, more you need samples.

Notice the checkbox right to LayerMode. If you check it before clicking Optimize material(s) button and you are in a RenderLayer (other than masterLayer) attributes will changed only on the current RenderLayer.

Optimize light(s)

I'm not sure this button is very useful. For now it only set every VRayLights Subdiv parameter to 5...

ToolBox tab

VRay_Arsenal_006_toolBoxTab.png

Here you will find small very specific tools.

Proxy

VRayProxy are a marvel. We used them on url=http://www.imdb.com/title/tt170...Day Of The Falcon/url to make horse animation cycles shifting speed.

Multi proxy importer

This button allows you to import multiple VRayProxy because, as surprising as it may seem, it is not possible to do this in standard... You need to import VRayProxy one by one...

Shader auto connect

When you export a VRayProxy, the "assignation slots" are created. Principle is to store, inside the proxy, shader assignations for reassign your shaders later.

Once VRayProxy reimported into your scene, you can apply a VRayMeshMaterial (FYI, it's already created when you import). This material will show different slots assignments for your proxy to connect your own shaders.

Shader auto connect button can automatically reconnect shaders based on their names, which avoids having to do it yourself. On proxy with tens or hundreds of assignments, it is rather convenient...

Ignore namespace

This box allows you to ignore shader namespaces of your scene when reassigning to the proxies. In principle, this allows you to have these shaders in external references (with a namespace) without have problems for reconnect using their names.

ID

Once again, here we have tools to quickly assign IDs to materials and objects.

Goal is then to release this IDs as passes to give to your compositing friends.

Material ID

VRay_Arsenal_008_materialID.png

VRay_Arsenal_014_materialID.png

Last point, to make this work, don't forget to create a Material ID pass (Render Element):

VRay_Arsenal_007_materialID.png

Object ID

Same as Material ID but at the objects level.

VRay_Arsenal_015_objectID.png

VRay_Arsenal_010_objectID.png

Notice difference with the ''Material ID'' pass.

Each object will have a differente id.

Once again, don't forget to create Object ID Render Element:

VRay_Arsenal_009_objectID.png

Material control

This part allows you to apply some key values on selected/all materials in one click.

A Trace option (Reflection/Refraction) to completly activate/desactivate raytracing would be interesting here. :dentcasse:

Lights control

It can't be easier: Apply a Shadow subdivs value to selected/all lights of the scene in one click.

Techniquement, comment ça marche? How it work technically?

Hahaha! The particularity of this tool is to not change your scene when you generate passes (Except Maya RenderLayers of course), when you do some "On the fly" stuff or even Matte.

But then? How is it doing? :gne2:

Well, it uses a feature of VRay I'll dream of seeing widespread throughout render engines as it increase pipeline possibilities: The Python API VRay Scene Access.

I quote the documentation as it's very clear:

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! Chaos Group guys are genius! :sauteJoie:

Roughly, it allow you to drive the renderer before (during?) the render. So we can imagine crazy stuff like generate scenes directly in VRay, on the fly, without using heavy vrscene file. For those who have worked with Renderman, it means no more generation of heavy RIBs you use only once. Here, you can control VRay using Python!

I asked for a similar feature on Nvidia ARC forum (formerly Mental Image) as I thought it was a great idea but I'm not sure it changes much. :triste:

So, Damien's tool uses it, and that's what allows him to keep a clean Maya scene and be able to act directly at VRay level, before rendering.

Conclusion

For having test the thing thoroughly I can assure you it worth every penny (69€! :bravo:).

What is missing:

OK, I sell a little completely the thing but yes: It's worth it! :aupoil:

Beyond the fact that I invite you to jump into this tool, I hope that, if you already have it, this presentation/tutorial will allow you to go further! :)

See you!

:marioCours:

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: