|
Existe más de una forma de trazar un rayo. A veces, existe un compromiso entre calidad y velocidad. Sucede en ocasiones que las opciones diseñadas para trazar más rápido pueden hacer más lento el trazado. Esta sección trata de las opciones con las que se le dice a POV-Ray cómo trazar los rayos con los ajustes apropiados de calidad y velocidad.
Quality= n |
Ajusta la calidad de trazado a n (0 <= n <= 11) |
+Q n |
Igual que Quality= n |
La opción Quality=
n, o el interruptor +Q
n,
te permiten especificar la calidad de trazado de la imagen. Puedes
desear bajar la calidad en trazados de prueba y subirla para el trazado
final. Los ajustes de la calidad suelen hacerse por eliminación de
algunos de los cálculos que normalmente se hacen. Por ejemplo, los
ajustes por debajo de 4 no trazan las sombras. Por debajo de 8 no se
usan la reflexión ni la refracción. Los valores duplicados se reservan
para futuras expansiones. Éstos son los valores para los diferentes
niveles de calidad:
0, 1 |
Representa sólo colores rápidos. Sólo se usa luz de ambiente completa. Los colores rápidos se usan hasta el nivel 5. |
2, 3 |
Muestra la luz difusa y de ambiente especificada en las texturas. |
4 |
Traza sombras, pero no luces extendidas. |
5 |
Traza sombras, incluyendo luces extendidas. |
6, 7 |
Procesa los patrones de textura, activa el uso de fotones |
8 |
Calcula los rayos reflejados, refractados y transmitidos. |
9, 10, 11 |
Calcula el medio y la radiosidad |
El valor por defecto, si no se especifica otro, es 9.
Bounding= booleano |
Activa o desactiva la acotación. |
+MB |
Activa la acotación, fijando el umbral en 25 o el valor previo. |
-MB |
Desactiva la acotación. |
Bounding_Threshold= n |
Establece el umbral de acotación a n |
+MB n |
Activa la acotación estableciendo el umbral a n |
-MB n |
Desactiva la acotación, fijando el umbral a n para futuros usos |
Light_Buffer= booleano |
Activa o desactiva el buffer de luz |
+UL |
Activa el buffer de luz |
-UL |
Desactiva el buffer de luz |
Vista_Buffer= booleano |
Activa o desactiva el buffer de vistas |
+UV |
Activa el buffer de vistas |
-UV |
Desactiva el buffer de vistas |
POV-Ray utiliza varios sistemas de subdivisión espacial para
acelerar las comprobaciones de intersección rayo-objeto. El sistema
primario consiste en una jerarquía de cajas de acotación anidadas. Este
sistema descompone todos los objetos finitos de la escena en invisibles
cajas rectangulares que se organizan en un árbol jerárquico. Antes de
comprobar los objetos contenidos en las cajas de acotación, se
desciende por el árbol, y sólo se comprueban aquellos objetos cuyas
acotaciones sean tocadas por el rayo. Ello mejora considerablemente la
velocidad de trazado. Sin embargo, en escenas con pocos objetos, el
trabajo extra de usar cajas de acotación no compensa el esfuerzo. La
opción Bounding=off
o el interruptor -MB
te
permiten forzar la desactivación de la acotación. Por defecto, está
activada.
Tanto la opción Bounding_Threshold=
n como el
interruptor +MB
n te permiten establecer el número
mínimo de objetos (umbral) necesario para usar la acotación. El valor
por defecto es +MB25
, lo que significa que si tu escena
tiene menos de 25 objetos, POV-Ray desactivará automáticamente la
acotación, ya que el trabajo extra no vale la pena. Normalmente es una
buena idea usar un valor menor, como por ejemplo +MB5.
Además, POV-Ray usa otros sistemas, conocidos como buffer de vistas y buffer de luces para acelerar aun más el trazado. Estos sistemas sólo funcionan cuando la acotación está activada y cuando exista un número de objetos mayor que el umbral de acotación especificado. El buffer de vistas se crea proyectando la jerarquía de cajas de acotación en la pantalla, y determinando las áreas rectangulares cubiertas por cada elemento de la jerarquía. Sólo se comprueban con el rayo primario aquellos objetos cuyos rectángulos contengan el píxel dado. El buffer de vistas sólo se puede usar con las cámaras ortográfica y de perspectiva, ya que se basan en un punto de vista fijo y una proyección razonable (p.ej.: las líneas rectas deben de ser rectas también en la proyección).
El buffer de luz se crea encerrando cada fuente de luz en una caja imaginaria y proyectando la jerarquía de cajas de acotación en cada uno de sus lados. Ya que esto se basa en un punto de luz fijo, no se puede usar con las luces de área.
Los rayos reflejados y transmitidos no usan en absoluto ninguno de los dos buffers.
Los valores por defecto son Vista_Buffer=on
o +UV
,
y Light_Buffer=on
o +UL
. La opción para
desactivar estas características puede utilizarse para demostrar su
utilidad, y también como protección ante errores desconocidos que
pudieran existir en estos sistemas de acotación.
En general, cualquier objeto finito, y muchos tipos de CSG de objetos finitos, responden correctamente al sistema de acotación. Además, las burbujas y mallas usan sistemas propios de acotación, que no pueden controlarse con las opciones anteriores, pero que pueden desactivarse con las sentencias adecuadas en el archivo de escena (véase las secciones "Objeto Burbuja" y "Objeto Malla" para más detalles). Los objetos de texto se dividen en letras individuales que se acotan con la jerarquía de cajas. Algunas combinaciones de CSG entre objetos finitos e infinitos también se acotan automáticamente. El resultado final es que raramente tendrás que añadir cajas de acotación manualmente, como era necesario en versiones anteriores de POV-Ray, a no ser que utilices muchos objetos infinitos.
Remove_Bounds= bool |
Activa o desactiva la eliminación de acotaciones innecesarias |
+UR |
Activa la eliminación de acotaciones innecesarias |
-UR |
Desactiva la eliminación de acotaciones innecesarias |
Split_Unions= bool |
Activa o desactiva el desglose de acotaciones en uniones |
+SU |
Activa el desglose de acotaciones en uniones |
-SU |
Desactiva el desglose de acotaciones en uniones |
Las versiones antiguas de POV-Ray no tenían ningún sistema de
acotación automática o subdivisión espacial para acelerar las
comprobaciones de intersección entre rayo y objeto. El usuario debía
crear manualmente las cajas de acotación para acelerar el trazado.
Desde la versión 3.0, POV-Ray posee un sistema de acotación automática más sofisticado que el de versiones anteriores. En muchos casos, la
acotación manual de las viejas escenas es más lenta que el nuevo
sistema automático. Es por ello que POV-Ray elimina las acotaciones
manuales cuando cree que será beneficioso. En raras ocasiones, es
posible que quieras mantener la acotación manual. Algunas escenas
viejas usaban incorrectamente la acotación donde deberían haber usado
el recorte (clipping). Si POV-Ray elimina las acotaciones, estas
escenas no trazan la imagen esperada. Para desactivar la eliminación
automática de las acotaciones manuales, debes especificar Remove_Bounds=off
o usar -UR
. El valor por defecto es Remove_Bounds=on
.
Un área en la que "el jurado no se pone de acuerdo" es el desglose
de las uniones acotadas manualmente. Las uniones sin acotar siempre se
desglosan en sus componentes para que la acotación automática funcione
mejor. Muchos usuarios no acotan las uniones ya que saben que
normalmente es más lento. Si acotas manualmente una unión, asumimos que
realmente quieres acotarla, así que por seguridad no eliminaremos estas
acotaciones Si quieres que se eliminen automáticamente, deberás
especificar Split_Unions=on
o usar +SU
. El
valor por defecto es Split_Unions=off
.
Antialias= bool |
Activa o desactiva el anti-alias |
+A |
Activa el anti-alias y establece el umbral a 0.3 o el valor previo |
-A |
Desactiva el anti-alias |
Sampling_Method= n |
Selecciona el método de muestreo del anti-alias (sólo son válidos 1 o 2 ) |
+AM n |
Ídem que Sampling_Method= n |
Antialias_Threshold= n.n |
Establece el umbral del anti-alias |
+A n.n |
Activa el anti-alias con un umbral de n.n |
-A n.n |
Desactiva el anti-alias (umbral a n.n para uso futuro) |
Jitter= bool |
Activa o desactiva el agitado del rayo |
+J |
Activa el agitado del rayo con un valor de 1.0 o el valor previo |
-J |
Desactiva el agitado del rayo |
Jitter_Amount= n.n |
Fija el valor de agitado a n.n. Si n.n <= 0, se desactivará. |
+J n.n |
Activa el agitado, fijando un valor de n.n. Si n.n <= 0, se desactivará. |
-J n.n |
Desactiva el agitado, pero establece un valor de n.n para uso futuro |
Antialias_Depth= n |
Establece la profundidad del anti-alias (1 <= n <= 9) |
+R n |
Ídem que Antialias_Depth= n |
El proceso de trazado de rayos es en realidad un muestreo digital (discreto) de la imagen, normalmente con una muestra por píxel. Este muestreo puede introducir diferentes errores, como líneas curvas o inclinadas con apariencia escalonada, líneas finas rotas o discontinuas, efectos de tipo moaré, patrones de interferencia y pérdida de detalle o incluso de objetos que son tan pequeños que residen entre dos píxeles adyacentes. El efecto responsable de estos errores es llamado alias.
El anti alias es cualquier técnica que se use para intentar eliminar
estos errores, o para reducir su efecto negativo en la imagen. En
general, el anti alias hace que la imagen trazada aparezca suavizada.
La opción Antialias=on
o el interruptor +A
activan el sistema de anti alias de POV-Ray.
Cuando se activa el anti alias, POV-Ray intenta reducir los errores enviando más de un rayo de visualización por cada píxel, y calculando la media entre los resultados para determinar el color aparente del píxel. Esta técnica se llama supermuestreo, y puede mejorar la apariencia de la imagen final, pero también incrementa drásticamente el tiempo requerido para trazar una escena, ya que deben realizarse muchos más cálculos.
POV-Ray te ofrece la opción de usar dos métodos distintos de
supermuestreo. La opción Sampling_Method=
n o el
interruptor +AM
n, seleccionan uno de los dos
tipos: 1
o 2
. El hecho de seleccionar alguno
de los métodos no activa el anti alias. Éste ha de ser activado usando
el interruptor +A
o la opción Antialias=on
.
El tipo 1 es un método de supermuestreo adaptativo y no recursivo. Es adaptativo ya que no todos los píxeles son supermuestreados. El tipo 2 es un método adaptativo y recursivo. Es recursivo ya que el píxel se subdivide recursivamente, y adaptativo por que el nivel de esta recursión es variable.
Por defecto, con el método no recursivo (+AM1
), POV-Ray
traza inicialmente un rayo por píxel. Si el color del píxel difiere del
de sus vecinos (arriba o a la izqda.) por encima de un umbral, se
supermuestrea enviando un número dado de rayos adicionales. El umbral
por defecto es 0.3, pero puede cambiarse usando la opción Antialias_Threshold=
n.n.
Si se usan los interruptores, el umbral puede especificarse detrás de +A
.
Por ejemplo, +A0.1
activa el anti alias y establece el
umbral en 0.1.
El cálculo de comparación con el umbral se detalla a continuación. Si r1, g1, b1 y r2, g2, b2 son los componentes rgb de dos píxeles, la diferencia entre ambos píxeles se calcula con la fórmula:
dif = abs(r1-r2) + abs(g1-g2) + abs(b1-b2)
Si esta diferencia es mayor que el umbral, ambos píxeles se supermuestrean. Los valores rgb están en el rango de 0.0 a 1.0, así que lo más que pueden diferir es 3.0. Si el umbral del anti alias es 0.0, se supermuestrean todos los píxeles. Si el umbral es de 3.0, no se usa el anti alias. Los valores bajos del umbral implican mayor nivel de anti alias, pero menor velocidad de trazado. Usa el anti alias para la versión final de tu imagen, no para los bocetos. Cuanto más bajo es el contraste, menor debería ser el umbral. Imágenes con alto contraste pueden salvarse con valores más altos del umbral. Los valores buenos parecen oscilar entre 0.2 y 0.4.
Cuando se usa el método no recursivo, el número por defecto de
supermuestras por píxel es de nueve, localizadas en una rejilla de 3x3.
La opción Antialias_Depth=
n o el interruptor +R
n
controlan el número de filas y columnas de muestras que se tomará por
cada píxel supermuestreado. Por ejemplo, +R4
nos daría
4x4=16 muestras por píxel.
El segundo método de supermuestreo adaptativo recursivo, empieza por trazar cuatro rayos desde las esquinas de cada píxel. Si el color resultante difiere en más del valor umbral, se tomarán muestras adicionales. Ello se hace recursivamente, dividiendo el píxel en cuatro sub-píxeles que se trazan por separado y se comprueban para ver si hay que seguir subdividiendo. La ventaja de este método es el reducido número de rayos que deben ser trazados. Las muestras comunes a píxeles y sub-píxeles adyacentes se guardan y se reutilizan para evitar re-trazar rayos. El carácter recursivo de este método hace que el supermuestreo se concentre en aquellas partes del píxel que probablemente más lo necesitan (véase la figura inferior).
El número máximo de subdivisiones se especifica con la opción Antialias_Depth=
n
o el interruptor +R
n. Véase la diferencia con el
método adaptativo no recursivo, en el que se especifica el número total
de supermuestras. El número de muestras por píxel que se obtiene para
un número máximo de subdivisiones n, se facilita en la
siguiente tabla:
+R n |
Número de muestras por píxel supermuestreado con el método no
recursivo +AM1 |
Número máximo de muestras por píxel supermuestreado con el
método recursivo +AM2 |
1 |
1 | 9 |
2 |
4 | 25 |
3 |
9 | 81 |
4 |
16 | 289 |
5 |
25 | 1089 |
6 |
36 | 4225 |
7 |
49 | 16641 |
8 |
64 | 66049 |
9 |
81 | 263169 |
Ten en cuenta que el número máximo de muestras en el método recursivo raramente se alcanza para un píxel dado. Si el método recursivo se usa sin anti alias, cada píxel será la media de los rayos trazados desde sus esquinas. En muchos casos, un nivel de recursión de 3 es suficiente.
Otra manera de reducir los efectos secundarios del anti alias es
introducir ruido en el proceso de muestreo. A esto se le llama jittering
(agitado) y funciona gracias al sistema humano de vision, que ignora el
ruido más fácilmente que los patrones regulares. La localización de los
supermuestreos se sacude o agita ligeramente mientras se usa el anti
alias. El agitado está activado por defecto, pero puede desactivarse
con la opción Jitter=off
o el interruptor -J
.
El nivel de agitado puede ajustarse la opción Jitter_Amount=
n.n.
Cuando se usan los interruptores, deberá especificarse tras el
interruptor +J. Por ejemplo, +J0.5
usaría la mitad
del agitado normal. El valor por defecto es 1.0, que es el máximo
agitado que asegura que todas las supermuestras permanecen dentro del píxel original.
Observa que este agitado es aleatorio e irrepetible, por lo que no deberías usarlo en secuencias de animación, ya que los píxeles con anti alias variarán de fotograma en fotograma, produciendo un ruido molesto.
Si no se usa el anti-alias, sólo se tomará una muestra por píxel, sin importar el método de muestreo especificado.
|