Page soumise par Mooky
<= Page précédante <= | Sommaire | => Page suivante => |
15.1 Les utilisations de la radiosité
A partir de Blender v2.31
Tout d'abord, un peu de théorie ! Vous pouvez passer directement à la section suivante et revenir ici plus tard si vous vous posez des questions.
Durant les années 80 et 90, la radiosité a été un sujet "chaud" de l'informatique graphique 3D. Différentes méthodes ont été développées, celles qui ont eu le plus de succès étaient basées sur le concept d' "affinement progressif" avec un schéma de "subdivision adaptative" (dans le sens d'amélioration progressive). C'est cette méthode qu'utilise Blender ( 100 fois sur le métier remettez votre ouvrage !!!!).
Pour utiliser la radiosité dans Blender de façon optimale, il est important de bien comprendre les principes suivants:
- Finite Element Method = Méthode du Nombre fini d'éléments
De nombreuses méthodes de calcul ou de
simulations graphiques considèrent la complexité du
réel selon un nombre fini (déterminé)
d'éléments. Pour avoir une solution visuellement
intéressante (et scientifiquement prouvée), il n'est pas
nécessaire d'aller jusqu'à un niveau moléculaire
de détails. Vous pouvez très bien réduire votre
problème à un nombre fini (déterminé)
d'éléments représentatifs et explicites. C'est un
fait admis que de tels systèmes aboutissent rapidement à
une solution stable et fiable.
La radiosité est un exemple typique de cette
méthode, attendu que chaque face est considérée,
ainsi que son émission de lumière, dans son ensemble,
comme un nombre fini d'éléments.
- Patches and Elements
Dans l'univers de la radiosité, nous
distinguons deux types de faces 3D :
Patches (Emetteurs). Ce sont des
triangles ou des carrés capables d'émettre de
l'énergie. Pour une résolution rapide, il est
important qu'ils soient aussi peu nombreux que possible. Pour rendre
les choses encore plus rapide, on considère dans la
modélisation, que l'énergie est irradiée par leur
centre ; leur taille ne doit pas être trop importante pour une
répartition réaliste de l'énergie. (Par exemple,
quand un objet est situé juste au-dessus du centre d'un de ces
émetteurs (Patches), toute l'énergie qu'il émet
est obscurcie par cet objet, même s'il est très
étendu ! Un tel émetteur (Patch) doit être
subdivisé en plusieurs plus petits).
Elements (Récepteurs). Ce sont
des triangles ou des carrés qui reçoivent de
l'énergie. Chaque récepteur (Element) est
associé à un émetteur (Patch). En fait, les
émetteurs (Patches) sont subdivisés en de nombreux petits
récepteurs (Elements). Quand un récepteur (Element)
reçoit de l'énergie, il en absorbe une partie (en
fonction de la couleur) et rend le reste (énergie non
utilisée) à l'émetteur (Patch), pour une radiation
ultérieure. Comme les récepteurs (Elements) sont aussi
les faces que nous affichons, il est important qu'ils soient aussi
petits que possible, pour exprimer les limites subtiles des ombres et
les dégradés de lumière.
- Affinage progressif
Cette méthode, au départ, examine
tous les émetteurs disponibles. Celui qui a la réserve
d'énergie la plus importante, est sélectionné pour
irradier toute son énergie dans l'environnement. Les
récepteurs de cet environnement capturent cette énergie
et l'ajoutent à celle qui est en réserve dans leurs
émetteurs associés. Puis, le même processus
recommence avec l'émetteur qui possède maintenant
le plus d'énergie en réserve. Et cela continue pour tous
les émetteurs jusqu'à ce qu'il n'y ait plus
d'énergie capturée ou que l'énergie en
réserve ait atteint une certaine valeur.
- La méthode de l'hémicube (comme hémisphère) ou demi-cube
Le calcul de la quantité d'énergie
que chaque émetteur (Patch) donne à un récepteur
(Element) est transmise par l'intermédiaire
"d'hémicubes". Situé exactement au centre de
l'émetteur, un hémicube (littéralement un
"demi-cube") est constitué par 5 petites images de
l'environnement. Pour chaque pixel de ces images, un récepteur
visible est codé d'après sa couleur, et la
quantité d'énergie transmise peut être
calculée. Utilisée avec certains matériels
spécialisés ("hardware") cette méthode peut
être accélérée de façon
significative. Dans Blender, les calculs par "hémicubes" sont
traités par logiciel ("software").
Cette méthode est, en fait, une
simplification et une optimisation de la formule de la radiosité
"réelle" (facteur de forme différentielle). Pour cette
raison, la résolution de l'hémicube (le nombre de pixels
de ses images) est approximatif et son réglage avec
précaution est important pour éviter l'apparition de
crénelages.
- Subdivision "améliorative"
Puisque la taille des émetteurs (Patches) et
des récepteurs (Elements) d'un maillage définie la
qualité de la radiosité, des schémas de
subdivision automatique ont été développés
pour définir leur taille optimale. Blender possède deux
méthodes de subdivision automatique :
1. Subdivide-shoot Patches. (Subdivision
par tir des émetteurs). En irradiant l'énergie dans
l'environnement et en comparant les valeurs de l'hémicube avec
la valeur réelle mathématique ("form factor"), les
erreurs peuvent être détectées indiquant ainsi la
nécessité de futures subdivisions de l'émetteur.
Les résultats donnent des émetteurs plus petits, un temps
de résolution plus long, mais un réalisme plus important.
2. Subdivide-shoot Elements. (Subdivision
par tir des récepteurs). En irradiant l'énergie dans
l'environnement et en détectant les changements importants
d'énergie dans un émetteur, les récepteurs qui lui
sont associés sont subdivisés à un niveau
supplémentaire. Les résultats sont : des
récepteurs plus petits, un temps de résolution plus long,
peut être plus de crénelage, mais un niveau de
détails plus élevé.
- Affichage et post-processus.
Dans Blender, la subdivision des récepteurs
est "équilibrée", cela signifie que chaque
récepteur (Element) ne diffère que d'un seul niveau de
subdivision par rapport à ses voisins. C'est important pour un
affichage correct et agréable de la radiosité avec
l'algorithme de Gouraud. Généralement, après
résolution, on obtient des milliers de petits récepteurs
(Elements). Par filtrage et élimination des doublons, leur
nombre est considérablement réduit sans pour autant
altérer la qualité de la radiosité. Blender stocke
les quantités d'énergie sous forme de nombres à
virgule flottante. Cela rend possible les réglages dans les
situations d'éclairage très difficile, en changeant les
valeurs du multiplicateur standard et de la composante gamma.
- Radiosité pour modéliser
L'ultime étape remplace le maillage en
entrée par la solution de radiosité (bouton Replace
Meshes). Alors les couleurs des points sont converties, de nombres
à virgule flottante vers des valeurs RGB codées sur 24
bits. Les anciens "objets maillages" (Mesh Objects) sont
supprimés et remplacés par un ou plusieurs nouveaux
"objets maillages". Vous pouvez maintenant supprimer les données
utilisées pour les calculs de radiosité (Free Data).
Les nouveaux objets ont un "Matériel" par défaut qui
permet de leur appliquer un rendu. Deux réglages sont importants
pour travailler avec les "couleurs de sommets" (vertex colours) :
VColPaint. Cette option remplace les valeurs
RGB normales du Matériel par les "couleurs de sommets" (vertex
colours). Vous devez ajouter des Lampes pour voir les couleurs de la
radiosité. En fait, vous pouvez utiliser les éclairages
et les ombrages de Blender, comme d'habitude, et obtenir un "look" de
radiosité correct lors du "rendu".
VColLight. Les "couleurs de sommets" (vertex
colours) sont ajoutées à la lumière lors du
"rendu". Même sans Lampe, vous pouvez quand même voir le
résultat. Avec cette option, les "couleurs de sommets" (vertex
colours) sont pré-multipliées par la couleur RGB du
Matériel. Cela donne des ajustages de ton précis de la
quantité de "lumière de radiosité" ('Radiosity
light') lors du "rendu" final.
Comme souvent dans Blender, les réglages de la Radiosité sont regroupés dans un bloc de donnés. Celui-ci est associé à une Scène, et toute Scène de Blender peut avoir un bloc de donnés différent. Cela permet de diviser des environnements complexes en plusieurs Scènes avec chacune leur solution de radiosité indépendante.
<= Page précédante <= | Sommaire | => Page suivante => |
Page soumise par Mooky