Articulo de referencia

Dispersión subsuperficial

Dispersión de luz subsuperficial en el mundo real en una fotografía de una mano humana Dispersión subsuperficial generada por computadora en Blender La dispersión subsuperficial...

Dispersión de luz subsuperficial en el mundo real en una fotografía de una mano humana
Dispersión subsuperficial generada por computadora en Blender

La dispersión subsuperficial ( SSS ), también conocida como transporte de luz subsuperficial ( SSLT ), [ 1 ] es un mecanismo de transporte de luz en el que la luz que penetra la superficie de un objeto translúcido se dispersa al interactuar con el material y sale de la superficie potencialmente por un punto diferente. La luz generalmente penetra la superficie y se dispersa varias veces en ángulos irregulares dentro del material antes de salir de nuevo del material en un ángulo diferente al que habría tenido si se hubiera reflejado directamente en la superficie.

La dispersión subsuperficial es importante para obtener gráficos 3D realistas , ya que es necesaria para la representación de materiales como mármol , piel , hojas , cera y leche . Si no se implementa la dispersión subsuperficial, el material puede parecer poco natural, como plástico o metal.

Técnicas de renderizado

La dispersión directa en la superficie (izquierda) más la dispersión subsuperficial (centro) crean la imagen final de la derecha.

Para mejorar la eficiencia de renderizado, muchos algoritmos de gráficos por computadora en tiempo real solo calculan la reflectancia en la superficie de un objeto. En realidad, muchos materiales son ligeramente translúcidos: la luz entra en la superficie, se absorbe, se dispersa y se reemite , potencialmente en un punto diferente. La piel es un buen ejemplo; solo alrededor del 6 % de la reflectancia es directa, el 94 % proviene de la dispersión subsuperficial. [ 2 ] Una propiedad inherente de los materiales semitransparentes es la absorción. Cuanto más lejos viaja la luz a través del material, mayor es la proporción absorbida. Para simular este efecto, se debe obtener una medida de la distancia que la luz ha viajado a través del material. 

Paseo aleatorio SSS

Paseo aleatorio SSS en el trazador de trayectorias de Equinox3D
Reflexión de superficie SSS + PBR de recorrido aleatorio en el trazador de caminos de Equinox3D

Publicada por Pixar, esta técnica se considera de vanguardia y suele integrarse en un motor de renderizado de trazado de rayos. Básicamente, simula lo que les sucede a los fotones reales trazando una trayectoria de luz en el material, generando nuevas trayectorias mediante una distribución lambertiana alrededor de la normal invertida y seleccionando nuevas direcciones en múltiples pasos para dispersar aún más la trayectoria de luz, de ahí el nombre de "paseo aleatorio". La dispersión isotrópica se simula seleccionando direcciones aleatorias de manera uniforme a lo largo de una esfera. La dispersión anisotrópica se simula generalmente mediante la función de fase de Henyey-Greenstein. Por ejemplo, la piel humana presenta dispersión anisotrópica. La profundidad óptica/absorción se aplica en función de la longitud de las trayectorias, utilizando la ley de Beer-Lambert. Las trayectorias pueden terminar dentro del material cuando alcanzan un umbral mínimo de contribución o un número máximo de iteraciones. Cuando una trayectoria (rayo) vuelve a incidir sobre la superficie, se utiliza para captar la radiancia de la escena, ponderada por una distribución lambertiana, como en un motor de trazado de rayos tradicional. Esta técnica es intuitiva y resulta robusta incluso en geometrías delgadas.

Mapa de profundidad basado en SSS

Estimación de profundidad mediante mapas de profundidad

Un método para estimar esta distancia consiste en utilizar mapas de profundidad, [ 3 ] de forma similar al mapeo de sombras . La escena se renderiza desde el punto de vista de la luz en un mapa de profundidad, de modo que se almacena la distancia a la superficie más cercana. A continuación, el mapa de profundidad se proyecta sobre él utilizando el mapeo de texturas proyectivo estándar y la escena se vuelve a renderizar. En este paso, al sombrear un punto determinado, la distancia desde la luz en el punto donde el rayo entró en la superficie se puede obtener mediante una simple consulta de textura. Restando este valor del punto donde el rayo salió del objeto, podemos obtener una estimación de la distancia que la luz ha recorrido a través del objeto.

La medida de distancia obtenida mediante este método puede utilizarse de diversas maneras. Una de ellas consiste en indexar directamente una textura unidimensional creada por un artista, cuya intensidad disminuye exponencialmente con la distancia. Este enfoque, combinado con otros modelos de iluminación más tradicionales, permite crear diferentes materiales como mármol , jade y cera .

