From BlenderWiki

Jump to: navigation, search
Blender3D FreeTip.gif
IMPORTANT! Do not update this page!
We have moved the Blender User Manual to a new location. Please do not update this page, as it will be locked soon.

Ombres Spot “buffered”

Le panneau Shadow and Spot d’une lampe Spot, avec utilisation des ombres buffered (méthode de génération des ombres Classical ou Classic-Halfway).

Les lampes Spot peuvent utiliser soit les ombres ray-tracées, soit les ombres buffered (~“mises en cache”, “précalculées”). Toutes deux fournissent des options particulières. Les ombres ray-tracées sont généralement plus précises, avec des possibilités supplémentaires comme les ombres transparentes, mais elles sont également relativement plus lentes à rendre. Les ombres buffered sont plus complexes à régler et impliquent plus de simulation, d’approximation, mais la vitesse de rendu en est un avantage clef. Quoi qu’il en soit, elles partagent avec d’autres types de lampes des options d’ombrage commune, décrites ici.

Ombres “buffered”

Panneau Shadow and Spot avec le bouton Buf. Shadow entouré de jaune.
Buf. Shadow
Quand le bouton Buf. Shadow est activé, la lampe Spot actuellement sélectionnée projette des ombres en utilisant un “tampon d’ombrage” (“shadow buffer”) plutôt que le raytracing.

Quand le bouton Buf. Shadow est activé, diverses options supplémentaires apparaissent dans le panneau Shadow and Spot. Voici une description de la plupart de ces options :

Type de génération des ombres buffered entouré de jaune.
Type de génération des ombres buffered
Blender peut générer des ombres buffered de plus d’une manière. Cette liste déroulante vous permet de choisir quelle méthode utiliser à cette fin.
Il y a trois types de génération d’ombres buffered, qui sont les suivants :
  • Classical
  • Classic-Halfway
  • Irregular

Pour plus d’informations sur les différentes méthodes de génération des ombres buffered, suivez ces liens :


Méthodes de génération “Classical” et “Classic-Halfway”

Options des ombres buffered pour les méthodes de génération Classical ou Classic-Halfway.

La méthode Classical était précédemment l’unique manière de générer des ombres buffered disponible dans Blender. Elle utilise un ancien algorithme, qui pouvait présenter des problèmes de précision dans les ombres générées, et était extrêmement sensible aux réglages ShadowBufferSize et Bias, ainsi qu’au problème de l’auto-ombrage associé. Il semble que la méthode Classical de génération des ombres buffered soit en voie d’être déclarée obsolète, et ne reste proposée que pour la compatibilité avec d’anciennes versions de Blender – vous devriez probablement plutôt utiliser la méthode Classic-Halfway.

Classic-Halfway est une méthode améliorée d’ombres buffered – elle est actuellement proposée par défaut dans Blender. Elle fonctionne en prenant la moyenne des deux plus proches valeurs de Z-profondeur, ce qui permet de réduire la valeur de Bias sans (trop) souffrir des problèmes d’auto-ombrage (NdT : phrase originale : “It works by taking an averaged reading of the first and second nearest Z depth values allowing the Bias value to be lowered and yet not suffer as much from Self-Shadowing issues”). Ne pas avoir à augmenter Bias améliore la précision des ombres, car de grandes valeurs de Bias peuvent entraîner la non-projection d’ombres par les petites surfaces, en plus d’éloigner les ombres de leur objet émetteur.

Classic-Halfway ne fonctionne pas très bien quand des faces se superposent, et des problèmes de décalages (“biasing problems”) peuvent survenir.

Actuellement, l’option Halo Step ne fonctionne pas bien dans certains cas. En particulier, quand vous utilisez des plans (pas des volumes), des erreurs peuvent se produire.

Voici maintenant les options spécifiques à ces méthodes de génération :

