2012-03-28 11 views
5

Actualmente estoy tratando de entender el rastreador de rayos desarrollado por Kevin Beason (smallpt: http://www.kevinbeason.com/smallpt/) y si entiendo el código correctamente elige al azar reflejar o refractar el rayo (si la superficie es a la vez reflectante y refractiva).Trazado de rayos: Solo uso rayos simples en lugar de rayos de reflexión y refracción

Línea 71-73:

return obj.e + f.mult(depth>2 ? (erand48(Xi)<P ? // Russian roulette 
radiance(reflRay,depth,Xi)*RP:radiance(Ray(x,tdir),depth,Xi)*TP) : 
radiance(reflRay,depth,Xi)*Re+radiance(Ray(x,tdir),depth,Xi)*Tr); 

¿Puede alguien por favor explicar las desventajas de la única fundición de un solo rayo en lugar de los dos? Nunca había escuchado acerca de esta técnica y tengo curiosidad por saber cuál es la compensación, dado que resulta en una enorme reducción de complejidad.

+2

¿Ha visto [esta presentación] (https://docs.google.com/open?id=0B8g97JkuSSBwUENiWTJXeGtTOHFmSm51UC01YWtCZw) que explica todo y está claramente vinculado a ese sitio? – KillianDS

+0

Sí, he leído la presentación y ¡es genial! Lo que estoy buscando es una explicación más profunda sobre cómo solo el lanzamiento de un solo rayo afecta la eficiencia del algoritmo. ¿Por qué decidió que para profundidades de hasta 2 se deben evaluar ambos rayos pero no después (es decir, hay algún razonamiento detrás de por qué es exactamente 2 o es más o menos aleatorio?). – crapper

+0

más o menos al azar, pero la idea es que obtendrás la mayor intensidad de color de tus primeras reflexiones y absorciones. Cuanto más refleje/refracte, más contribuciones insignificantes deberían ser. – KillianDS

Respuesta

3

Este es un rastreador de rayos monte-carlo. Sus ventajas son que no genera un número exponencialmente creciente de rayos, lo que puede ocurrir en algunas geometrías simples. El inconveniente es que debe promediar más de una gran cantidad de muestras. Típicamente muestra hasta que la desviación esperada del valor verdadero es "lo suficientemente baja". Determinar cuántas muestras se requieren requiere algunas estadísticas, o simplemente tomar muchas muestras.

2

Es de suponer que confía en los píxeles de supermuestreo y confía en que el color promedio resultará aproximadamente correcto, aunque no tan preciso.

es decir, disparan 4 rayos a través de un píxel y en promedio 2 se reflejan, 2 se refractan.
Combínalos para obtener una aproximación de un rayo reflejado y refractado.

+0

Al mirar el código que se ve a la derecha, vea (comentarios en) las líneas 83, 84. –

Cuestiones relacionadas