Ça fait un petit temps que je voulais faire cet article technique, mais j’ai attendu la sortie de la build officielle de Blender 2.61, qui implémente le nouveau moteur de rendu Cycles (que j’utilise déjà depuis quelques temps car je travaille principalement avec les builds que l’on peut trouver sur Graphicall
)
Donc, parlons un peu de cette version 2.61, pour commencer: elle implémente le moteur de rendu Cycles, le camera tracker de la Tomato Branch (mais pas encore l’object tracker), le simulateur d’océan, le dynamic paint et d’autres trucs… C’est une build vraiment intéressante pour ces nouvelles fonctionnalités, qui sont carrément hallucinantes (bon, l’océan sim c’est pas vraiment nouveau, il existait pour la 2.4, mais là il devient accessible à tout le monde).
Attention, je pars du principe que vous avez déjà joué avec Blender et Cycles, car je rentre dans les détails (mais pas trop quand même)
Donc, j’ai fait quelques tests afin de vous montrer une partie des performances de cet incroyable moteur de rendu qu’est Cycles. Je me suis contenté ici de switcher entre les 3 presets de l’intégrator:
- Direct Light
- Full Global Illumination
- Limited Global Illumination
0. L’integrator, qu’est ce que c’est?
Le wiki de Blender nous apprends que l’integrator définit l’algorithme utilisé pour calculer l’éclairage lors du rendu. Cycles supporte actuellement un seul algorithme, un path tracing avec un échantillonnage (« sampling ») de lumière directe. Il fonctionne bien pour des configurations d’éclairage relativement simples, mais il n’est pas encore très bien adapté aux caustiques et autres éléments complexes d’éclairage.
Il fonctionne comme ceci: les rayons lumineux sont projetés depuis la caméra dans la scène, rebondissant jusqu’à ce qu’ils trouvent une source de lumière comme une lampe, un mesh avec un shader « emission », ou encore le background du world de la scène. Pour trouver ces différentes sources de lumière, l’échantillonnage de lumière indirecte (les rayons suivent les surfaces BSDF et rebondissent dessus) et directe (émission de rayons lumineux directement depuis une surface de lumière) sont utilisés tous les deux afin d’obtenir un résultat proche de la réalité.
Voici à quoi il ressemble (il se situe dans l’onglet « Render » du panneau « Properties »):
Passons en revue les différents paramètres:
Samples
Render : Nombre de tracés que la lumière va effectuer pour chaque pixel du rendu final. Plus cette valeur est haute, moins il y aura de grain dans l’image et plus elle sera réaliste.
Preview: Nombre de samples maximum pour le rendu dans le viewport.
Seed: Génération d’un nombre aléatoire en fonction de la valeur, chaque valeur différente donnera un type de grain différent sur l’image.
Bounces
Max : Nombre max de rebonds pour chaque rayon de lumière. Augmenter ce nombre donnera une plus grande qualité à l’éclairage de l’image, par contre, ça augmente le temps de rendu. Notez que mettre une valeur de 1 résulte à changer l’éclairage pour du Direct Lighting…
Min : Nombre minimum de rebonds pour chaque rayon de lumière. La valeur du nombre de rebond de chaque rayon sera définie aléatoirement entre les valeurs min et max. Mettre des valeurs importantes améliore la qualité de l’image mais augmente le temps de rendu.
Light Paths:
Diffuse: Nombre max de rebonds pour chaque rayon de lumière sur une diffuse.
Glossy: Nombre max de rebonds pour chaque rayon de lumière sur une surface glossy.
Transmission: Nombre maximum de rebonds pour chaque rayon de lumière pour la transmission de couleur (radiosité).
Transparency
Max: Nombre maximum de rebonds dans une matière transparente.
Min: Nombre minimum de rebonds dans une matière transparente. La valeur du nombre de rebond de chaque rayon sera définie aléatoirement entre les valeurs min et max.
Shadows: Définit si la transparence des objets doit intervenir lors de la génération des ombres portées et propres par éclairage direct.
Caustics
No Caustics: En principe, les caustiques sont gérées par Cycles, mais si il y a trop de bruit/grain dans l’image (samples, bounces, etc de basses valeurs), il est impossible de les calculer, et ça prend du temps de rendu pour rien, cette option permet d’empêcher ce calcul alors inutile.
1. Setup de la scène
Vous pouvez voir sur le screenshot ci-dessous que la scène est vraiment très simple: elle consiste en un plane pour le sol (Shader Diffuse BSDF blanche), un Suzanne subdivisé et smoothé (Shader Diffuse BSDF blanche), une sphère (Shader Diffuse BSDF rouge), et un plane pour l’éclairage (Shader Emission blanche). personnellement, je suis carrément fan de l’utilisation de planes ou de meshes en tant que lights!
Je ne pense pas qu’il soit utile que je donne le fichier .blend de cette scène, étant donnée sa simplicité, et que vous contrôlerez/comprendrez bien mieux les choses en faisant votre propre setup.
J’ai effectué des rendus en changeant les samples (comprendre par là les « passes de précision du rendu ») aux valeurs de 25, 50, 100 et 200 pour bien montrer les différences de qualité en fonction de ce qu’on demande à Blender. C’est assez intéressant, car on peut voir la distribution des ombres et des lumieres évoluer selon les presets. J’ai mis une sphère rouge dans la scène pour voir la radiosité. j’ai d’abord pensé utiliser l’une des scènes de démo « officielles » mais j’ai préféré faire encore plus simple et me focaliser sur un seul shader et uniquement sur les presets de l’integrator de Cycles.
Les rendus sont effectués en 960x540px, sur un PC sous Windows 7 64bits (avec donc Blender 2.61 en 64 bits aussi, logique), composé d’un AMD Phenom II x4 945 @ 3GHz, 6Go de RAM, et une ATI Radeon HD4890 (donc en mode CPU car le support de l’OpenCL n’est pas encore au point).
2. Rendus « Direct Light »
Voici le premier rendu, 25 samples:
Second rendu, à 50 samples:
Troisième rendu, à 100 samples:
Et quatrième rendu, 200 samples:
Mon avis:
Premièrement, je trouve les ombres propres de l’image bien trop marquées et sombres, et il n’y a pas de radiosité émise par la sphère rouge, ce que je trouve dommage à titre personnel, mais ça peut être pratique si on en veut pas. Ça vient du fait que les paramètres du « light path » (cf: integrator) sont très bas, notamment la « transmission » sui est à 2 (si je ne me plante pas).
3. Rendus « Full Global Illumination »
Voici le premier rendu, 25 samples:
Second rendu, à 50 samples:
Troisième rendu, à 100 samples:
Et quatrième rendu, 200 samples:
Mon avis:
On peut remarquer qu’on a 40 secondes de rendu en plus qu’en Direct Light sur le rendu à 200 samples, mais qu’en contrepartie, on a de belles ombres propres très diffuses, mais un peu trop, à mon goût, et de la radiosité émise par la sphère sur le sol et sur Suzanne. Cette radiosité reste faible, mais elle est présente, et si elle était plus importante, ce serait sans doute plus agréable à l’oeil mais moins « physicaly correct ». Je trouve que l’on a beaucoup plus l’impression d’un vrai éclairage, car le preset « Direct Light » fait encore vraiment très 3D. Je trouve que les ombres portées, sont quant à elles, trop faibles.
4. Rendus « Limited Global Illumination »
Voici le premier rendu, 25 samples:
Second rendu, à 50 samples:
Troisième rendu, à 100 samples:
Et quatrième rendu, 200 samples:
Mon avis:
Pour 30 secondes de rendu de moins qu’en « Full GI » et 15 de plus qu’en « Direct Light », je trouve qu’on a un bon mélange des 2 précédents presets, car les ombres propres restent relativement organiques, marquées juste là ou il le faut. Les ombres portées sont, selon moi, plus que correctes, et la radiosité est présente, mais juste un peu trop faible. On perd un peu de l’aspect organique de Suzanne par rapport au preset « Direct Light », mais on gagne un bien meilleur apperçu sur la globalité.
5. Conclusion
Je pense avoir résumé ce que je voulais dire en conclusion dans chaque test de preset, mais il me reste quelque chose à ajouter: ce ne sont là que des presets, dont je vous encourage GRANDEMENT à modifier les paramètres afin d’obtenir le résultat que vous souhaitez, mais ça permet, lors de la conception d’une scène, de pouvoir proposer des aperçus très bien éclairés avant de passer par le process de lighting final, qui définira l’ambiance de votre scène.
En attendant la sortie des passes de rendus séparables aux rendus dans Cycles (prévue pour janvier 2012), Savoir jongler entre les différents présets fait gagner un temps précieux au rendu et au compositing.
De manière plus générale, cet article montre aussi que pour un aperçu, il est inutile de mettre un taux de samples de fou: 100 samples suffisent en moyenne pour ne pas avoir trop de grain dans l’image tout en ayant un bel apperçu de son image. Ici, en passant de 100 à 200 samples, on DOUBLE son temps de rendu, en passant de 1min30 en moyenne à environ 3 minutes, et là scène est vraiment très simple, alors imaginez le temps gagné avec une scène bien plus complexe
Voila, j’espère vous avoir éclairé un peu. Je vous invite à réagir dans les commentaires si par hasard j’ai écrit une connerie…
PS: quand j’aurai le temps, je pense faire une traduction de cet article en anglais sur le blog du Projet Potato
EDIT: Laissons tomber pour la version anglaise de l’article, j’ai pas eu le temps.
EDIT 2: Depuis la rédaction de cet article, l’emplacement de ces différents éléments a changé: l’integrator a été splitté en 2 parties: « sampling » et « light paths », mais ça fonctionne toujours pareil.