Potencialmente, pueden surgir problemas si los modelos no son convexos, pero se puede utilizar el método de separación de profundidad [ 4 ] para evitar este inconveniente. De manera similar, este método puede emplearse para tener en cuenta las diferentes densidades bajo la superficie, como las del hueso o el músculo, y así obtener un modelo de dispersión más preciso.

Como se puede apreciar en la imagen de la cabeza de cera a la derecha, la luz no se difunde al atravesar el objeto con esta técnica; las características posteriores se muestran claramente. Una solución consiste en tomar múltiples muestras en diferentes puntos de la superficie del mapa de profundidad. Como alternativa, se puede utilizar un método de aproximación diferente, conocido como difusión en el espacio de texturas .

Difusión del espacio de texturas

Como se mencionó al inicio de esta sección, uno de los efectos más evidentes de la dispersión subsuperficial es el desenfoque general de la iluminación difusa. En lugar de modificar arbitrariamente la función de difusión, esta se puede modelar con mayor precisión simulándola en el espacio de texturas . Esta técnica se utilizó por primera vez en la renderización de rostros en Matrix Reloaded [ 5 ] , pero también se emplea en el ámbito de las técnicas de renderizado en tiempo real.

El método despliega la malla de un objeto usando un sombreador de vértices, calculando primero la iluminación basada en las coordenadas de vértice originales. Luego, los vértices se remapean usando las coordenadas de textura UV como la posición en pantalla del vértice, adecuadamente transformadas del rango [0, 1] de coordenadas de textura al rango [-1, 1] de coordenadas de dispositivo normalizadas. Al iluminar la malla desplegada de esta manera, obtenemos una imagen 2D que representa la iluminación en el objeto, que luego se puede procesar y volver a aplicar al modelo como un mapa de luz . Para simular la difusión, la textura del mapa de luz se puede simplemente desenfocar. Renderizar la iluminación en una textura de menor resolución proporciona en sí mismo una cierta cantidad de desenfoque. La cantidad de desenfoque necesaria para modelar con precisión la dispersión subsuperficial en la piel todavía está bajo investigación activa, pero realizar solo un desenfoque modela mal los efectos reales. [ 6 ] Para emular la naturaleza dependiente de la longitud de onda de la difusión, las muestras utilizadas durante el desenfoque (gaussiano) se pueden ponderar por canal. Se trata de un proceso un tanto artístico. En el caso de la piel humana, la mayor dispersión se observa en el rojo, seguida del verde, mientras que el azul presenta muy poca dispersión.

Una de las principales ventajas de este método es su independencia de la resolución de pantalla; el sombreado se realiza solo una vez por texel en el mapa de texturas, en lugar de por cada píxel del objeto. Por lo tanto, es fundamental que el objeto tenga un buen mapeo UV, de modo que cada punto de la textura se corresponda con un único punto del objeto. Además, el uso de la difusión en el espacio de texturas aporta uno de los factores que contribuyen a la suavidad de las sombras, mitigando así la falta de realismo del mapeo de sombras .

Véase también

Referencias

  1. "Finalización: Transporte de luz subsuperficial" . Wiki de POV-Ray . 8 de agosto de 2012.
  2. Krishnaswamy, A; Baronoski, GVG (2004). "Un modelo espectral basado en la biofísica de la interacción de la luz con la piel humana" (PDF) . Computer Graphics Forum . 23 (3). Blackwell Publishing: 331. doi : 10.1111/j.1467-8659.2004.00764.x . S2CID 5746906 . 
  3. Green, Simon (2004). "Aproximaciones en tiempo real a la dispersión subsuperficial". GPU Gems . Addison-Wesley Professional: 263–278 .
  4. Nagy, Z; Klein, R (2003). Depth-Peeling for Texture-based Volume Rendering (PDF) . 11.ª Conferencia del Pacífico sobre Gráficos por Computadora y Aplicaciones. págs. 429–433 . doi : 10.1109/PCCGA.2003.1238289 . ISBN  0-7695-2028-6.
  5. Borshukov, G; Lewis, JP (2005). "Renderizado realista de rostros humanos para "Matrix Reloaded"" (PDF) . Gráficos por computadora . ACM Press.
  6. d'Eon, E (2007). "Renderizado avanzado de piel" (PDF) . GDC 2007 .
  • Sitio web de dispersión subterránea de Henrik Wann Jensen
  • Un artículo académico de Jensen sobre el modelado de la dispersión subsuperficial.
  • Dispersión subsuperficial: Uso del sombreador Misss_Fast_Simple_Maya – Tutorial de Maya
  • Tutorial de 3ds Max: La guía definitiva para usar la dispersión subsuperficial en 3ds Max.
  • Dispersión subsuperficial en Blender .