ShadowBufferSize
Le champ numérique ShadowBufferSize peut prendre une valeur entre 512 et 10240. Il représente la résolution utilisée pour créer la carte d’ombrage (“shadow map”), celle-ci étant ensuite utilisée pour déterminer où se trouvent les ombres dans une scène.
Par exemple, si vous réglez ShadowBufferSize à 1024, vous indiquez que les données d’ombrage de la lampe Spot courante seront écrites dans un tampon (une “image”) de 1024×1024 pixels/échantillons.
Plus la valeur de ShadowBufferSize est élevée, plus les ombres produites sont précises, bien définies, tous réglages égaux par ailleurs, mais les calculs sont d’autant plus longs et gourmands en mémoire. L’inverse est également vrai – plus la valeur de ShadowBufferSize est faible, moins les ombres seront bonnes et précises, et plus les calculs sont rapides et économes en mémoire…
ShadowBufferSize : 512.
ShadowBufferSize : 1024.
ShadowBufferSize : 2048.
ShadowBufferSize : 4096.
Exemples d’ombre buffered pour diverses valeurs de ShadowBufferSize (SpotSi à 145.0°, pas de filtrage – Sample à 1 –, afin de rendre plus visible la dégradation de la qualité des ombres).
De même que ShadowBufferSize affecte directement la qualité des ombres générées, il y a un autre réglage des lampes Spot qui influence indirectement la qualité des ombres buffered : leur “largeur” (l’angle d’ouverture, SpotSi), comme vous pouvez le constater ci-dessous :
SpotSi : 45.0°.
SpotSi : 75.0°.
SpotSi : 115.0°.
SpotSi : 145.0°.
Exemples d’ombre buffered pour diverses valeurs de SpotSi, avec ShadowBufferSize à 512, et pas de filtrage (Sample à 1).
À mesure que SpotSi augmente, vous pouvez constatez que la qualité des ombres portées se dégrade.
Cela s’explique facilement : quand vous élargissez la zone éclairée par une lampe Spot (en augmentant SpotSi), la zone couverte par le tampon d’ombrage doit “s’étirer” pour suivre cet élargissement. Or la résolution ShadowBufferSize n’évolue pas pour compenser cela, donc la qualité (la “définition”) des ombres se dégrade. Si vous voulez conserver une qualité constante de vos ombres buffered quand vous augmentez la valeur SpotSi, vous devez également augmenter la valeur de ShadowBufferSize.
Ce qui précède peut se résumer ainsi :
Si vous avez une large lampe Spot, vous aurez besoin d’une grande valeur de ShadowBufferSize pour obtenir des ombres de qualité. L’inverse est également vrai – plus votre spot sera étroit, plus la qualité des ombres s’améliorera (jusqu’à un certain point).
Algorithmes de filtrage
Les trois boutons Box, Tent et Gauss (mutuellement exclusifs), contrôlent quel algorithme de filtrage utiliser pour appliquer de l’anti-aliasing aux ombres buffered.
Ils sont étroitement liés au champ numérique Samples, car quand ce dernier est à 1, le filtrage des ombres est désactivé, et donc aucun de ces boutons n’aura d’effet…
Box
Les ombres buffered seront lissées (anti-aliasing) par la méthode de filtrage “boîte”.
Il s’agit du filtrage historique de Blender, d’assez mauvaise qualité et surtout utilisé pour les rendus basse résolution, car il produit un lissage très “dur”, ne prenant en compte que les données de sur-échantillonnage contenues dans le “pixel” concerné, sans s’occuper des voisins. Il est souvent utile pour les images contenant beaucoup d’éléments anguleux et de lignes horizontales/verticales (d’après arkavision.com/?page_id=125 (en)).
Samples : 2.
Samples : 4.
Samples : 6.
Exemples d’ombre buffered pour diverses valeurs de Samples, avec la méthode de filtrage Box (SpotSi : 145.0°, ShadowBufferSize : 512).
Tent
Les ombres buffered seront lissées (anti-aliasing) par la méthode de filtrage “tente”.
Il s’agit d’un filtrage simple donnant des résultats assez “durs”, d’usage très général. Il tient compte des valeurs d’échantillonnage des “pixels” voisins quand il calcule la valeur “filtrée” de l’un d’entre eux.
Samples : 2.
Samples : 4.
Samples : 6.
Exemples d’ombre buffered pour diverses valeurs de Samples, avec la méthode de filtrage Tent (SpotSi : 145.0°, ShadowBufferSize : 512).
Gauss
Les ombres buffered seront lissées (anti-aliasing) par la méthode de filtrage “Gauss”.
Elle produit un anti-aliasing très doux/flouté. Cela fait de ce filtrage un excellent choix pour les rendus en haute résolution.
Samples : 2.
Samples : 4.
Samples : 6.
Exemples d’ombre buffered pour diverses valeurs de Samples, avec la méthode de filtrage Gauss (SpotSi : 145.0°, ShadowBufferSize : 512).
Les liens suivants vous donneront plus d’informations sur les diverses méthodes de filtrage/distribution, et leurs usages :
Samples
Le champ numérique Samples peut prendre une valeur comprise entre 1 et 16. Il contrôle le nombre d’échantillons (samples) pris par pixel lors du calcul des cartes d’ombrage.
Plus cette valeur sera élevée, plus les ombres projetées par la lampe courante seront filtrées, adoucies, “anti-aliasées”…, mais plus elles seront longues à calculer (et consommeront de mémoire). La méthode de filtrage utilisée est déterminée par l’activation de l’un des trois boutons Box, Tent ou Gauss (voyez ci-dessus).
Avoir un Samples à 1 revient à désactiver l’anti-aliasing des ombres buffered.
Samples : 1 (c-à-d pas d’anti-aliasing).
Samples : 2.
Samples : 3.
Samples : 4.
Exemples d’ombre buffered pour diverses valeurs de Samples (méthode de filtrage Box ?, SpotSi : 145.0°, ShadowBufferSize : 512).
Soft
Le champ numérique Soft peut prendre une valeur comprise entre 1.0 et 100.0. Il indique la “largeur” de la zone échantillonnée pour l’anti-aliasing des ombres buffered. Plus Soft est élevée, plus la zone de transition entre ombre et lumière, sur les bords des ombres projetées, sera large et douce.
Soft : 1.0.
Soft : 3.0.
Soft : 6.0.
Soft : 9.0.
Exemples d’ombre buffered pour diverse valeurs de Soft (méthode de filtrage Box ?, Samples : 3, SpotSi : 145.0°, ShadowBufferSize : 512).
Les SpotSi et ShadowBufferSize ont été choisis pour exagérer l’aliasing, et mettre en valeur les effets du réglage Soft
Halo et ombre volumétrique.
Halo Step
Le champ numérique Halo Step peut prendre une valeur comprise entre 0 et 12. Il est utilisé pour déterminer si ce Spot projettera des “ombres volumétriques”, et le cas échéant, la qualité de celles-ci.
(Halo et ombre volumétrique) est un exemple de rendu montrant une ombre volumétrique.
Pour obtenir des ombres volumétriques, vous devez avoir le bouton Halo activé, ainsi qu’une valeur de HaloInt suffisamment forte pour que cet effet soit visible. Une fois que ces conditions sont réunies, vous pouvez modifier Halo Step pour contrôler la qualité des ombres volumétriques.
Si Halo Step est réglé à 0, les ombres volumétriques sont désactivées.
Au contraire de la majorité des réglages, la qualité des ombres volumétriques diminue (mais elles sont calculées plus rapidement) à mesure que la valeur de Halo Step augmente, et réciproquement.
Halo Step : 0.
Halo Step : 1.
Halo Step : 6.
Halo Step : 12.
Exemples d’ombre volumétrique pour diverses valeurs de Halo Step (HaloInt : 2.0).
Blender3D FreeTip.gif
Valeur de HaloStep
Une valeur de 8 pour Halo Step est généralement un bon compromis entre vitesse et précision.


