|
Cuando se diseña una escena con fotones, sirve de ayuda pensar en los objetos como si hubiera dos categorías. Los objetos de la primera categoría mostrarán cáusticas de fotón cuando sean alcanzados por los fotones. Los objetos en la segunda categoría provocan cáusticas de fotón mediante la reflexión o refracción de los fotones. Algunos objetos pueden estar en las dos categorías, y algunos objetos pueden no estar en ninguna.
Categoría 1 - Objetos que muestran cáusticas de fotón
Por defecto, todos los objetos se hallan en la primera categoría.
Cuando un fotón alcanza un objeto, el fotón se almacena para utilizarse
más tarde en la generación de las cáusticas en ese objeto. Esto
significa que, por defecto, las cáusticas de los fotones pueden
aparecer en cualquier superficie. Para acelerar el proceso de
interpretación (render), se pueden quitar objetos de esta
categoría. Esto se hace con la línea photons(collect off)
.
Si se usa esta sintaxis, las cáusticas de los fotones no aparecerán en
el objeto. Esto ahorrará tanto memoria como tiempo de cálculo durante
el proceso de generación de la escena.
Categoría 2 - Objetos que provocan cáusticas de fotón
Por defecto, no hay objetos de la segunda categoría. Si se quiere
que un objeto provoque cáusticas, es necesario hacer dos cosas.
Primero, convertir el objeto en "objetivo". Esto se hace
con el identificador target
. Esto provoca que las fuentes
de luz arrojen fotones en el objeto. Segundo, es necesario especificar
si el objeto producirá reflexión de los fotones, refracción de los
fotones, o ambas. Esto se hace mediante los identificadores reflection
on
y refraction on
. Para permitir que un objeto
refleje o refracte fotones, se deben utilizar las siguientes líneas de
código dentro del objeto:
photons{ target reflection on refraction on }
Como regla general, no se querrá que un objeto esté en las dos categorías. La mayoría de los objetos que provocan cáusticas de fotón no tienen mucho color o brillo por sí mismos. Normalmente sólo refractan o reflejan lo que tienen a su alrededor. Por este motivo, generalmente es un desperdicio de tiempo mostrar las cáusticas de fotón en dichas superficies. Aunque se calculasen, los efectos de las cáusticas serían tan tenues que pasarían desapercibidos.
A veces, puede que también se quiera añadir photons(collect
off)
a otros objetos nítidos o reflexivos, aunque no sean
objetivo (target) de los fotones. De nuevo, esto se hace para
prevenir cálculos innecesarios de iluminación cáustica.
Por último, tal vez se quiera activar la reflexión o refracción de fotón para una superficie, aunque ésta no sea un objetivo (target). Esto permite que los fotones indirectos (fotones que ya han colisionado con una superficie y han sido reflejados o refractados) prosigan su viaje tras impactar con este objeto.
BLOQUE_GLOBAL_DE_FOTONES: photons { spacing <espacio_entre_fotones> | count <fotones_emitidos> [gather <recoleccion_minima>, <recoleccion_maxima>] [media <pasos_maximos> [,<factor>]] [jitter <cantidad>] [max_trace_level <nivel_de_trazado_de_fotones>] [adc_bailout <adc_bailout_de_fotones>] [save_file "nombrearchivo" | load_file "nombrearchivo"] [autostop <fraccion_de_autoparada>] [expand_thresholds <incremento_porcentual>, <expansion_minima>] [radius <radio_de_recoleccion>,<multiplicador>, <radio_de_recoleccion_del_medio>,<multiplicador>] }
Todos los valores por defecto para fotones:
Global : expand_min : 40 gather : 20, 100 jitter : 0.4 media : 0 Object : collect : on refraction : off reflection : off split_union : on target : 1.0 Light_source: area_light : off refraction : off reflection : off
Para especificar las opciones de concurrencia y recolección de los
fotones se debe añadir un bloque photons
a la sección global_settings
de la escena.
Por ejemplo:
global_settings { photons { count 20000 autostop 0 jitter .4 } }
El número de fotones generado se puede establecer mediante uno de
los identificadores spacing
o count
:
spacing
, éste especifica la distancia
media entre los fotones y las superficies. Si divides spacing
por la mitad obtendrás cuatro veces más fotones en las superficies, y
unas ocho veces más en el medio.count
, POV-Ray lanzará aproximadamente el
número de fotones especificado. El número real de fotones casi
siempre será, al menos, ligeramente diferente del número especificado.
Aún así, si se duplica el valor de fotones a emitir, se lanzan más o
menos el doble de fotones. Si se parte este valor por la mitad,
entonces se lanzarán mas o menos la mitad de fotones.
El identificador gather
permite especificar cuántos
fotones se recogen en cada punto durante un paso normal de la
generación. El primer número (por defecto 20) es el mínimo número a
recoger, mientras que el segundo número (por defecto 100) es el máximo.
Estos valores son adecuados y sólo deben modificarse si se sabe lo que
se está haciendo.
El identificador media
activa los fotones en el medio.
El parámetro especifica el número máximo de fotones a
depositar en un intervalo. El parámetro opcional factor especifica la
diferencia del espaciado del medio en comparación con el espaciado de
la superficie. Se puede incrementar el factor y disminuir el máximo de
pasos si se depositan demasiados fotones en el medio.
El identificador jitter
especifica la cantidad de
temblor en el muestreo de los rayos de luz durante el paso de
pre-proceso. El valor por defecto es adecuado y normalmente no es
necesario cambiarlo.
Los identificadores max_trace_level
y adc_bailout
permiten especificar estos atributos para el paso de trazado de fotones.
Si no se quieren especificar, se utilizarán los valores del paso
principal de trazado de rayos. [N.T. max_trace_level y adc_bailout
se amplían en la sección 6.11: Ajustes globales]
Los identificadores save_file
y load_file
permiten guardar y cargar mapas de fotón. Si se carga un mapa de fotón,
no se dispararán fotones. El archivo con el mapa de fotón contiene
todos los fotones de la superficie (cáustica) y del medio.
radius
se utiliza para reunir fotones. Cuanto mayor sea
el radio, más tiempo llevará recolectar los fotones. Pero si se usa un
radio demasiado pequeño, puede que no se obtengan suficientes fotones
para realizar un buen cálculo. Por lo tanto, elegir un buen radio es
importante. Normalmente POV-Ray mira a través del mapa de fotón y
utiliza determinados análisis estadísticos de cara a
determinar un radio razonable. A veces hace un buen trabajo, a veces
no. El identificador radius permite anular o ajustar la estimación de
POV-Ray.
Parámetros de radius
(todos son opcionales):
radius
,0.5
" para reducir el radio (multiplicando por 0.5) y acelerar
el proceso de generación disminuyendo la calidad.Los identificadores autostop
y expand_thresholds
se explicarán más adelante.
BLOQUE_FOTONES_DE_OBJETO: photons { [target [<multiplicador_de_espaciado>]] [refraction on|off] [reflection on|off] [collect on|off] [pass_through] }
Para lanzar fotones a un objeto, se necesita decir a POV que el
objeto recibe fotones. Para esto, se crea un bloque photons ( )
dentro del objeto. Por ejemplo:
object { MiObjeto photons { target refraction on reflection on collect off } }
En este ejemplo, el objeto a un tiempo refleja y refracta los fotones. Cualquiera de estas opciones puede desactivarse (especificando reflection off, por ejemplo). De este modo, se tiene un objeto con un acabado reflexivo que no refleja fotones por razones de memoria y velocidad.
El identificador target
convierte el objeto en objetivo.
La densidad de los fotones se puede ajustar especificando el
multiplicador de espaciado. Si, por ejemplo, se especifica
a
0.5, entonces la separación para los fotones que impactan en este
objeto será de 1/2 de la distancia de separación para otros objetos.
Nota: Esto representa unas cuatro veces los fotones de superficie y unas ocho veces los fotones del medio.
El identificador collect off
provoca que el objeto
ignore los fotones. Los fotones no se depositan ni se recogen en ese
objeto.
El identificador pass_through
provoca que los fotones
pasen a través del objeto sin verse
afectados en su camino hacia el objeto destino. Una vez el fotón
alcanza el objeto destino, se ignorará indicador pass_through
. Éste es básicamente el equivalente para los fotones del identificador no_shadow
,
con la excepción de que el medio interno del objeto sigue siendo
afectado por los fotones (a menos que se haya indicado collect
off
en el medio). Si se usa el identificador no_shadow
,
el objeto será etiquetado como pass_through
automáticamente. Entonces se puede desactivar pass_through
,
en caso de que sea necesario, utilizando photons { pass_through
off }
.
Nota: Los fotones no se disparan a un
objeto a menos que se especifique el identificador target
.
Limitarse a activar la refracción no es suficiente.
Cuando se disparan fotones a una unión CSG, a veces puede resultar
provechoso utilizar split_union
off
dentro de la unión. POV-Ray se verá obligado a disparar
al objeto en su totalidad, en lugar de partirlo y disparar fotones a
las partes que lo componen.
BLOQUE_FOTONES_DE_FUENTE_DE_LUZ: photons { [refraction on | off] [reflection on | off] [area_light] }
Ejemplo:
light_source { MiLuz photons { refraction on reflection on } }
A veces, se quiere que los fotones se lancen desde una fuente de luz
y no desde otra. En este caso se pueden activar los fotones para un
objeto, pero especificando photons {reflection off refraction
off}
en la definición de la fuente de luz. También se puede
desactivar sólo la refracción o sólo la refracción para cada una de las
fuentes de luz.
global_settings { photons { count 10000 media 100 } }
Los fotones también interactúan completamente con el medio. Esto
significa que los fotones volumétricos se almacenan en la dispersión
del medio. Esta capacidad se activa utilizando el identificador media
dentro de un bloque photons
.
Para acumular fotones en el medio, POV deposita fotones a su paso por el medio durante la fase de trazado de fotones al generar la imagen. Depositará estos fotones al tiempo que traza las cáusticas de fotones, de modo que el número de los fotones del medio depende del número de cáusticas de fotones. Al tiempo que un rayo de luz pasa a través de los una sección del medio, los fotones se depositan, separados aproximadamente por la misma distancia que separa a los fotones de superficie.
Se puede especificar un factor como segundo parámetro opcional del identificador media. Si, por ejemplo, se pone el factor a 2.0, entonces los fotones tendrán una separación dos veces mayor de la que hubieran tenido en otras circunstancias.
A veces, sin embargo, si una sección del medio es muy grande, utilizando esta configuración se podría crear un enorme número de fotones muy rápido y desbordar la memoria. Por lo tanto, siguiendo el ejemplo del identificador media, se debe especificar el número máximo de fotones que se depositan por cada rayo que viaja a través de una sección del medio. Un valor de 100 debería funcionar bien en la mayoría de los casos.
Se puede establecer collect off
dentro del medio para
hacer que el medio ignore los fotones. Los fotones no serán depositados
ni recogidos en un medio que los está ignorando. Los fotones tampoco
serán recogidos ni depositados en un medio sin dispersión. Sin embargo,
si existen múltiples medios en el mismo espacio, y al menos uno de
ellos no ignora los fotones y tiene dispersión, entonces los fotones se
depositarán en ese intervalo y serán recolectados para su uso en todo
el medio de ese intervalo.
|