From BlenderWiki
Traduction effectuée d’après cette révision de la version anglaise.
[edit] Rendu avec radiosité
Mode: Tous les modes
Panneau: Contexte Scene → sous-contexte Render → Render
Raccourci clavier: F10
[edit] Description
Supposons que vous ayez une scène complète, et que vous vouliez la rendre avec la radiosité activée. La première chose à comprendre lorsque l’on utilise la radiosité est qu’aucune lampe n’est nécessaire, mais que des meshes avec un réglage de matériau Emit supérieur à zéro sont requis, puisque qu’ils seront les sources lumineuses. Emit se trouve en bas à droite du panneau Shaders (sous-contexte Material). Typiquement, une valeur de 0.5 ou moins donne un doux rayonnement.
Vous pouvez construire la scène de test montrée dans (Scène pour les tests de Radiosité), c’est assez facile. Faites juste un grand cube pour la pièce, donnez à chaque mur un matériau différent, ajoutez un cube et un cube étiré (c-à-d un parallélépipède rectangle !) à l’intérieur de la pièce, et ajoutez un plan – avec une valeur de Emit non-nulle – près du plafond, pour simuler une lampe Area.
Vous assignez les matériaux aux modèles de la même manière que d’habitude. La valeur RGB (Red=Rouge, Green=Vert, Blue=Bleu) du matériau détermine la couleur du “patch” (~“zone”). La valeur Emit du matériau détermine si le Patch est initialisé avec une énergie au démarrage de la simulation de radiosité. Emit est multipliée avec l’aire du patch pour calculer la quantité initiale d’énergie non émise.
Faces émettrices
Contrôlez le nombres “d’emitters” (~“émetteurs”) dans la console de Blender ! S’il est à zéro rien d’intéressant ne peut se produire. Vous devez avoir au moins un Patch émetteur pour avoir de la lumière et donc un effet sur la scène.
|
[edit] Activer la radiosité
Le bouton Radio du panneau Render active les calculs de radiosité lors du rendu. Il y aura vérification de tous les objets dans la scène, et ceux avec un matériau ayant un Emit non-nul émettront de la lumière.
[edit] Options de matériau
Quand vous créez vos matériaux, assurez-vous qu’ils aient tous Radio activé dans le panneau Links and Pipeline.
Vous devez aussi avoir le réglage Ambient non-nul, pour que le matériau puisse recevoir la lumière émise, puisque celle-ci devient partie intégrante de la lumière ambiante. Ce réglage se trouve dans le panneau Shaders.
Les objets “lumineux” doivent également avoir un matériau avec Emit non-nul (également dans le panneau Shaders).
Puisque, dans la réalité, tous les objets (ré-)émettent au moins un peu de lumière dans l’environnement, une bonne habitude est de toujours régler les nouveaux matériaux ainsi :
- Activer Radio ;
- Régler Ambient non-nul (typiquement à 0.1) ;
- Régler Emit non-nul (typiquement à 0.1).
[edit] Options de rendu
- Hemires:
- La définition de l’hémicube – les images codées en couleurs utilisées pour trouver les Elements qui sont visibles depuis un Patch émetteur, et qui donc reçoivent de l’énergie. Les hémicubes ne sont pas conservés, mais recalculés pour chaque patch émettant de l’énergie. La valeur de Hemires: détermine la qualité de la radiosité… et joue beaucoup sur le temps de calcul !
- Max Iterations:
- Le maximum d’itérations pour le calcul de la radiosité. S’il est réglé à zéro le calcul se poursuivra jusqu’à ce que le critère de convergence soit atteint. Vous êtes fortement encouragés à régler ce paramètre à une valeur non-nulle, typiquement au-dessus de 100.
- Mult:, Gamma:
- La dynamique du calcul de radiosité est bien plus vaste que celle permise par de simples valeurs RGB 24 bits. Quand les elements sont (re)convertis en faces, leurs valeurs d’énergie sont converties en couleurs RGB, en utilisant les réglages Mult: et Gamma:. Avec Mult: vous pouvez multiplier la valeur de l’énergie (c-à-d augmenter/diminuer la luminosité), avec Gamma: vous pouvez modifier son contraste.
- Convergence:
- Quand la quantité d’énergie non-émise dans un environnement est inférieure à cette valeur, le calcul de radiosité s’arrête. La valeur initiale d’énergie non-émise dans un environnement est multipliée par la surface des patches émetteurs. À chaque itération, de l’énergie est absorbée, ou disparaît quand l’environnement n’est pas un volume clos. Dans le système de coordonnées de Blender un émetteur a généralement une petite surface (comme dans les exemples). La valeur de Convergence: est divisée par 1000 avant calcul pour cette raison.
[edit] Exemples
Le rendu prendra plus de temps que d’habitude, dans la console vous noterez un compteur en action. Le résultat sera assez décevant (Rendu avec radiosité pour des meshes grossiers (à gauche) et des meshes fins (à droite), à gauche) car le rendu automatique de radiosité ne fait pas de subdivision adaptative ! Sélectionnez tous les meshes, les uns après les autres, et en mode Edit subdivisez-les au moins trois fois. La pièce, qui est plus grande que les autres meshes, peut même être subdivisée quatre fois. Réglez Max Iterations: un peu plus haut, 300 ou plus. Essayez un nouveau rendu (F12). Cette fois le rendu sera encore plus long mais les résultats seront bien plus agréables, avec ombres douces et “mélange” de couleurs (Rendu avec radiosité pour des meshes grossiers (à gauche) et des meshes fins (à droite), à droite).
Note
Lors du rendu de la radiosité, Blender agit comme lors d’un rendu normal, ce qui signifie que les textures, les courbes, les surfaces et mêmes les objets “dupliframed” sont correctement gérés.
|
[edit] Astuces
Remarquez que l’émission de la lumière est dirigée par la direction des normales du mesh, donc le plan émettant la lumière doit avoir une normale pointant vers le bas et le cube “pièce” doit avoir ses normales pointées vers l’intérieur (faites un Flip Normals si nécessaire !). Passez dans les boutons Radiosity (
) du contexte Shading. Les panneaux, montrés dans (Boutons de radiosité pour le rendu avec radiosité), sont au nombre de deux : Radio Rendering qui gère la radiosité utilisée pour le rendu avec radiosité (cas présent) et Radio Tool, qui gère la radiosité comme outil de modelage (voyez « “Baking” de radiosité »).
[edit] Détails techniques
Durant la fin des années 80 et le début des années 90, la radiosité était un sujet brûlant dans le graphisme 3D sur ordinateur. Beaucoup de méthodes différentes furent développées, celles qui eurent le plus de succès étaient basées sur la méthode du “raffinement progressif” (“progressive refinement”) avec le principe de “subdivision adaptative”. Et c’est cela que Blender utilise. Pour être capable de tirer le maximum de la radiosité dans Blender, il faut comprendre les principes suivants :
- Méthode de l’Element fini
- Beaucoup de techniques de rendu graphique ou de simulation utilisent une simplification de la réalité : les “éléments finis”. Pour un résultat visuellement bon (voir même scientifiquement valide), il n’est pas toujours nécessaire de plonger à un niveau moléculaire de détails. Vous pouvez au contraire réduire le problème à un nombre fini d’éléments représentatifs et bien déterminés. Il est connu que ce type de système converge rapidement vers une solution stable et valable. La technique de radiosité est un exemple typique de méthode avec éléments finis, en ce que chaque face est considérée comme un “élément fini” et son émission de lumière prise comme un tout.
- Patches et Elements
- Dans l’univers de la radiosité, on distingue deux types de faces :
- Patches :
- Ce sont les triangles ou les quadrangles capables d’émettre de l’énergie. Pour un rendu rapide il est important d’avoir aussi peu de ces patches que possible. Mais, pour accélérer les choses, l’énergie est modélisée comme étant irradiée uniquement par le centre du patch ; leur taille devrait en conséquence être suffisamment petite pour obtenir une distribution de l’énergie réaliste (par exemple, quand un petit objet est placé devant le centre du patch, toute l’énergie émise par celui-ci est bloquée par cet objet, même si le patch est plus grand ! Ce dernier devrait être subdivisé en plus petits patches).
- Elements :
- Ce sont les triangles et quadrangles qui reçoivent de l’énergie. Chaque Element est associé à un Patch. En fait, les patches sont subdivisés en plein de petits elements. Quand un element reçoit de l’énergie il en absorbe une partie (dépendant de sa couleur) et passe ce qui reste au patch, pour être ré-émise ultérieurement. Puisque les elements sont aussi les faces que nous rendons, il est important de les avoir aussi petites que possible, pour rendre les subtiles bordures des ombres et les dégradés d’éclairage.
- Raffinement progressif
- Cette méthode commence par examiner tous les patches présents. Le patch avec le plus d’énergie non-émise est sélectionné pour émettre toute son énergie dans l’environnement. Les elements de cet environnement reçoivent cette énergie, et en ajoute une partie à l’énergie non-émise de leurs patches associés (le reste étant absorbé). Le processus recommence alors avec le patch ayant maintenant le plus d’énergie non-émise. Cela se poursuit pour tous les patches jusqu’à ce qu’il n’y ait plus d’énergie non-émise, où qu’elle ait convergé sous une certaine valeur.
- La méthode de l’Hémicube
- Le calcul de la quantité d’énergie que chaque patch transmet à chaque element est réalisé en utilisant les “hémicubes”. Exactement placé un centre d’un patch, un hémicube (littéralement, moitié de cube, comme pour hémisphère) consiste en cinq petites images de l’environnement. Pour chaque pixel de ces images, un element visible donné est codé par une couleur précise, et la quantité d’énergie transmise peut alors être calculée. Avec un matériel spécialisé, la méthode des hémicubes peut être fortement accélérée. Cependant, dans Blender, les calculs d’hémicubes sont faits “en software”. Cette méthode est en fait une simplification/optimisation de la “vraie” formule de radiosité (“form factor differentiation”, “différenciation du facteur de forme” (???)). Pour cette raison la résolution de l’hémicube (le nombre de pixels dans ses images) est approximée et son réglage précis est très important pour prévenir les artefacts d’aliasing.
- Subdivision adaptative
- Puisque la taille des Patches et des Elements dans un mesh détermine la qualité du résultat de la radiosité, des algorithmes de subdivision automatique ont été développés pour définir la taille optimale des patches et elements. Blender a deux méthodes de subdivision automatique :
- 1. Test de subdivision pour les Patches :
- En émettant de l’énergie dans l’environnement, et en comparant les résultats de la méthode des hémicubes avec ceux de la vraie formule “facteur de forme”, des erreurs peuvent être détectées qui révèlent la nécessité d’une subdivision du patch. Il en résulte des patches plus petits et un temps de calcul plus long, mais plus de réalisme dans le résultat.
- 2. Test de subdivision pour les Elements :
- En émettant de l’énergie dans l’environnement, et en détectant les transitions brusques (les forts gradients d’énergie) au sein d’un patch, on détermine si les elements de ce patch doivent être subdivisés. Il en résulte de plus petits elements et un plus long temps de rendu (et peut-être plus d’aliasing), mais aussi un meilleur niveau de détails.
- Affichage et “Post Processing”
- La subdivision des elements dans Blender est pondérée, c’est-à-dire que chaque element n’a qu’au maximum un niveau de subdivision de différence avec ses voisins. C’est important pour un rendu correct et agréable du résultat de la radiosité avec un ombrage de Gouraud. En général, après les calculs de radiosité, le résultat est constitué de milliers de petits elements. En les testant et en enlevant les “doublons”, le nombre d’elements peut être fortement réduit sans diminuer la qualité du résultat. Blender stocke les valeurs d’énergie en “nombres flottants”. Cela permet des éclairages “spectaculaires”, en changeant les valeurs de multiplication et de gamma (c’est le même principe que le rendu HDR des cartes graphiques modernes).
- La radiosité pour le modelage
- L’étape finale peut être de remplacer les meshes d’origine par le résultat de la radiosité (boutons Replace Meshes). À ce moment les couleurs des vertices sont converties d’une valeur flottante en une valeur RGB 24 bits. Les meshes originaux sont alors effacés et remplacés par un ou plusieurs nouveaux objets Mesh. Vous pouvez alors effacer les données de la radiosité avec Free Data. Les nouveaux objets ont un matériau par défaut qui permet un rendu immédiat. Deux paramètres d’un matériau sont importants pour utiliser les couleurs de vertex :
- VColPaint :
- Cette option traite les couleurs de vertex comme remplaçantes des valeurs RGB normales du matériau. Vous devez ajouter des lampes de manière à voir les couleurs produites par la radiosité. En fait, vous pouvez utiliser l’éclairage et l’ombrage de Blender comme d’habitude, tout en conservant l’aspect soigné de la radiosité dans le rendu.
- VColLight :
- Les couleurs de vertex sont ajoutées à la lumière au moment du rendu. Même sans lampe, vous pouvez profiter du résultat. Avec cette option, les couleurs de vertex sont pré-multipliées avec les couleurs RGB du matériau. Cela permet un réglage fin de la quantité de “lumière de radiosité” dans le rendu final.
Comme pour tout dans Blender, les données de radiosité sont stockées dans un Datablock (“bloc de données”). Il est attaché à une scène, et chaque scène de Blender peut avoir un datablock de radiosité différent. Utilisez cette propriété pour diviser les environnements complexes en différentes scènes avec des datablocks de radiosité indépendants.











![[]](/skins/blender/open.png)