SampleBuffers: 1, 4, 9
Le réglage SampleBuffers peut valoir 1, 4 ou 9, et représente le nombre de tampons d’ombrage qui seront utilisés lors du filtrage des ombres buffered.
Cette option est utilisée dans des cas particuliers, comme de très petits objets mouvant et devant générer de très petites ombres (par ex. les strands, “mèches” de cheveux). Il semble que, normalement, les ombres d’un pixel ne sont pas correctement “anti-aliasées”, et qu’augmenter ShadowBufferSize n’aide pas.
Cette option vous permet donc d’avoir une sorte de “super passe” d’anti-aliasing, effectuée par dessus l’habituelle (celle contrôlée par les réglages Box/Tent/Gauss, Samples et Soft).
La valeur 1 désactivera cette option.
De plus hautes valeurs produiront un anti-aliasing plus doux – mais attention : utiliser un SampleBuffers de 4 requerra quatre fois plus de mémoire et de temps de calcul, et ainsi de suite, car Blender devra rendre ce nombre de tampons d’ombrage…
Les “pixels” de chacun des tampons d’ombrage sont légèrement décalés, d’une façon similaire à l’OSA dans le rendu standard (TODO : ne serait-ce pas plutôt similaire au “flou” temporel MBLUR ?).
TODO:
  • Découvrir comment les tampons d’ombrage sont générés (décalage spatial, temporel, ou les deux ?).
  • Découvrir la méthode/l’algorithme utilisé(e) pour mélanger/combiner les tampons d’ombrage calculés en un seul.
  • Expliquer pourquoi cette méthode est meilleure, pour de petites ombres, que la méthode standard (tampon unique).


