Descargo de responsabilidad: no tengo idea de cuál es el estado del arte en el muestreo del mapa ambiental. De hecho, tengo muy poco conocimiento sobre este tema. Entonces, esta no será una respuesta completa, pero formularé el problema matemáticamente y lo analizaré. Lo hago principalmente por mí mismo, así que lo dejo en claro para mí mismo, pero espero que OP y otros lo encuentren útil.
Queremos calcular la iluminación directa en un punto, es decir, queremos saber el valor de la integral
donde es la función BSDF ( explícitamente la dependencia de lo normal que será útil más adelante), es el resplandor del mapa ambiental y es el término coseno junto con la visibilidad (para qué sirve el ) es decir if
I=∫S2f(ωi,ωo,n)L(ωi)(ωi⋅n)+dωi
f(ωi,ωo,n)L(ωi)(ωi⋅n)++(ωi⋅n)+=0(ωi⋅n)<0
Estimamos esta integral generando muestras con respecto a la función de densidad de probabilidad , el estimador es
Nω1i,…,ωNip(ωi)
I≈1N∑k=1Nf(ωki,ωo,n)L(ωki)(ωki⋅n)+p(ωki)
La pregunta es: ¿Cómo elegimos el pdf modo que podamos generar las muestras en un tiempo aceptable y la varianza del estimador anterior es razonablemente pequeña?p
El mejor método Elijaproporcional al integrando
Pero la mayoría de las veces es Es muy costoso generar una muestra de acuerdo con este pdf, por lo que no es útil en la práctica.p
p(ωi)∼f(ωi,ωo,n)L(ωi)(ωi⋅n)+
Métodos sugeridos por OP:
Método uno : Elija proporcional al término coseno
Método dos : Elija proporcional al EM
p
p(ωi)∼(ωi⋅n)+
pp(ωi)∼L(ωi)
Basado en los nombres de los documentos mencionados, puedo adivinar parcialmente lo que hacen (desafortunadamente no tengo el tiempo y la energía para leerlos en este momento). Pero antes de discutir lo que probablemente hacen, hablemos un poco sobre las series de poder: D
Si tenemos una función de una variable real, por ejemplo, . Entonces, si se comporta bien, puede expandirse en una serie de potencias
Donde son constantes. Esto se puede usar para aproximar truncando la suma en algún paso
Si es suficientemente alto, entonces el error es realmente pequeño.f(x)
f(x)=∑k=0∞akxk
akfn
f(x)≈∑k=0nakxk
n
Ahora, si tenemos función en dos variables, por ejemplo, podemos expandirla solo en el primer argumento
donde son funciones solo en . También se puede expandir en ambos argumentos
donde son constantes. Por lo tanto, la función con argumentos reales se puede ampliar como la suma de los poderes de ese argumento. Se puede hacer algo similar para las funciones definidas en la esfera.f(x,y)
f(x,y)=∑k=0∞bk(y)xk
bk(y)yf(x,y)=∑k,l=0∞cklxkyl
ck l
Ahora, tengamos una función definida en la esfera, por ejemplo, . Dicha función también se puede ampliar de manera similar a la función de un parámetro real
donde son constantes y Son armónicos esféricos . Los armónicos esféricos normalmente están indexados por dos índices y se escriben como función en coordenadas esféricas, pero eso no es importante aquí. Lo importante es que puede escribirse como una suma de algunas funciones conocidas.f( ω )
f(ω)=∑k=0∞αkSk(ω)
αkSk(ω)f
Ahora la función que toma dos puntos en la esfera, por ejemplo, se puede expandir solo en sus primeros argumentos
o en sus dos argumentos
f(ω,ω′)
f(ω,ω′)=∑k=0∞βk(ω′)Sk(ω)
f(ω,ω′)=∑k,l=0∞γklSk(ω)Sl(ω′)
Entonces, ¿cómo es todo esto útil?
Propongo el CMUNSM (Crazy mental inútil sin método de muestreo): supongamos que tenemos expansiones para todas las funciones, es decir,
Si conectamos esto en el integral obtenemos
f(ωi,ωo,n)L(ωi)(ωi⋅n)+=∑k,l,m=0∞αklmSk(ωi)Sl(ωo)Sm(n)=∑n=0∞βnSn(ω)=∑p,q= 0∞γp qSpag( ωyo) Sq( n )
yo= ∑k , l , m , n , p , q= 0∞αk l mβnorteγp qSl( ωo) Smetro( n ) Sq( n ) ∫S2Sk( ωyo) Snorte( ω ) Spag( ωyo) dωyo
En realidad, ya no necesitamos Monte Carlo porque podemos calcular los valores de las integrales antemano y luego evaluar la suma (en realidad aproximada suma, sumaríamos solo los primeros términos) y obtenemos el resultado deseado.∫S2Sk( ωyo) Snorte( ω ) Spag( ωyo) dωyo
Todo esto es bueno, pero es posible que no sepamos que las expansiones de BSDF o el mapa ambiental o las expansiones convergen muy lentamente, por lo tanto, tendríamos que tomar muchos términos en la suma para obtener una respuesta razonablemente precisa.
Entonces, la idea no es expandirse en todos los argumentos. Un método que podría valer la pena investigar sería ignorar BSDF y expandir solo el mapa ambiental, es decir,
esto conduciría a pdf:
L ( ωyo) ≈ ∑n = 0KβnorteSnorte( ωyo)
p ( ωyo) ∼ ∑n = 0KβnorteSnorte( ωyo) ( ω ⋅ n )+
Ya sabemos cómo hacer esto para , esto no es más que el método uno . Supongo que se hace en uno de los documentos para más alto .K= 0K
Extensiones adicionales. Puede expandir diferentes funciones en diferentes argumentos y hacer cosas similares a las anteriores. Otra cosa es que puede expandirse de manera diferente, es decir, no use armónicos esféricos sino diferentes funciones.
Así que esta es mi opinión sobre el tema, espero que lo haya encontrado al menos un poco útil y ahora me voy a GoT y me acuesto.