¿Qué son las armónicas esféricas y las sondas de luz?

14

¿Qué son las armónicas esféricas y las sondas de luz ? ¿Qué tan útiles son en gráficos por computadora? ¿Qué hacen exactamente? He escuchado la palabra armónicos esféricos y sondas de luz en todas partes, desde presentaciones de letreros hasta publicaciones de blog.

Recientemente, Matt Pettineo publicó una serie de blogs de 6 partes sobre ellos, pero todavía no entiendo lo que son.

¿Es otra forma de mejorar la iluminación ambiental?

Arjan Singh
fuente

Respuestas:

11

Conceptos básicos de armónicos esféricos

Los armónicos esféricos son una forma de representar una función 2D en una superficie de una esfera. En lugar de dominio espacial (como cubemap), SH se define en el dominio de frecuencia con algunas propiedades y operaciones interesantes relevantes para la iluminación que se pueden realizar de manera eficiente. Con el "orden" creciente de SH, puede representar frecuencias más altas (detalles) de funciones como se ilustra en la imagen a continuación ( es el orden SH). Al escalar y sumar las "funciones básicas" a continuación, puede representar cualquier tipo de función 2D en la esfera hasta la frecuencia definida por las funciones. Las funciones básicas se definen con " polinomios Legendre asociados ", pero generalmente no necesita derivarlos usted mismo, pero puede usar derivaciones existentes para armónicos esféricos reales . lingrese la descripción de la imagen aquí

Una de esas operaciones que se puede realizar de manera eficiente en SH se llama " convolución ", lo que significa integrar el producto de dos funciones 2D esféricas sobre una esfera. Esta es una operación común en los cálculos de iluminación, por ejemplo, una de las funciones podría ser su iluminación incidente y una función el BRDF. Cuando se representa como SH, esta operación es simplemente el producto escalar de dos vectores de coeficiente SH.

Otra operación interesante es la capacidad de realizar un filtrado de paso bajo eficiente. Debido a que SH está representado en el dominio de frecuencia, esto es simplemente cuestión de escalar o poner a cero algunos de los coeficientes SH. Por otro lado, algunas otras operaciones pueden ser difíciles de realizar en SH en comparación con el dominio espacial, por ejemplo, si desea rotar la función representada como SH, puede resultar bastante costoso para SH de orden superior. Por lo tanto, realmente depende del problema si es adecuado realizarlo en SH o no.

SH generalmente se usa para representar solo funciones de baja frecuencia (es decir, funciones que cambian suavemente) porque las frecuencias más altas requieren aumentar la cantidad de almacenamiento (coeficientes SH) y el procesamiento. Esta es la razón por la que no ve que se use SH, por ejemplo, para reemplazar los reflejos especulares en superficies brillantes. También hay armónicos esféricos zonales , que se pueden usar para reducir el almacenamiento y el cálculo de funciones 2D que son simétricas rotacionalmente sobre el eje z, simplemente almacenando elementos diagonales de la matriz de coeficientes SH. También se pueden usar los armónicos hemisféricos si solo necesita lidiar con funciones hemisféricas (también comunes en la iluminación) con la ventaja de poder representar frecuencias similares a SH con menos coeficientes.

Una operación que también debe realizar es la "proyección SH" para transformar los datos del dominio espacial en SH. Puede realizar esta operación realizando una convolución de datos de dominio espacial con funciones de base SH. Una propiedad interesante de SH es que, a diferencia de las representaciones de dominio espacial, SH no sufre de alias, por lo que no tiene artefactos de alias incluso cuando se proyecta a SH de orden muy bajo.

Sondas de luz

Ahora que comprende las operaciones y propiedades básicas de SH, podemos pensar cómo aplicarlas a GI. Una sonda de luz registra cuánta luz proviene de cada dirección al punto donde se encuentra la sonda. Esta es una función 2D en una esfera y se puede representar como SH (o función 3 SH para rojo, verde y azul). Dependiendo de la cantidad de detalles de iluminación que queremos codificar en las sondas, podemos elegir el orden SH.

Para las sondas de luz que se usan solo para la iluminación difusa lambertiana, un SH de orden bastante bajo es suficiente ya que la convolución se realiza con el lóbulo coseno, que puede representarse con SH de orden 2 (coeficientes 9). Los coeficientes SH para las sondas de luz se pueden generar simplemente representando un mapa de cubos en el punto de la sonda y luego proyectándolo en SH.

Al renderizar geometría, se toman pocas sondas de luz más cercanas y sus resultados se interpolan para obtener la función de iluminación incidente en un punto en el espacio. Esto se puede hacer, por ejemplo, interpolando directamente los coeficientes SH de las sondas cercanas y luego realizando la convolución con el lóbulo coseno del píxel orientado normalmente en el dominio SH.

JarkkoL
fuente
¿Cuáles son los beneficios de usar este método sobre la iluminación basada en imágenes más simple?
Arjan Singh
Puede tener una iluminación de baja frecuencia de mejor calidad con requisitos de almacenamiento y rendimiento similares a los de usar cubemaps.
JarkkoL
16