Méthode de génération “Irregular”

Options des ombres buffered pour la méthode de génération Irregular.

La méthode de génération des ombres buffered Irregular est utilisée pour obtenir des ombres “dures”, aussi précises que des ombres raytracées. Cette méthode est très performante, car elle peut être appliquée en “multi-threadé” (c-à-d en tirant parti des processeurs multi-cœurs).

Le champ numérique Shad A entouré de jaune.

Cette méthode supporte les ombres transparentes. Pour ce faire, sélectionnez d’abord l’objet qui doit recevoir ces ombres transparentes. Puis modifiez sa valeur de Shad A, dans son panneau Material (contexte Shading, sous-contexte Material, F5). Cela ne fonctionnera que lorsque les ombres buffered Irregular sont utilisées.

TODO :

  • Découvrir comment fonctionne cette méthode (et pourquoi elle n’a quasiment aucune option supplémentaire).


Options communes

Les réglages suivants sont communs à toutes les méthodes de génération d’ombre buffered.

Bias
Le champ numérique Bias peut prendre une valeur comprise entre 0.001 et 5.0. Ce réglage est utilisé pour ajouter un léger décalage entre un objet et l’ombre qu’il projette. Cela est parfois nécessaire, à cause de l’imprécision des calculs déterminant si une zone d’un objet est dans l’ombre ou pas. Réduire Bias diminue la distance entre un objet et son ombre. Mais si la valeur de Bias est trop faible, cela peut entraîner des artefacts (lignes, motifs d’interférence…) sur certains objets. Ce problème est souvent appelé “auto-ombrage” (“self-shadowing”), et peut généralement être résolu en augmentant la valeur de Bias, qui est justement là pour ça ! Vous pouvez également essayer de corriger ce problème en augmentant ShadowBufferSize, ou en utilisant une autre méthode de génération des ombres buffered (comme Classic-Halfway ou Irregular).
Bias : 0.001.
Bias : 0.1.
Bias : 0.5.
Bias : 1.0.
Exemples d’ombres buffered pour diverses valeurs de Bias (ShadowBufferSize : 512).
Les images ci-dessus montrent les effets de différentes valeurs de Bias. Avec un Bias à 0.001 la scène est pleine d’interférences d’auto-ombrage, mais l’ombre projetée par la sphère est très proche de celle-ci. Avec un Bias à 0.1, la plupart des artefacts d’auto-ombrage ont disparus (mis à part quelques petites zones sur la sphère), mais l’ombre de la sphère s’est déjà légèrement décalée sur la gauche. Avec des Bias à 0.5 et 1.0, l’ombre projetée par la sphère est franchement à gauche de celle-ci, et il n’y a plus de problème d’auto-ombrage.
Les artefacts d’auto-ombrage ont tendance à toucher plutôt les surfaces courbes que les planes, ce qui signifie que si votre scène contient beaucoup de surfaces courbes, il pourrait être nécessaire d’augmenter les valeurs de Bias et/ou de ShadowBufferSize.
Utiliser de hautes valeurs de Bias n’entraîne pas seulement un éloignement des ombres projetées de leurs objets émetteurs, mais peut aussi avoir pour conséquence que les objets très petits ne projettent plus aucune ombre ! Pour résoudre ce problème, il vous faudra peut-être modifier les valeurs de Bias, ShadowBufferSize, et/ou SpotSi, entre autre…
Ajustement du “Bias”
Vous pouvez maintenant ajuster la valeur de Bias indépendamment pour chaque matériau, en utilisant le curseur LBias (panneau Shaders, sous-contexte Material, contexte Shading, F5). Cette valeur est un facteur avec lequel la valeur Bias de chaque lampe Spot à ombres buffered est multipliée, chaque fois que sa lumière “rencontre” un objet utilisant ce matériau. Les valeurs 0.0 et 1.0 sont équivalentes – elles n’altèrent pas la valeur originale Bias de la lampe.


