Diffusion volumétrique Monte-Carlo complète

9

Je voudrais ajouter la diffusion volumétrique Monte-Carlo complète à mon traceur de trajectoire, mais j'ai du mal à rechercher comment le faire. Permettez-moi d'expliquer ce que je voudrais faire: Diffusion volumétrique Monte Carlo un rayon pénètre dans un matériau, et nous appliquons le BTDF, puis après une certaine distance, un événement de diffusion volumétrique se produit, après quoi (dans le cas isotrope), le rayon se diffuse dans n'importe quelle direction dans le sphère. Cela se répète jusqu'à ce que le rayon quitte le matériau avec un autre BTDF.

Mes questions sont les suivantes:

  1. Comment choisir la distance entre les événements de diffusion? L'intuition me dit qu'il devrait y avoir une sorte de scatter pdf, qui donne la probabilité de se disperser après une certaine distance?
    • Serait-ce correct?
    • Le pdf serait-il une fonction linéaire pour les matériaux isotropes?
    • Cette fonction a-t-elle un nom ou quelque chose que je peux Google?
  2. Beer-Lambert s'appliquerait-il toujours entre les événements scatter?
    • Je pense que non. Étant donné que Beer-Lambert est une simplification des calculs de diffusion réels.
    • Là encore, peut-être que Beer-Lambert est un calcul à la micro-échelle, et le traçage de chemin est à une macro-échelle.
  3. Quel est l'équivalent volumétrique d'un BSDF? Il semble que je puisse utiliser une fonction de phase comme Henyey-Greenstein pour déterminer la nouvelle direction, mais que dois-je utiliser pour l'atténuation?
  4. Enfin, quelles sont les meilleures phrases Google pour la diffusion volumétrique Monte-Carlo?
    • La recherche par diffusion volumétrique, ou SSS, finit par donner des articles, des méthodes et des articles de blog sur les simplifications de la simulation Monte-Carlo complète (dipôle, in-scattering, out-scattering, diffusion, etc.)
RichieSams
la source

Réponses:

7

Tout d'abord, ces notes de cours de Steve Marschner constituent une bonne référence pour le traçage de chemin Monte Carlo dans les médias participants .

La façon dont j'aime penser à la diffusion volumique est qu'un photon voyageant à travers un milieu a une certaine probabilité par unité de longueur d'interagir (être diffusé ou absorbé). Tant qu'il n'interagit pas, il va simplement en ligne droite sans entrave et sans perte d'énergie. Plus la distance est grande, plus la probabilité qu'il interagisse quelque part sur cette distance est grande. La probabilité d'interaction par unité de longueur est le coefficient que vous voyez dans les équations. Nous avons généralement des coefficients séparés pour les probabilités de diffusion et d'absorption, donc .σ = σ s + σ aσσ=σs+σa

Cette probabilité par unité de longueur est exactement à l'origine de la loi de Beer-Lambert. Découpez un segment de rayon en intervalles infinitésimaux, traitez chaque intervalle comme un endroit indépendant possible pour interagir, puis intégrez-le le long du rayon; vous obtenez une distribution exponentielle (avec le paramètre de taux ) pour la probabilité d'interaction en fonction de la distance.σ

Donc, pour répondre directement à vos questions:

  1. Techniquement, vous pouvez choisir la distance entre les événements comme vous le souhaitez, tant que vous pondérez correctement le chemin pour la probabilité qu'un photon puisse le faire entre deux événements adjacents sans interagir avec le milieu. En d'autres termes, chaque segment de chemin dans le milieu contribue à un facteur de poids de , où est la longueur du segment. (Cela suppose un milieu homogène, mais voir la section 4.2 dans les notes Marschner liées ci-dessus pour savoir quoi faire s'il n'est pas homogène.) xeσxx

    Compte tenu de cela, un bon choix généralement pour la distance est de l'échantillonner en importance à partir de la distribution exponentielle. En d'autres termes, vous définissez , puis omettez le facteur du poids du chemin.e - σ xx=(lnξ)/σeσx

    Ensuite, pour tenir compte de l'absorption, vous pouvez utiliser la roulette russe pour tuer une fraction des chemins à chaque événement. Cela est particulièrement nécessaire pour les médias très grands ou infinis (pensez à la diffusion atmosphérique) où le chemin pourrait rebondir pendant une période arbitrairement longue s'il n'est pas tué. Si vous ne vous occupez que de médias petits et pas trop denses, il serait peut-être préférable de simplement prendre en compte un poids de par événement, plutôt que d'utiliser la roulette russe.1 - σ a / σσa/σ1σa/σ

  2. Non, si vous suivez la procédure d'échantillonnage d'importance qui vient d'être décrite, Beer-Lambert est déjà implicitement incorporé dans l'échantillonnage, donc vous ne voulez pas l'appliquer aux poids de chemin.

  3. L'équivalent volumétrique d'un BSDF est la combinaison des coefficients de diffusion et d'absorption et la fonction de phase. Par convention, les coefficients contrôlent l'équilibre global de transmission, de diffusion et d'absorption, tandis que la fonction de phase est toujours normalisée.σs,σa

    Vous pouvez aussi faire quelque chose comme ça pour les BSDF; vous pouvez prendre en compte l'albédo global et faire en sorte que la dépendance directionnelle soit toujours normalisée. C'est surtout une question de convention AFAICT.

  4. Essayez les «médias participants» (c'est-à-dire un «médium» volumétrique - «médias» pluriels - qui «participe» au transport léger) et le «traçage de chemin volumétrique».

Nathan Reed
la source
Comment échantillonneriez-vous les distances pour les coefficients de diffusion / absorption non monochromatiques? Choisissez au hasard un canal, puis divisez-le par 1/3 (dans le cas de RGB ou XYZ)?
RichieSams
1
@RichieSams La recommandation que j'ai vue dans ce cas est d'attribuer à chaque rayon une seule longueur d'onde ou un canal de couleur. Donc, vous calculez essentiellement la diffusion pour chaque canal séparément. Par exemple, en diffusion atmosphérique, la lumière bleue diffuse beaucoup plus fortement que le rouge et a donc besoin de beaucoup plus d'événements de diffusion, et les photons bleus suivront des trajectoires beaucoup plus compliquées que les rouges. Il est donc logique de les simuler séparément, un peu comme la dispersion due à la réfraction. Je n'ai jamais vraiment essayé moi-même.
Nathan Reed
Ahh, ça a du sens. Mais les performances en souffriront ... Pas étonnant que tout le monde veuille estimer les médias participants de Monte-Carlo. Merci pour toutes ces informations!
RichieSams