Armónicos esféricos

Si sabes lo que es una transformación de Fourier, ya casi sabes qué son los armónicos esféricos: son solo una transformación de Fourier pero de forma esférica en lugar de lineal. Es decir, mientras que una transformada de Fourier es una forma diferente de representar una función , los armónicos esféricos son lo análogo para las funciones polares .f ( θ , ϕ )f(x)f(θ,ϕ)

Si no sabe qué es una transformación de Fourier, necesita saber antes de comprender los armónicos esféricos. La transformación de Fourier le permite representar una señal como una serie de ondas seno y coseno, cada una con el doble de frecuencia que la última. Es decir, puede representar la señal como su promedio, más una onda sinusoidal cuya longitud de onda es la misma que la longitud de la señal, más una onda sinusoidal el doble de esa longitud de onda, y así sucesivamente. Debido a que la transformación de Fourier lo fija a estas longitudes de onda particulares, solo necesita registrar la amplitud de cada una.

Comúnmente usamos transformadas de Fourier para representar imágenes, que son solo señales digitales 2D. Es útil porque puede tirar algunas de las ondas sinusoidales (o reducir la precisión con la que almacena su amplitud) sin cambiar significativamente el aspecto de la imagen para los ojos humanos. OTOH, tirar los píxeles cambia mucho el aspecto de la imagen.

En una señal muestreada como una imagen, si usa la misma cantidad de ondas sinusoidales que había muestras (píxeles) en la imagen original, puede reconstruir la imagen exactamente, por lo que una vez que comience a desechar cualquier frecuencia, estará haciendo la La imagen toma menos almacenamiento.

Los armónicos esféricos son como las transformadas de Fourier, pero en lugar de ondas sinusoidales, utilizan una función esférica, por lo que en lugar de funciones lineales (como imágenes), pueden representar funciones definidas en la esfera (como mapas de entorno).

Sondas de luz

Al igual que una imagen estándar registra toda la luz que alcanza un cierto punto a través del plano de la imagen, una sonda de luz registra toda la luz que llega a un cierto punto desde todas las direcciones. Primero salieron de los efectos de la película. Si desea agregar un objeto generado por computadora a una escena del mundo real, debe poder encender el objeto sintético con la iluminación del mundo real. Para hacer eso, necesita saber qué luz alcanza el punto de la escena donde estará el objeto sintético. (Nota: aunque digo "iluminación", está grabando una imagen de toda la luz, por lo que también puede usarse para reflexiones).

Como no puede tener una cámara con una lente esférica que grabe toda la luz que llega a un solo punto desde todas las direcciones, puede grabar esto tomando fotografías normales de un espejo esférico y luego reproyectando las imágenes en una esfera.

Fuera de los efectos de la película, es más común usar sondas de luz generadas a partir de una escena artificial. Imagine que tiene un algoritmo costoso para calcular la iluminación global (GI) en una escena, y también tiene algunos objetos más pequeños que se mueven en esta escena (como un nivel de juego con jugadores en ella). No puede ejecutar todo el algoritmo GI cada vez que se mueve un objeto, por lo que lo ejecuta una vez con la escena estática y guarda las sondas de luz tomadas en varios puntos del nivel. Entonces puede obtener una buena aproximación al IG iluminando al jugador con la sonda de luz más cercana.

Usándolos juntos

En general, de todos modos, desea filtrar los bordes afilados en su iluminación global, por lo que desea una forma de representarlos que sea compacta y que le permita desechar fácilmente las frecuencias altas. ¡En eso son realmente buenos los armónicos esféricos! Es por eso que escucharás que estos dos términos se usan mucho juntos.

Calcula las sondas de luz con su costoso algoritmo GI, generalmente en la herramienta de diseño de nivel, o tal vez una vez por segundo (en lugar de una vez por fotograma) si desea incluir sus objetos dinámicos. Los almacena de forma económica con armónicos esféricos: 16 flotadores son suficientes para una iluminación de alta calidad, pero no para reflejos. Luego, para cada objeto dinámico que desee iluminar, elija la sonda de luz más cercana (o interpole linealmente varias juntas) y úsela como una entrada uniforme o constante a su sombreador. También es común usar armónicos esféricos para representar los datos de oclusión ambiental, y es muy barato convolver eso con la sonda de luz, aunque hay cierta complejidad en torno a las funciones rotatorias de armónicos esféricos.