Capture d’écran montrant la ligne de ClipSta-ClipEnd des ombres buffered.
ClipSta & ClipEnd
Quand une lampe Spot avec ombres buffered est ajoutée à une scène, une ligne supplémentaire apparaît dans sa représentation dans les vues 3D, voyez (Capture d’écran montrant la ligne de ClipSta-ClipEnd des ombres buffered).
Le point de départ du segment représente la valeur de ClipSta, et son extrémité opposée, celle de ClipEnd. ClipSta peut prendre une valeur comprise entre 0.1 et 1000.0, et ClipEnd, entre 1.0 et 5000.0 – ces deux valeurs étant exprimées en unités Blender.
ClipStart (~“limite initiale”) indique le point au-delà duquel les ombres buffered peuvent être projetées par la lampe Spot. Toute ombre projetée qui aurait pu être présente, mais plus proche de la lampe, sera ignorée (aucune ne sera générée).
ClipEnd (~“limite finale”) indique le point au-delà duquel plus aucune ombre buffered ne sera projetée par la lampe Spot. Toute ombre projetée qui aurait pu être présente après ce point sera ignorée (aucune ne sera générée).
ClipSta : 37.0, ClipEnd : 47.0.
ClipSta : 43.0, ClipEnd : 53.0.
ClipSta : 55.0, ClipEnd : 65.0.
ClipSta : 68.0, ClipEnd : 78.0.
Exemples d’ombre buffered pour diverses valeurs de ClipSta et ClipEnd (ShadowBufferSize : 2048).
Seule la zone comprise entre ClipSta et ClipEnd pourra générer des ombres buffered.
Modifier ClipSta et ClipEnd aide à contrôler où les ombres sont générées. Altérer cette “zone de génération” peut permettre d’accélérer le rendu, économiser de la mémoire, et/ou améliorer la précision des ombres.
Quand vous utilisez une lampe Spot avec ombres buffered, pour conserver ou améliorer la qualité des ombres projetées, il est utile d’ajuster ClipSta et ClipEnd afin qu’ils “encadrent” au plus juste la zone où vous souhaiter que les ombres soient générées – réduire cette zone aide à améliorer la qualité des ombres.
Boutons de ClipSta/ClipEnd automatique, entourés de jaune.
ClipStart & ClipEnd automatiques
Au lieu de régler manuellement ClipSta et ClipEnd pour contrôler où les ombres buffered sont générées, vous pouvez laisser Blender choisir les meilleurs valeurs, indépendamment pour chacun de ces deux réglages.
Blender fait cela en déterminant les distances maximales/minimales des vertices visibles du point de vue de la lampe Spot.


Note

Je ne comprends pas très bien comment les ombres SampleBuffers et Irregular fonctionnent, donc si quelqu’un a plus d’infos et peut rendre les choses plus claires, contactez-moi et je mettrai à jour cette page, ou faites-le vous même (dans la version originale !) – ceci est aussi valable pour tout autre problème que vous pourriez détecter… Terrywallwork - 3 Oct 2008, Mont29 14:11, 2 May 2009 (UTC).

Exemples

Ci-dessous, divers exemples utilisant une sphère solide émettant une ombre portée sur un objet plan. Notez comme les différents réglages affectent l’ombre portée. Vous avez de tout, de l’ombre très dure à celle très douce.

Exemples d’ombres de la lampe Spot.



Astuces

Tout objet peut, dans Blender, agir comme une caméra dans la vue 3D. Vous pouvez donc sélectionner la lampe Spot et passer à une vue de son point de vue en pressant Ctrl0 NumPad. Ce que vous verrez, en mode ombré, est montré par (Amélioration du clipping de la lampe Spot).


Amélioration du clipping de la lampe Spot.


L’image de gauche montre un ClipSta trop élevé, celle du centre est bien réglée, et celle de droite montre un ClipEnd trop faible. Tout objet plus près de la lampe Spot que ClipSta ou plus éloigné d’elle que ClipEnd n’est pas du tout affiché. Vous pouvez donc régler finement ces valeurs en vérifiant que tous les objets émettant des ombres sont visibles.

Voyez aussi