|
En escenas con muchas superficies reflexivas y transparentes
POV-Ray puede sobrecargarse trazando reflexiones múltiples y
refracciones que muy poco contribuyen con el color de un píxel en
particular. El ajuste global max_trace_level
define el
número entero máximo de niveles recursivos que POV-Ray trazará por cada
rayo.
global_settings { max_trace_level Level }
Este número se usa cuando un rayo es reflejado o está pasando a través de un objeto transparente y cuando se proyectan rayos de sombra. Cuando un rayo se topa con una superficie reflexiva, produce otro rayo para ver qué punto refleja. Éste es el nivel de trazado uno. Si éste toca otra superficie reflexiva se produce otro rayo, que sería el nivel dos. El máximo nivel por definición es cinco.
Una mejora en velocidad añadida a POV-Ray en la versión 3.0 es Adaptive
Depth Control (ADC). Cada vez que se produce un nuevo rayo como
resultado de una reflexión o refracción, su contribución al color
general del píxel se reduce por la cantidad de reflexión o por el valor
del filtro de la superficie refractiva. En algún punto, esta
contribución puede considerarse como insignificante y no hay razón para
trazar más rayos. El control de profundidad adaptivo es lo que vigila
esta contribución y hace la decisión de cuándo detenerla. En escenas
que usan una cantidad considerable de superficies parcialmente reflexivas o de superficies refractivas, esto puede resultar en una
reducción considerable del número de rayos emitidos y hace más segura
la utilización de valores max_trace_level
más altos.
Esta reducción en la contribución de color es el resultado de
escalar por la cantidad de reflexión y/o los valores de filtros en cada
superficie, de manera que un espejo perfecto o una superficie
perfectamente transparente no sea intervenida por ADC. Puede ver los
resultados de ADC al observar los índices Rays Saved
(rayos ahorrados) y Highest Trace Level
(nivel de trazado máximo) en la pantalla de estadística.
El punto en el cual la contribución de un rayo es considerada como
insignificante está controlada por el valor adc_bailout
.
El valor por definición es 1/255 ó aproximadamente 0.0039 puesto que
un cambio menor que eso pudiera no ser visible en una imagen de 24
bits. Generalmente, este valor es perfectamente adecuado y debería
dejarse tal cual está. Ajustar el adc_bailout
a 0
inhabilitará ADC, dependiendo completamente de max_trace_level
para definir un límite superior del número de rayos trazados.
Si max_trace_level
se alcanza antes que se consiga una
superficie no reflexiva y si ADC no ha permitido una salida temprana
del árbol de rayos, el color es devuelto como negro. Incremente max_trace_level
si observa áreas negras en una superficie
reflexiva donde debiera haber otro color.
El otro síntoma que podrá observar se refiere a objetos
transparentes. De hecho, intente hacer una unión de esferas
concéntricas con una textura transparente en ellas. Haga diez esferas
en la unión, con radios de 1 a 10 y ejecute la escena. La imagen
mostrará las primeras esferas correctamente, pero las siguientes en
negro. Esto es porque se usa un nuevo nivel cada vez que se pasa a
través de una superficie transparente. Incremente max_trace_level
para resolver el problema.
Note: que elevando max_trace_level
usará más memoria y tiempo y pudiera hacer que el programa deje de
funcionar debido a un error de stack overflow, aunque ADC aliviará esto
en gran medida.
Los valores para max_trace_level
pueden ajustarse hasta
un máximo de 256. Si no hay un valor predeterminado de max_trace_level
y se alcanza el valor por definición en el renderizado de la escena, se
generará un alerta.
|