Respuestas:
La aparición de volúmenes (también llamados medios participantes) en la naturaleza es causada por pequeñas partículas, como polvo, gotas de agua o plancton, que están suspendidas en el fluido circundante, como el aire o el agua. Estas partículas son objetos sólidos, y la luz refracta o se refleja de estos objetos como lo haría en una superficie normal. En teoría, los medios participantes podrían ser manejados por un rastreador de rayos tradicional con solo intersecciones de superficie.
Por supuesto, el gran número de estas partículas hace que no sea posible rastrearlas individualmente. En cambio, se aproximan a un modelo estadístico: debido a que las partículas son muy pequeñas y la distancia entre las partículas es mucho mayor que el tamaño de partícula, las interacciones individuales de la luz con las partículas pueden modelarse como estadísticamente independientes. Por lo tanto, es una aproximación razonable reemplazar las partículas individuales con cantidades continuas que describen la interacción "promedio" de partículas de luz en esa determinada región en el espacio.
Para el transporte de luz volumétrica con base física, reemplazamos las inconcebiblemente muchas partículas con un medio participante continuo que tiene dos propiedades: el coeficiente de absorción y el coeficiente de dispersión. Estos coeficientes son muy convenientes para el trazado de rayos, ya que nos permiten calcular la probabilidad de que un rayo interactúe con el medio, es decir, la probabilidad de golpear una de las partículas, en función de la distancia.
El coeficiente de absorción se denota . Digamos que un rayo de luz quiere viajar t metros dentro del medio participante; la probabilidad de atravesar sin absorber, es decir, no golpear una de las partículas y ser absorbida por ella, es e - t ⋅ σ a `. A medida que aumenta t, podemos ver que esta probabilidad llega a cero, es decir, cuanto más tiempo recorremos el medio, más probabilidades hay de golpear algo y ser absorbido. Cosas muy similares son válidas para el coeficiente de dispersión σ s : la probabilidad de que el rayo no golpee una partícula y se disperse es e - t ⋅ σ s; es decir, cuanto más viajamos a través de un medio, más probable es que golpeemos una partícula y nos dispersen en una dirección diferente.
Por lo general, estas dos cantidades se pliegan en un solo coeficiente de extinción, . La probabilidad de viajar t metros a través de un medio sin interactuar con él (ni ser absorbido ni dispersado) es entonces e - t ⋅ σ t . Por otro lado, la probabilidad de interactuar con un medio después de t metros es 1 - e - t ⋅ σ t .
La función de fase describe cómo se dispersa el rayo y depende de la naturaleza de las partículas; la función de fase de Rayleigh describe la dispersión de partículas esféricas más pequeñas que la longitud de onda de la luz (por ejemplo, nuestra atmósfera); la función de fase Mie describe la dispersión de partículas esféricas de tamaño similar a la longitud de onda (por ejemplo, gotas de agua); en gráficos, generalmente se usa la función de fase Henyey-Greenstein , originalmente aplicada a la dispersión del polvo interestelar.
, el rayo salió ileso e interactúa con la superficie como de costumbre.
Esta publicación fue solo una pequeña introducción al renderizado con los medios participantes; entre otras cosas, ignoré completamente los coeficientes espacialmente variables (que necesitas para nubes, humo, etc.). Las notas de Steve Marschner son un buen recurso, si está interesado. En general, los medios participantes son muy difíciles de reproducir de manera eficiente, y puede ser mucho más sofisticado que lo que describí aquí; hay mapeo volumétrico de fotones , haces de fotones , aproximaciones de difusión , muestreo de importancia conjunta y más. También hay trabajo interesante en medios granulares. que describe qué hacer cuando el modelo estadístico se descompone, es decir, las interacciones de partículas ya no son estadísticamente independientes.
Una forma de hacerlo, que no es exactamente la solución "ir a", pero que puede funcionar bien, es encontrar la distancia que recorrió el rayo a través del volumen y usar la integración de alguna función de densidad para calcular la cantidad de "cosas" golpear.
Aquí hay un enlace con un ejemplo de implementación: http://blog.demofox.org/2014/06/22/analytic-fog-density/
Depende del efecto del volumen.
Los efectos de volumen uniformes que no pertenecen a la dispersión pueden simularse simplemente calculando las distancias de entrada y salida de rayos.
De lo contrario, debe hacer la integración de la ruta de rayos, también conocida como marcha de rayos. Para evitar la necesidad de disparar rayos secundarios, la marcación de rayos a menudo se combina con algún tipo de caché, como mapas de profundidad, mapas profundos, mapas de ladrillos o nubes voxel para sombrear la luz, etc. De esta manera, no necesariamente tiene que marchar toda la escena. El almacenamiento en caché similar a menudo se realiza con la textura procesal del volumen.
También es posible convertir la textura en primitivas de superficie como cajas, esferas o planos que tienen una textura de borde suave adecuada. Luego puede usar técnicas de renderizado normales para resolver el efecto volumétrico. El problema con esto es que generalmente necesita muchas primitivas. Además, la forma de la primitiva puede aparecer como un muestreo demasiado uniforme.