Les paramètres de V-Ray - Le Raycasting (Traduction)
A propos de la traduction
Cet article est la traduction de: Best V-Ray Settings – Raycasting.
Il a été traduit avec l'aimable autorisation de renderstuff (qui propose d'autres articles techniques). Merci à eux! :)
Début de la traduction
Dans le dernier tutorial concernant le contrôle du Sampling DMC, nous avons vu comment faire varier la qualité et la vitesse de rendu de V-Ray globalement. Dans ce tutorial, nous allons nous attarder sur les paramètres du cadre System des options de rendu.
Ce tutorial répond au questions suivantes:
- Comment éviter a 3ds Max (ndt: Ou Maya) de planter quand il n'y a plus assez de RAM?
- Que dois-je faire quand V-Ray s'arrête durant le rendu?
- Comment faire face au manque de RAM dans V-Ray?
- Comment rendre une scène de plusieurs millions de polygones? (faute ici, prévenir les auteurs)
- Comment accélérer le rendu?
- Qu'est ce que le raycasting et comment V-Ray peut l’accélérer?
- Qu'est ce qu'est un arbre de BSP et comment est ce structuré dans V-Ray?
- Quel est la différence entre le raycaster Static et Dynamic?
- Quand V-Ray utilise t'il la mémoire virtuelle (le swap)?
- Comment switcher V-Ray pour qu'il fonctionne avec avec le raycaster dynamic?
- Que sont les buckets V-Ray?
- Pourquoi avons nous besoin des logs de rendu de V-Ray?
- Comment changer la priorité du process de rendu de V-Ray?
- Que dois-je faire si V-Ray plante pendant le calcul du Light Cache?
- Comment calculer la meilleur valeur de Dynamic Memory Limit?
Les plantages de V-Ray
Il y a un truc rageant quand on rend des scènes complexes dans V-Ray. Un truc qui peut rendre la plupart des utilisateurs de V-Ray nerveux. Un truc qui peut même détruire quelqu'un, au point de casser tout enthousiasme a continuer a bosser sur sa scène. Un truc qui apparaît toujours au moment ou on travail sur le rendu d'un projet ou les délais sont clairement défini et incompressible. Tout les forums concernant V-Ray sont remplit de demande concernant le rendu de grosses scènes. :D
Bien entendu, nous parlons ici du manque de RAM, qui est la principale raison des plantages lors d'un rendu.
Pourquoi cela arrive t'il? D’où vient cette erreur? Ne pouvez vous pas faire les choses plus simplement? Est-ce obligatoire de devoir systématiquement augmenter sa RAM pour pouvoir finir un gros projet?
Pour répondre à ces questions, nous allons voir comment V-Ray utilise la mémoire et quels sont les outils a notre disposition pour gérer le processus.
Dans tout les logiciels, la gestion de la mémoire et la façon dont sont stockées les données est une partie a la fois compliqué et routinière. Cela dit, il n'y a pas vraiment d’intérêt a vous présenter les tableau de variable (data array) et la façon de les gérer. Ces détails sont profondément ancré dans le domaine de la programmation. La plupart du temps, il suffit de comprendre le fonctionnement générale du programme que vous utilisez pour gérer ces besoins en RAM. Surtout, quand on sait que l'utilisateur est entièrement limité par l'interface qu'il a sous les yeux. V-Ray ne faisant pas exception.
Théorie
Le Raycasting, la base d'un rendu V-Ray
Avant de commencer un rendu, V-Ray doit placer la géométrie de la scène en RAM afin qu'elle puisse être utilise durant le calcul. C'est la première étape du rendu. Une fois qu'on a compris ça, l'importance de la gestion de la mémoire devient très clair. Mais bien évidement, nous ne nous arrêtons pas là et allons suivre les différentes étapes du rendu les unes après les autres.
Une fois que les données sont mise en mémoire, le rendu peut commencer. Le calcul de chaque pixel est compose d’opérations basiques consistant à “sonder” la géométrie. Il est effectué en utilisant un algorithme spécial: Le raycasting. Le principe de cet algorithme est que la caméra envoi un rayon qui traverse la scène jusqu'à ce qu'il entre en collision avec un objet. Chaque collision (ray intersection) est faite puis V-Ray récupère l'emplacement de la géométrie de la scène, ses propriétés de base et les autres informations requises lors des prochaines étapes du rendu.
Les désavantages d'avoir des données non organisées
Le calcul d'un seul raycast (l'intersection des rayons avec la géométrie et la récupération de ses propriétés), ne prend pas beaucoup de temps. Toutefois, le nombre de raycast dans un rendu photoréaliste peut être plusieurs fois supérieur au nombre de pixels de l'image. Par exemple, un rendu en 1920x1080 contient plus de 2 millions de pixels fois le nombre de samples par pixel fois le nombre de rebond fois... Bref, cette échelle change fondamentalement la donne, ce qui rend finalement l’étape du raycasting très gourmande en ressources.
Faisons une analogie formelle de la complexité qu'impose l’algorithme de raycasting. Cette analogie va nous aider à comprendre les problèmes de gestion de la mémoire que rencontre V-Ray.
Imaginez la géométrie d'une scène comme l'ensemble des feuilles (vertes) d'un arbre, et l'algorithme de raycasting comme une fourmi infatigable, qui doit trouver la feuille jaune (parce qu'elle aime le jaune... Les goûts et les couleurs...). Dans notre analogie, cette feuille jaune incarnent les données de la géométrie frappé par un rayon.
Initialement (on ne parle pas de V-Ray), les données géométriques de la scène qui seront chargées en mémoire, sont agencées de manière aléatoire lors des calculs de raycast. Imaginez donc la chose comme un tas chaotique de feuille.
Notre super fourmi sait qu'elle doit trouver une feuille spécifique (la jaune) dans le tas de feuille. Comment peut-elle y arriver? Bien évidement, elle devra faudra procéder séquentiellement, par paquets de feuilles, jusqu'à ce qu'elle trouve la seule et unique feuille jaune.
Elle devra approcher la première feuille et voir si elle est jaune. Puis, atteindre la seconde et revérifier, puis la troisième, etc... En procédant ainsi, notre fourmi doit passer par chaque feuille, jusqu'à trouver la feuille désiré.
La possibilité que la fourmi atteigne la feuille jaune des le début de sa recherche est envisageable. Cela dit, il n'y a également aucune garantie que la feuille jaune ne soit pas la dernière dans la pile. Si c'est le cas, notre fourmi devra passe sur l’intégralité des feuilles avant de trouver la bonne.
Une tel situation peut se produire quand les données géométriques de la scène ne sont pas organisées. Pour pouvoir récupérer les propriétés d'un seul point dans la scène, l'algorithme de raycasting sera obligés de passer par toutes la géométrie disponible pour déterminer si le rayon envoyé entre en collision avec la face.
Cette façon de faire est très fastidieuse pour notre fourmi, mais également pour le CPU qui au lieu de s'occuper du rendu en lui même, doit passer son temps a chercher les bonnes données dans la mémoire.
Arbre de BSP et structuration des données
Pour accélérer l’étape servant a déterminer des propriétés de la géométrie de la scène par raycasting, V-Ray organise toute la géométrie dans une structure spéciale.
V-Ray stock la géométrie sous la forme d'une arborescence structuré en arbre, qu'il met ensuite dans la RAM. Cette structure est appelée le partitionnement binaire de l'espace en arbre (Binary Space Partitioning tree ou BSP tree). Il s'agit d'une méthode spéciale visant a représenter un tableau de données sous la forme d'une structure en arbre binaire.
L'idée générale d'un BSP tree est que la scène et toute sa géométrie sont subdivisés en deux parties. Les deux branches partant de l'origine (la scène), qui est appelé la racine (Root) de l'arbre. Après la première subdivision, chacune des branches de données est à nouveau divisés en deux, formant de nouvelles branches. Le points à partir de laquelle de nouvelles branches se crées sont appelé les noeuds de l'arbre (Node). L’étape de subdivision de la géométrie de la scène et la construction des “branches” en mémoire continue jusqu’à atteindre une limite settée dans les paramètres du BSP tree. Le résultat de la dernière division des branches sont les feuilles (Leaves) de l'arbre. De cette façon, V-Ray crée une structure “en branche” (on dit ramifiée) de l'ensemble de la géométrie de la scène, ce qui est excellent pour tout ce qui vise a récupérer rapidement les propriétés d'une zone particulière de la scène.
Pour comprendre ce qui ce passe, revenons à notre exemple. L'analogie des feuilles et de la fourmis illustre parfaitement comment cette organisation aide à récupérer les données.
Si nous ne mettons pas les feuilles dans un tas désordonné, mais disposées soigneusement sur les branches d'un arbre, nous pouvons accélérer considérablement l’étape consistant a trouver la feuille jaune. Dans une telle situation, en évitant toutes les branches inutiles, notre fourmi peut aller directement à sa destination. Tout ça est possible uniquement parce qu'elle n'a pas besoin de vérifier toutes les feuilles. Au lieu de cela, elle peut pratiquement voir le chemin qui pourrait la conduire à la feuille jaune.
En suivant ce principe, V-Ray structures la géométrie de la scène, nous faisant gagner un temps précieux.
A ce niveau la, le principe de base du rendu est assez simple: Charger les infos, les structurer, trouver les propriété demander, et rendre. :)
Maintenant que nous avons vue le principe de structuration des données en vue de les raycaster, nous pouvons procéder à l'étape suivante, destinée a ceux qui souhaitent rendre des grosses scènes dans V-Ray.
Static Raycast et chargement d'une scène entière en mémoire
Comme nous l'avons vue plus haut, la scène doit être charge en mémoire pour que le rendu puisse commencer. Dans le chapitre précédent, nous nous somme intéressé a la structure en arbre qui est une sorte d'accélérateur de raycasting.
Cependant, comme il a été mentionne au début de la l'article, problème persiste. Tout se passe bien pendant le rendu, tant que la quantité de RAM disponible sur votre machine est suffisante pour stocker l'intégralité de la géométrie de la scène.
Le fait est que V-Ray possède différents type d'algorithmes de raycasting. Le plus simple d'entre eux étant le Static Raycaster. Il charge l'intégralité de la scène en mémoire, et en une seule fois.
Mais imaginez que nous soyons sur le point de rendre une scène contenant des millions de polygones, et que la quantité de RAM disponible soit insuffisante pour la charger complètement. Que ce passerait il? Malheureusement, V-Ray nous gratifierait d'une surprise forte déplaisante: Il crasherait..
Le plantage d'un logiciel est l'apparition de l'erreur critique inattendue (unexpected critical error) qui empêche catégoriquement la suite de l'exécution du programme. C'est comme ça que V-Ray se plante lorsqu'il n'y a plus de mémoire vive disponible et qu'il lui est impossible de charger de la géométrie supplémentaire. Le message sur la création en mémoire de la structure arborescente géométrie “Current Task: Buliding static raycast accélérateur ...” est généralement la dernière chose que le graphiste voit dans le log. Après ça, le rendu (ainsi que le soft sur lequel on bosse) crash direct et vous renvoi la fameuse “report window”.
Avec notre analogie, on est face à un arbre ayant trop de branches et trop de feuilles. Un arbre trop lourd supportant le poids de trop de branche elle même supportant le poids de trop de feuilles s'effondre, tout simplement...
La seule façon d'éviter cette situation sans avoir a augmenter la quantité de RAM est d'abandonner la chargement de la scène complète en une seule fois. Au lieux de ça, nous devons charger, sequentiellement, des morceaux de la scène qu'on souhaite rendre.
Comme on pouvait s'y attendre, V-Ray dispose d'une telle méthode pour placer la géométrie dans la mémoire. Cette méthode est intégré a un raycaster dynamique, qui est conçu précisément pour de telles situations.
Dynamic Raycaster et chargement des portions de géométrie
En contraste avec le moteur de base appelé Static Raycaster, le Dynamic Raycaster nous permet de charger uniquement la portion de géométrie nécessaire au rendu de la zone de l'image en court de calcul.
Le Dynamic Raycaster charge en mémoire uniquement certaines portions de la géométrie, sans excéder la limite de mégaoctets spécifiés. Une fois que la portions chargé a été utilisé pour rendre la zone courante de l'image en court, la partie qu'elle occupait en mémoire et libéré et une nouvelle portion de géométrie est chargé. Évidemment, la nouvelle portion sera utilisé pour rendre la partie suivante de l'image.
Rendre à l'aide du Dynamic Raycaster élimine les problèmes de débordement de la mémoire, non seulement grâce à la limite de mémoire qui lui est donné mais également du fait qu'il sait utiliser le potentiel du memory manager du système d'exploitation sur lequel il tourne. Cela signifie que même si le calcul d'une zone de l'image a besoin de charger des objets au point que leur poids totaux dépassent la limite de mémoire mis en place, le système d'exploitation est toujours en mesure d'allouer une ressource pour pouvoir continuer le rendu. Par exemple: Windows va utiliser la mémoire dit paginé (le swap), qui lui permet de stocker sur le disque dur, des données qui ne peuvent pas/plus tenir dans la mémoire physique (RAM).
Au delà des avantages du chargement dynamique de la géométrie que je viens d'énoncer, il faut savoir que si le Dynamic Raycaster était vraiment la solution universelle, le Static Raycaster a la fiabilité plus que douteuse n'aurait plus lieu d'être. Toutefois, V-Ray utilise le moteur Static Raycaster par défaut.
Le chargement/déchargement des données coûte un temps précieux, au mémé titre que n'importe quelle opération. Même si nous spécifions une limite de RAM idéal (pour notre situation), l'utilisation du Dynamic Raycaster augmentera drastiquement le temps de rendu global. De plus, si V-Ray a est amené à utiliser la mémoire paginé, le temps de rendu va être décuplé.
Tout ça résume la relation qu'il y a entre un raycaster et la mémoire ainsi que les soucis rencontré durant sont utilisation. Maintenant, quand nous avons vue le principe du raycaster, penchons-nous sur sa configuration en pratique.
Pratique
Les parametres de raycating: L'arbre binaire
Commençons avec les paramètres que l'on peut trouver dans la section Raycaster parameters de la partie System de V-Ray.
Les trois premiers paramètres décrivent les propriétés de la structure dur raycasting: L'arbre BSP. Ils sont assez abstraits, nous allons donc commencer par déterminer l'effet de chacun d'entre eux.
- Max tree depth est un paramètre qui limite la “profondeur” des branches d'un arbre. Il définit le nombre de divisions de l'espace de la scène. La valeur numérique de ce paramètre reflète le nombre maximum de niveaux de la racine à la feuille. Plus la valeur Max profondeur de l'arbre, plus un arbre devient ramifié.
- Min leaf size limites la structure d'un arbre binaire à une taille minimale des feuilles. Cette option nous permet de stopper la division de la géométrie de la scène en settant la taille minimale (dans l'espace) des feuilles en unités système. Une faible valeur empêche de limiter la ramification de l'arbre, et donc il grandit autant que le paramètre précédent définit.
- Face/level coef. détermine le nombre maximum de triangles (unités minimales de la géométrie) contenues dans une feuille. Une faible valeurs de Face/level coef. peut faire des arbres plus ramifiés, avec beaucoup de feuilles.
Comme nous le savons, V-Ray organise la géométrie de la scène sous la forme d'un arbre BSP pour accélérer l'étape de raycasting. On peut donc partir du principe que plus la structure de notre arbre est “profonde”, plus les feuilles sont petites. Et de même, plus le nombre de triangles contenu dans chaque feuille est faible, plus les besoins en mémoire sont conséquent pour stocker les branches augmentant potentiellement la vitesse du raycasting.
Cependant, il ya une limite à une telle accélération. Passé un certain seuil, la divisions n'est plus nécessaire, dans la mesure où une structure trop ramifiée d'un arbre BSP rend son travail trop difficile et le temps que l'on est supposé gagner est finalement perdu du fait que le raycaster passe sa vie à avancer très loin dans l'arbre pour récupérer l'information.
Alors, quelle est la limite a ne pas franchir et quelle est la meilleure taille que puisse avoir un arbre BSP pour obtenir une vitesse de raycasting optimale?
La réponse à cette question n'est pas très classe: Seul l’expérimentation peu vous aider a trouver les valeurs optimales des paramètres de l'arbre BSP. Il n'existe pas de réglages ultime. Chaque scène doit avoir des paramètres de BSP spécifique pour pouvoir profiter d'une bonne vitesse de raycasting.
Sur des rendus d'images fixes, les prises de tête a bouger indéfiniment les paramètres pour obtenir les bonnes valeurs complètement déraisonnable. Tout simplement parce que perdre du temps a faire quelque chose pour économiser le même temps n'a pas de sens. Vous conviendrez aisément qu'il est absurde de faire 10 fois le rendu final d'une image a chercher les réglages d'arbre BSP optimale, pour finalement faire le même rendu une onzième fois 10 minutes plus rapidement... :D
Toutefois, les paramètres d'un arbre BSP ne sont pas seulement une démonstration des capacités techniques du moteur. Leurs avantages deviennent clairs quand il s'agit d'animation. Supposons que nous avons besoin de rendre une séquence de 1000 franes. Nous pouvons aisément faire une sélection expérimentale des paramètres optimaux d'arbres BSP. Même si déterminer les meilleures valeurs peut prendre jusqu'à 10 ou 20 rendus, et que la vitesse de rendu de chaque image va diminuer de 20 secondes, un tel effort est très utile. Après tout, cette optimisation peut facilement vous faire économiser environ 5 heures de temps de calcul.
Quand on rend une image fixe, la nécessité de changer ces valeurs n'existe qu'en théorie. Elle n'a de sens que lorsque nous voulons libérer de la mémoire pour pouvoir répondre à d'autres besoins, donc nous réduisons la taille de l'arbre BSP au prix d'un ralentissement des temps de rendu.
La meilleur solution étant encore de laisser les paramètres définissant la structure de l'arbre BSP par défaut, sans apporter de modifications inconsidérées.
Les parametres de raycating: Configurer le Dynamic Raycaster
- Dynamic memory limit est le paramètre qui détermine, en mégaoctets, la quantité maximale de RAM que le raycaster dynamique est autorisé a utiliser. Plus précisément, le nombre donné ici est divisé par le nombre de threads de calcul de l'ordinateur. De faibles valeurs peuvent réduire de façon significative les performances du raycaster car elles augmentent la fréquence de chargement/déchargement des portions de la géométrie augmentant l'utilisation du swap qui est très lente. A l'inverse, des valeurs très élevées peuvent ralentir le rendu et grandement affecter les performances du système d'exploitation due à une utilisation intensive du swap. 60/80% de la quantité totale de RAM installé sur votre ordinateur, donne les meilleures performances. C'est cette valeur qui devrait être utilisé par défaut dans V-Ray.
Note: Sur la page originale, l'auteur propose une petite interface en JavaScript pour calculer la valeur optimale en fonction de votre système d'exploitation.
- Default geometry détermine la façon de charger la géométrie en mémoire. C'est ici que nous choisissons le type de raycaster a utiliser.
Avant de rentrer dans les détails des différentes options, je dois vous préciser deux-trois choses concernant les VRayProxy et VRayFur. La particularité de ces objets est que peu importe le paramètre sélectionné, ils seront calcules par le Dynamic Raycaster. Une tel features est présente r ces objets sont souvent composés d’énormément de polygones et il est plus malin de les charger par portions pour éviter que le programme ne plante.
Avant de décrire les options de géométrie par défaut, il convient de mentionner les objets et les VRayProxy VRayFur. La fonctionnalité de rendu de tels objets est que peu importe ce qui est sélectionné par défaut dans la géométrie; ces objets exactes sont calculées par raycaster dynamique. Une telle fonctionnalité est implémentée, car ces objets sont extra, comme polygonale élevée, et il est préférable de les charger en portions pour éviter le plantage du programme.
* Static est le mode raycasting les plus courant. Lorsque nous sélectionnons statique, l’intégralité les données géométrique de la scène sont chargé en mémoire avant le rendu. Dynamic est une sorte de “mode de compromis”. Le Dynamic Raycaster ne charge pas toutes les géométrie de la scène en mémoire en une fois. Il charge la géométrie par paquets. Le nombre de mégaoctets setté dans le paramètre Dynamic memory limit détermine la memoire maximale qu'il peut utiliser. Auto est l'option par defaut. Dans ce mode, c'est V-Ray qui décide quels sont les objets a calculer via le Static Raycaster ou le Dynamic Raycaster. Cette décision est prise en fonction des propriétés de l'objet. Le fait que l'objet soit calculé avec le Static Raycaster ou le Dynamic Raycaster dépend du nombre de ces polygones ainsi que du nombre de fois ou il est instancié. C'est une méthode hybride qui combine l'utilisation des deux raycasters.
Si on compare les différents types de raycasters, on peut conclure que le dynamique est le moins prise de tête, mais aussi le plus lent. En l'utilisant, on élude une bonne partie des problèmes de dépassement de la mémoire. Par contre, la vitesse de rendu diminue du fait qu'il passe son temps à remplir et vider la mémoire en permanence. Lors d'un rendu via Static Raycaster, il s'approprie l'ensemble de la RAM disponible sur la machine. Static Raycaster est la méthode la plus “rentable” mais également le plus instable. Si l'intégralité de la géométrie peut tenir en RAM, le rendu sera au plus rapide de ces capacités. Ben oui, on a pas besoin de calculer le poids de la géométrie, attendre que la mémoire se libère pour charger une autre portion de géométrie placé dans le swap. Cela dit, si nous avons plus de données que de RAM dispo, le programme se croutera immédiatement. N'hésitez pas à relire la partie plus haut si vous ne vous comprenez pas ça. Vous savez? L'arbre déraciné. :)
Le mieux à faire est encore de laisser sur Auto. Auto s'adapte et est le mode passe partout (de Fort Boyaaard!), donc autant l'utiliser.
Les paramètres du Bucket
Les paramètres Render region division nous permettent de définir la taille des portions de rendu et l'ordre de leur mise en calcul.
Plus couramment, on appel cela le bucket. Un bucket est une zone minimal, en laquelle l'image final est divisé pour être dispatché à chaque thread du processeur. Les bucket sont les petits carrées du framebuffer qui sont calculés les uns après les autres, affichant petit à petit votre rendu.
Ça peut sembler un peu bateau mais l'étape de calcul en elle même, qui est souvent considéré comme un modèle de fonctionnement multitâche, ne l'est pas. Le calcul exacte d'un rayon ne peut être effectué que par un seul coeur, même avec un processeur multicore. la solution pour éviter ça est de diviser le calcul du rendu entre différent threads. Chaque portion a son propre système de rendu et fonctionne de manière autonome. Le rendu est donc divisé en plusieurs parties parfaitement indépendantes, avec leur propre mémoire (et leur propre cache). C'est de cette façon que les petits carrées (nos buckets) se rendent. Quand un bucket est calculé, il est affiché sur le frambuffer. Le rendu résultat est un peu comme un puzzle, un assemblement de petites pièces qui forme une grande image. Pour éviter que le rendu final ne ressemble à une mosaïque, les buckets peuvent être sujet à une interpolations mutuelle de leur samples.
Voyons plus en détail les paramètres des buckets.
- X et Y déterminent la taille du bucket en pixel. Par défaut, les deux champs sont liés mais on peu délocker ça pour les paramétrer indépendamment. X et Y determine la taille du bucket en pixels tant que le paramètre measurement est en Region W/H. Si il est setté en 'Region Count'', X et Y détermine en combien de bucket l'image finale sera divisée.
Évidemment, plus l'image finale est divisée en plusieurs buckets, plus V-Ray consacrera du temps à interpoler les bords de ceux ci. D'un autre coté, des petits buckets sont la garantie que la région rendu est contient un minimum de géométrie. Il faut noter qu'un bucket représente la région de la scène que le Dynamic Raycaster chargera en RAM. Réduire la taille des bucket peut être utile lorsque les objets qui doivent être stockés dépassent la limite de la mémoire disponible pour leur thread. Théoriquement, un petit bucket prend moins de géométrie, il peut donc éviter au rendu d'utiliser le swap. La valeur par défaut est une bonne valeur dans la plupart des cas.
- Region sequence est l'option spécifiant l'ordre dans lequel seront rendus les buckets. On peut choisir parmi six options:
- Top/bottom
- Left/right
- Checker
- Spiral
- Hilbert curve
- Triangulation
Il est facile de deviner le mouvement des quatres premier. En Hilbert curve, les buckets se suivent un sous la form d'un snake (vous savez, le jeux de votre premier Nikia 3310 :D ).
Le dernier mode est surement le plus intéressant. En effet, en Triangulation les buckets forment des triangles de différentes tailles qui recouvre toute les zones du frame buffer. La particularité de Triangulation est qu'il recouvre progressivement les zones d'une grosse image, ce qui est très pratique dans le cas du Dynamic Raycaster. Avec un tel fonctionnement, il y a de fortes chances que les parties de la géométrie utilisée lors du rendu du bucket précédent soit présent dans le bucket suivant ce qui évite des opérations inutiles de chargement/déchargement dans la RAM. C'est précisément pour ces raisons qu'il est sélectionné par défaut.
- Reverse sequence peut être utilisé pour inversé l'ordre de calcul des buckets. Bien qu'elle puisse paraitre inutile, cette feature permet d'éviter le coups classique ou la partie la plus intéressante de l'image que vous rendez fait partie des derniers buckets à se calculer. L'inverse est aussi possible: Le rendu commence par une partie très longue et met énormément de temps avant d'afficher le reste de l'image qui est pourtant beaucoups plus facile à calculer. Cette options n'affecte pas vraiment le temps de calcul, c'est donc à vous de voir.
- Previous render est un paramètre (uniquement disponible sous 3ds Max) spécifiant le comportement du framebuffer durant le rendu suivant. Le mode Unchanged ne touche pas au rendu précédent. Les modes Cross et Fields nous permettent de recouvrir le rendu précédent de... Croix et de... Lines (Un point! Continue!). Darken et Blue respectivement assombrissent et teinte en bleu le rendu précédent pour augmenter les contrastes. Le mode le plus utile est celui par défaut (Unchanged). Il permet de voir les changements directement sur le rendu précédent.
Et nous en avons fini avec les paramètres System, les plus importants de V-Ray! Ceux qui suivent sont secondaire (ndt: et pas nécessairement placé ici dans Maya) et n'affectent pas les performance du rendu a proprement parler. Cela dit, nous allons tout de même voir comment ils fonctionnent.
Bandeau des statistiques sur l'image
Frame stamp active l'ajout d'une bande en bas de vos rendus V-Ray pour pouvoir y afficher des informations et des stats. C'est particulièrement utile pour rendre une même image avec différents informations techniques. Ces infos peuvent être le temps de rendu, le type de CPU, la version de V-Ray, et même la taille en pixels de l'image. Notez qu'une telle option est avant tout technique. Par exemple, elle peut etre utilise pour déterminer la valeur optimale de l'arbre de BSP.
Activer le Frame Stamp peut également vous aider a vous la péter devant vos collègues en leur montrant que votre nouvel ordinateur est X fois plus rapide que le leur. :)
Bien entendu, activer cette option est inutile quand vous commencer à lighter dans V-Ray.
Rendu distribué
Les paramètres qui suivent permettent d'activer et de setter les paramètres des calculs distribués.
C'est une des features les plus révolutionnaires des moteurs de rendu modernes. Le rendu distribué permet de rendre une seule et même image en utilisant la puissance de calcul de plusieurs ordinateurs. Pour cela, les ordinateurs doivent être correctement configuré sur un réseau commun. V-Ray peut distribuer et séparer les buckets de son image sur les différentes machines disponibles, puis collecter les résultats de leurs calcules pour les rassembler sur l'image finale.
C'est un sujet très vaste qui sera étudié dans un futur chapitre de RenderStuff. Pour l'instant, le rendu d'une image par plusieurs ordinateurs est loin d'être un paramètre qui intervient dans l'optimisation d'un rendu. On le laisse donc désactivé.
Les logs de V-Ray
Le prochain sujet concerne les logs de V-Ray (Section V-Ray log).
Contrairement au Frame stamp, l'utilité de cette fonction est évidente. Activer la case Show window active la fenêtre d'information Vray messages durant le rendu, ce qui, en fait, affiche le log de V-Ray.
Le log est très pratique pour voir les informations durant le rendu. Ces informations peuvent êtres différents warnings, erreurs et statistiques. Les logs de V-Ray sont indispensable lors de la configuration d'un reseau en rendu distribué. V-Ray affiche très clairement les ordinateurs qui prennent part au rendu et ceux qui restent en idle. Ces informations vous permettent d'éviter de nombreux problèmes.
Vous pouvez entrer le chemin du log a générer dans le paramètre juste en dessous. Très pratique en cas de crash de 3ds Max. Il suffit alors d'ouvrir le log avec un éditeur de texte et de chercher l'erreur qui a provoque le plantage.
Une valeur numérique (Level) indique le niveau de profondeur des statistiques a générer:
- N'affiche que les messages d'erreur.
- Affiche les erreurs + les avertissements
- Idem + informations générales
- Affiche tout ce qui ce passe durant le rendu (peut etre tres long).
Afin d'être bien informé sur les événements les plus importants lors du rendu, les logs devraient être active et Level setté sur 3.
Options diverses
Nous allons maintenant passer en revu les Miscellaneous options. Ce sont les options secondaire de V-Ray.
MAX-compatible ShadeContext (work in camera space) est une feature qui permet a V-Ray de rendre dans un contexte compatible avec les matériaux de Max.
Le fait est que V-Ray fait tout ces calculs en fonction de l’écran (screen space). En d'autres mots, V-Ray utilise les coordonnées géométriques relative a l’écran. Cela dit, certains plugins (en particulier anciens), utilise les coordonnées relatives a la camera courante. Activer cette option permet a V-Ray de pouvoir fonctionner avec ces plugins, outrepassant les problèmes d’incompatibilité. C'est pour cela qu'il est conseiller de vérifier cette option quand on utilise des plugins.
L'option Check for missing files permet de vérifier que des fichiers sont manquant (textures ou proxy) dans la scene en court. Si c'est le cas, un warning est immédiatement affiche dans le log. En général on connait déjà les fichiers manquants d'une scène quand on l'ouvre avec 3ds Max. En pratique, vérifier l’existence des fichiers avant le rendu est plus gênant qu'autre chose. Il vaut mieux la désactiver.
Optimized atmospheric evaluation désactive le shading des objets de la scène qui sont a l’intérieur ou a l’extérieur des atmospheric effects. Quand l'option est active, le rendu ne shade pas les objets qui sont peu visible au travers des atmospheric effects. Activer cette option peut économiser pas mal de ressources en skippant le calcul des matériaux des objets objets a peine visible. Dans de tel cas, V-Ray calcul l'effet atmospherique en premier et estime la visibilite des objets a l'avance. Au bout de cette evaluation, les objets non visible sont traités comme comme n'ayant pas besoin d’être shadés. Bien sur, déterminer la visibilité au travers des atmospheric effects n'est pas toujours efficace. Il peut y avoir des situations ou les objet sont finalement suffisamment visible, mais n'ont pas de shading. Normalement, cette option reste désactivée.
Low thread priority est une option qui met automatiquement le rendu en priorité basse. On peut le faire manuellement depuis le gestionnaire des taches si on le souhaite. Cette option permet de travailler confortablement si continue d'utiliser l'ordinateur pendant le rendu. Notez que si vous utilisez des applications demandant beaucoup de ressources, elle auront l'avantage sur le rendu V-Ray en cours. De plus, et dans tout les cas, un process en priorite low, même si il est peu dérange, sera toujours plus lent. Il n'y a donc pas de raison d'activer cette option pour un usage standard.
La derniere partie des Miscellaneous options sont:
- Objects settings
- Light settings
- Presets buttons
Les boutons Objects settings et Light settings appellent la fenêtre d'options des objets et des lights, identiques à celles qui peuvent être accessibles en cliquant bouton droit de souris sur les objets sélectionnés dans un viewport. Ces features ne sont pas vraiment des paramètres V-Ray.
Presets permet de sauvegarder les paramètres de rendu de la scène courante et de les reloader plus tard, dans un autre scène. Utiliser cette feature fait gagner du temps et évite de setter 50 fois les mêmes valeurs de projet en projet. Cette fonction est uniquement lie au workflow.
Des maps de GI incontrôlables!
Il est remarquable que tout les parametres presente dans ce tutorial, qui controlent l'organisation des donnees de la geometrie de la scene, ne soit pas lie a l'organisation en RAM des maps de GI. Cela signifie que, independament de la taille de l'arbre de BSP, du type de raycaster choisi et de sa Dynamic memory limit, les maps de GI seront integralement chargees en memoire et occuperont toute la place necessaire.
Il peut arriver que le rendu passe toute les etapes preliminaires (lie au chargement de la geometrie), voir meme, commence le calcul de la maps de GI (comme le Light Cache). Et arrive un certain point, le rendu se plante, affichant la fameuse V-Ray exception error. Bien evidement, cela ce produit car la memoire restante une fois la geometrie charge n'est tout simplement pas suffisante pour stocker les donnees supplementaires du LightCache.
Malheureusement, il n'existe aucune solution élégante pour eviter le débordement de la mémoire lors du calcul de la GI. La plus evidante etant de passer en Dynamic Raycaster (si ce n'est pas deja fait) et de diminuer la Dynamic memory limit (ce qui diminuera les performances) pour laisser plus de place disponible pour la map de GI. On peut aussi reduire la taille des maps de GI, ce qui diminue la qualite du rendu final. Un autre compromis (si l'image est tres grande) peut etre de diviser la taille de l'image pour la rendre en plusieurs fois.
Conclusion
C'est tout pour les parametres system (et diverses features) de V-Ray que tout lighter devrait connaitre.
On espere que ce tutorial vous aidera dans les moments difficiles ou les deadlines sont serrees, et que 3ds Max se met, forcement, a ce moment la, a planter. Maintenant que vous comprennez les principes de base des parametres de system de V-Ray, vous devriez etre capable de rendre des scenes enorme sans vous soucier du la RAM de votre ordinateur.
On vous souhaite a tous de beaux rendus.
Ou se voit dans le prochain tutorial, n'hesitez pas a revenir faire un tour par ci et, bien entendu, soutenez nous en achetant nos magnifiques modeles 3d. :D
Si vous avez des questions et/ou des suggestions concernant ce tutorial, n'hesitez pas a ecrire un commentaire, nous vous repondront.
Dernière mise à jour : ven. 08 mai 2020