Dan Hulme
fuente
Gran respuesta, esto realmente lo aclaró todo. Así que, básicamente, las sondas de luz son una manera fácil de calcular la iluminación de los personajes en movimiento que nos impiden volver a calcular el IG para toda la escena. Los armónicos esféricos, por otro lado, se utilizan para filtrar las frecuencias altas. (Corrígeme si me equivoco, solo estoy tratando de ver si tengo la comprensión correcta).
Arjan Singh
"si usa la misma cantidad de ondas sinusoidales que muestras (píxeles) en la imagen original, puede reconstruir la imagen exactamente", en realidad no es cierto. Por ejemplo, la onda cuadrada requiere un número infinito de frecuencias para una representación exacta
JarkkoL
@JarkkoL Claro, una verdadera onda cuadrada sí. Pero si lo ha discretizado mediante muestreo, entonces solo necesita la misma cantidad de frecuencias para que el error sea menor que el error de muestreo. Es un resultado útil del teorema de Nyquist (que la frecuencia más alta presente en la señal muestreada es la mitad de la frecuencia de muestreo).
Dan Hulme
Ah sí, eso es cierto, por supuesto. Supongo que necesita la mitad de la frecuencia pero resultados de dominio de frecuencia complejos (versus reales). O use DCT y dominio real con el doble de frecuencia de DFT.
JarkkoL
5

Armónicos esféricos

Digamos que tiene algunos datos en una matriz pero desea representar esos datos con un menor número de bytes.

Una forma de hacerlo podría ser expresar los datos como una función en lugar de los valores sin formato.

Podría representarlo como una función lineal: y=ax+b

Entonces, en lugar de almacenar el conjunto de valores que puede almacenar solo y .bab

El problema es que una ecuación lineal es probablemente una mala aproximación a sus datos.

En su lugar, puede probar un cuadrático: y=ax2+bx+c

Ahora, en lugar de almacenar y , que almacena , y .b a b cababc

Hemos aumentado el almacenamiento de memoria y también la complejidad computacional de almacenar y recuperar sus datos, en comparación con la ecuación lineal, pero es una mejor aproximación a su conjunto de datos. También podríamos llevarlo a una función cúbica o superior. Aumentar el orden aumenta el almacenamiento, el cálculo y la precisión.

Los armónicos esféricos son una forma de hacer una función que se define en una esfera en lugar de una como estaba hablando anteriormente.f(x)

Al igual que en los ejemplos anteriores, puede usar una función de armónicos esféricos de orden inferior para hacer algo con menor almacenamiento y menor cómputo para calcular datos, pero también menor precisión.

Por otro lado, puede aumentar el orden y obtener una mejor aproximación a sus datos originales, pero a costa de más espacio de almacenamiento requerido y más cómputo necesario para calcular un punto de datos.

En el extremo, puede usar tantos términos armónicos esféricos como muestras en su matriz, y luego puede reconstruir su matriz original exactamente, pero gasta mucho cálculo haciendo eso, y está utilizando la misma cantidad de espacio de almacenamiento como empezaste con

Debido a esto, en la práctica, las funciones de armónicos esféricos no ofrecen muchos beneficios si necesita representar detalles finos, como un reflejo nítido en una esfera, pero pueden ser baratos para datos que no tienen detalles finos (datos que no tiene mucho contenido de alta frecuencia). También son útiles para hacer cálculos de dominio de frecuencia como análisis espectral o convolución.

Uno de esos datos que son buenos para almacenar es la "irradiancia", que es la cantidad de luz que llega a un punto desde otras direcciones. Tiende a verse un poco borroso, lo que significa que solo tiene contenido de baja frecuencia, y es un buen candidato para ser almacenado en una función de armónicos esféricos.

Dejaré la explicación de las sondas de luz a otra persona: p

Alan Wolfe
fuente
¿Por qué el voto negativo? : P
Alan Wolfe
No es cierto que los armónicos esféricos no sean buenos para representar detalles finos. Al igual que la transformada de Fourier, pueden reconstruir la señal original exactamente si mantiene todas las frecuencias. Es solo que facilitan el ahorro de espacio al tirar las frecuencias altas si no las necesita.
Dan Hulme
Y lo siento, pensé que después de emitir el voto fue duro rechazar un solo reclamo dudoso en una respuesta útil, pero mi voto estaba bloqueado cuando tuve dudas.
Dan Hulme
Ah Sí, es posible, de la misma manera que es posible representar cualquier conjunto de datos con un polinomio, pero en la práctica, ambas son malas elecciones para necesitar ajustes cercanos a muchos puntos de datos. Con un polinomio, necesita N términos de una función de orden N para ajustarse exactamente a N puntos de datos, por ejemplo, lo que lo convierte en una elección peor que solo una matriz, ya que es cálculo, no búsqueda, para obtener un punto de datos. Del mismo modo, en términos prácticos, los armónicos esféricos son una mala elección para los datos esféricos con contenido de alta frecuencia que desea conservar. No es una buena opción en esas situaciones.
Alan Wolfe
Eso es cierto si desea poder reconstruir muestras individuales, pero no todos los usos de Fourier requieren eso, de manera similar para no todos los usos de SH. Si va a hacer una convolución, es mucho más barato hacerlo en el dominio de la frecuencia antes de volver a transformarlo en muestras. ¿Le importaría proponer una edición para aclarar esto en su respuesta, después de que haya terminado mi propia respuesta?
Dan Hulme