|
Las fuentes de luz (light_source
) no son realmente
objetos, ya que no tienen una forma propia visible. Son solamente
puntos o áreas que emiten luz. Se categorizan como objetos debido a que
pueden combinarse con éstos usando la unión CSG. La sintaxis completa
es la siguiente:
FUENTE_DE_LUZ: light_source { <Location>, COLOR [MODIFICADORES_DE_LUZ...] } MODIFICADOR_DE_LUZ: TIPO_DE_LUZ | ITEMS_LUZ_CONICA | ITEMS_LUZ_PARALELA | ITEMS_LUZ_DE_AREA | MODIFICADORES_GENERICOS_DE_LUZ TIPO_DE_LUZ: spotlight | shadowless | cylinder | parallel ITEM_LUZ_CONICA: radius Radius | falloff Falloff | tightness Tightness | point_at <Spot> ITEM_LUZ_PARALELA: point_at <Spot> ITEM_LUZ_DE_AREA: area_light <Axis_1>, <Axis_2>, Size_1, Size_2 | adaptive Adaptive | jitter Jitter | circular | orient MODIFICADORES_GENERICOS_DE_LUZ: looks_like { OBJETO } | TRANSFORMACION | fade_distance Fade_Distance | fade_power Fade_Power | media_attenuation [Bool] | media_interaction [Bool] | projected_through
Valores por defecto de las fuentes de luz:
TIPO_DE_LUZ : pointlight falloff : 70 media_interaction : on media_attenuation : off point_at : <0,0,0> radius : 70 tightness : 10
Los diferentes tipos de fuentes de luz y sus modificadores opcionales se describen en las siguientes secciones.
Los dos primeros ítems son comunes en todas las fuentes de luz. El
vector <Location>
indica el lugar de
emplazamiento de la luz. COLOR especifica el color de la luz. Sólo los componentes rojo, verde y azul son significativos. Cualquier
valor de filtro o transmisión es ignorado.
Nota: Este parámetro controla tanto el
color de la luz como su intensidad. Por ejemplo, un color rgb
<0.5,0.5,0.5>
dará una luz con la mitad de intensidad que rgb
<1,1,1>
.
Todos las palabras clave o items de la sintaxis anterior pueden aparecer en cualquier orden. Algunos identificadores sólo tienen efecto si se especifican también otros. Éstos suelen estar agrupados en categorías funcionales para dejar más claro cuáles de ellos trabajan conjuntamente. Los modificadores generales funcionan con todos los tipos de luz y cualquier combinación de opciones.
Nota: Las transformaciones, tales como translacion
, rotacion
etc., pueden
aplicarse a la fuente de luz, pero no puede usarse ningún otro de los
modificadores de objetos.
Hay tres tipos de luz, que son mutuamente exclusivos. Si no se
especifica ninguno, por defecto será una luz puntual. Las otras
opciones son la luz cónica (spotlight
) y la luz cilíndrica
(cylinder
).
Las luces puntuales son el tipo más simple de fuentes de luz. Una luz puntual envía rayos de luz, del color especificado, en todas las direcciones. Es el tipo de luz por defecto. El emplazamiento y el color son los únicos parámetros requeridos. Por ejemplo:
light_source { <1000,1000,-1000>, rgb <1,0.75,0> //una luz anaranjada }
Normalmente la luz irradia desde la fuente en todas las direcciones
por igual. Sin embargo, podemos usar la palabra clave spotlight
para crear un cono de luz más intensa en el centro, y que decae hacia
los bordes suavemente.
Aunque el cono de luz decaiga suavemente en los bordes, los objetos iluminados por la luz cónica seguirán proyectando sombras nítidas. La sintaxis es la siguiente:
FUENTE_DE_LUZ_CONICA: light_source { <Location>, COLOR spotlight [MODIFICADORES_DE_LUZ...] } MODIFICADOR_DE_LUZ: ITEMS_LUZ_CONICA | ITEMS_LUZ_DE_AREA | MODIFICADORES_GENERICOS_DE_LUZ ITEM_LUZ_CONICA: radius Radius | falloff Falloff | tightness Tightness | point_at <Spot>Valores por defecto:
radius: 30 degrees falloff: 45 degrees tightness: 0
La palabra clave point_at
especifica a qué punto del
espacio debe apuntar la luz cónica. La línea que va desde el
emplazamiento de la luz hasta la coordenada point_at
,
define el centro del cono de luz. La siguiente ilustración puede ser de
ayuda para comprender cómo se relacionan los diferentes valores.
Las palabras clave falloff
, radius
, y
tightness
controlan la manera en que la luz decae hacia los
bordes del cono. Éstas sólo funcionan cuando se han especificado los
tipos de luz spotlight
o cylinder
.
La palabra clave falloff
especifica el tamaño total del
cono. Éste es el punto donde la luz decae hasta intensidad 0. El
valor de coma flotante que debes especificar es el ángulo, en grados,
entre el borde del cono y la línea central. El radio ( radius
)
especifica el tamaño del "punto caliente" en el centro del cono de luz.
Este punto caliente es un cono de luz más intensa dentro del cono del
foco, con la misma línea central. El valor del radio indica el ángulo,
en grados, entre el borde de este cono interior y la línea central. La
luz en el interior de este cono tiene una intensidad uniforme. La luz
entre los dos conos decae hasta 0.
Por ejemplo, asumiendo un valor tightness 0
, con radius
10
y falloff 20
, la luz desde el centro hasta un
radio de 10 grados retiene toda la intensidad. Desde 10 a 20 grados
desde la linea central, la luz decae hasta una intensidad 0. Para
valores mayores de 20 no hay luz.
Nota: Si los valores del radio y el decaimiento son iguales o muy cercanos, la intensidad de la luz decae rápidamente y la luz cónica tendrá un borde nítido.
Los valores de los ángulos para radius
y tightness
son la mitad del ángulo abierto de los respectivos conos, y nunca
pueden ser mayores de 90 grados. La luz decaerá suavemente entre los
dos ángulos, de la manera ilustrada en las siguientes figuras (siempre
que el ángulo del radio no sea negativo).
La palabra clave tightness
(tensión) se usa para
especificar un suavizado exponencial de los bordes. Cualquier valor
distinto de 0 afecta a la luz en el interior de ambos conos. La
intensidad de la luz, para un ángulo dado desde la línea central, será intensidad_total
* cos(ángulo) * tightness
. El valor por defecto de tightness
es 0. Los valores bajos crean una luz cónica más intensa, haciéndola más
ancha y con bordes más nítidos. Los valores altos crearán luces cónicas
menos intensas, con un punto central más pequeño y unos bordes más
suaves. Los valores aceptables varían entre 0 y 100.
Observa en estas figuras que el radio y el decaimiento interactúan
con el parámetro tightness
. Para controlar sólo con este parámetro la luz
cónica, usa radius 0 falloff 90
. Como
puedes ver en la figura inferior, en este caso el ángulo de decaimiento
no surte efecto, y el área iluminada viene determinada tan sólo por el
valor del parámetro tightness
.
Las luces cónicas pueden usarse en cualquier situación en que pueda usarse una fuente de luz normal. Como todas las fuentes de luz, son invisibles. Pueden usarse al mismo tiempo que el área de luz.
La palabra clave cylinder
dentro de una fuente de luz,
especifica que ésta es cilíndrica, lo cual es muy útil para recrear
rayos láser. Las fuentes de luz cilíndricas funcionan de forma muy
parecida a las cónicas, excepto en que los rayos se ciñen a un cilindro
en vez de a un cono. La sintaxis es la siguiente:
FUENTE_DE_LUZ_CILINDRICA: light_source { <Location>, COLOR cylinder [MODIFICADORES_DE_LUZ...] } MODIFICADOR_DE_LUZ: ITEMS_LUZ_CONICA | ITEMS_LUZ_DE_AREA | MODIFICADORES_GENERICOS_DE_LUZ ITEM_LUZ_CONICA: radius Radius | falloff Falloff | tightness Tightness | point_at <Spot>Valores por defecto:
radius: 0.75 grados falloff: 1 grados tightness: 0
Las palabras clave point_at
, radius
, falloff
y tightness
controlan las mismas características que en las
luces cónicas. Mira la sección "Fuentes de luz cónica".
Debes tener en cuenta que la luz cilíndrica es realmente una luz puntual. Los rayos se emiten desde un punto en todas direcciones, aunque se ven confinados en un cilindro. Los rayos de una luz cilíndrica no son paralelos.
Ésta es su sintaxis:
light_source { <Location>, COLOR [ITEMS_FUENTE_DE_LUZ...] parallel point_at <Spot> }
La palabra clave parallel
puede usarse con cualquier
tipo de fuente de luz.
Nota: En las fuentes de luz puntual
normales, el vector point_at
debe ir después de la
palabra parallel
.
Las luces paralelas son útiles para simular luces muy distantes, como el sol. Como el nombre sugiere, hace que los rayos de luz viajen paralelos.
Técnicamente, esto se hace lanzando los rayos desde el punto más
cercano en un plano, hasta el punto de intersección con el objeto. Este
plano viene determinado por la perpendicular definida por el vector de posición location
y el
parámetro point_at
.
Al escoger el emplazamiento de una fuente de luz paralela y la distancia desde ésta a los objetos iluminados, hay que tener dos cosas en cuenta:
fade_distance
y fade_power
utilizan la posición de la luz para determinar la distancia implicada en
la atenuación de la luz, así que ésta se comportará igual que en una
luz puntual. El área de luz también utiliza la posición de la luz para
sus cálculos.Las fuentes de luz de área ocupan un área del espacio finita de 1 o 2 dimensiones. Proyectan sombras suaves dado que los objetos pueden bloquear la luz parcialmente, mientras que en una luz puntual la luz simplemente se bloquea o no se bloquea (totalmente).
La palabra clave area_light
en POV-Ray crea unas
fuentes de forma rectangular, como un panel del luz. En vez de realizar
los complejos cálculos que se requieren para modelar un área de luz
verdadera, se aproxima mediante una matriz de luces puntuales
repartidas sobre el área ocupada por la luz. Este efecto se aplica sólo
a las sombras. La iluminacion del objeto se realiza, sin embargo, como
si se tratara de una luz puntual. La intensidad de cada luz puntual de
la matriz se disminuye para que el total de luz emitida sea el
especificado en la declaración del color de la luz. Su sintaxis es la
siguiente:
FUENTE_DE_LUZ_DE_AREA: light_source { <Location>, COLOR area_light AXIS_1_VECTOR, AXIS_2_VECTOR, Size_1, Size_2 [adaptive Adaptive] [ jitter ] [ circular ] [ orient ] [ MODIFICADORES_DE_LUZ...] }
Cualquier tipo de luz puede ser una luz de área
La instrucción area_light
define la posición, el tamaño
y la orientación del área de luz, así como el número de luces en la
matriz de luces. El vector de posición es el centro de un rectángulo
definido por los vectores <Axis_1>
y <Axis_2>
.
Éstos especifican la longitud y dirección de los bordes de la luz.
Como las luces de área son de forma rectangular, estos vectores
deben ser perpendiculares entre sí. Cuanto mayor sea el tamaño de la
luz, más delgada será la parte suave de las sombras. Los valores
enteros Size_1
y Size_2
especifican el número
de filas y columnas de la matriz del área de luz. Cuantas más luces
uses, más suaves serán las sombras, pero se incrementará el tiempo de
renderizado.
Nota: es posible especificar los parámetros del foco (spotlight) junto con los de la luz de área, para crear focos con luz de área. De esta manera se puede acelerar el renderizado de escenas con luz de área, ya que se reducen los cálculos de sombras suaves sólo a aquellas partes de la escena que lo necesitan.
Se puede crear un efecto interesante con una luz lineal. En lugar de tener forma rectangular, una luz lineal se extiende a lo largo de una línea, como un tubo fluorescente muy fino. Para crear este tipo de luz, usa una luz de área con una de las dimensiones ajustada a 1.
El comando jitter
es opcional. Si
se especifica, las posiciones de los puntos de luz en la matriz se
agitan aleatoriamente para eliminar los efectos de regularidad en las
sombras (bandas de sombra). El agitado es completamente aleatorio para
cada renderizado, y no debería de usarse en las animaciones.
El comando adaptive
se usa para activar el muestreo adaptativo en las fuentes de luz. Por
defecto, POV-Ray calcula la cantidad de luz recibida por una
superficie, desde una luz de área, por medio de un rayo de pruebas
lanzado desde cada punto de luz dentro de la matriz. Como puedes
imaginar, esto es bastante lento. El muestreo adaptativo intenta
aproximar estos cálculos usando el menor número de rayos posible. El número especificado tras la sentencia controla la cantidad de muestreo
a utilizar. Cuanto más alto sea este número, mayor precisión tendrán
las sombras, pero serán más lentas de renderizar. Si no estás seguro de qué valor usar, para empezar puedes especificar adaptive 1
.
Esta sentencia sólo acepta valores enteros, y no puede ser menor de 0.
Cuando calcula el muestreo adaptativo, POV-Ray empieza por lanzar un rayo de prueba hacia cada una de las esquinas de la luz de área. Si la cantidad de luz recibida por las cuatro esquinas es aproximadamente la misma, se asume que la luz de área es totalmente visible o totalmente invisible. La intensidad de la luz se calcula entonces como la media de la intensidad recibida desde las esquinas. Sin embargo, si la intensidad de luz de las esquinas difiere de forma significativa, se asume que la luz de área es sólo parcialmente visible. La luz de área se divide en cuatro cuartos, y cada sección es tratada de la forma anteriormente descrita. Ello permite a POV-Ray aproximar rápidamente la cantidad de luz de área visible, sin tener que lanzar un rayo de prueba desde cada punto de la matriz. A continuacion se ilustra este proceso:
Aunque que el método de muestreo adaptativo es rápido (relativamente
hablando), puede a veces producir errores en las sombras. La solución
consiste en reducir la cantidad de muestreo adaptativo. El número tras
la sentencia adaptive
especifica el número de veces que la
luz de área será dividida antes de que empiece la fase adaptativa. Por
ejemplo, si usas adaptive 0
se lanzará un mínimo de 4
rayos hacia la luz. Si usas adaptive 1
se lanzará un
minimo de 9 rayos. Con adaptive 2
se lanzarán 25 rayos,
con adaptive 3
81 rayos, y así sucesivamente. Obviamente,
cuantos más rayos de sombra se lanzan, más lento será el renderizado, así que
deberías usar el mínimo valor posible que obtenga buenos
resultados.
El número de rayos nunca excede el valor especificado de filas y
columnas en la luz de área. Por ejemplo, area_light x,y,4,4
especifica una matriz de luces de 4x4. Si usas adaptive 3
, debería empezarse el muestreo adaptativo con una
matriz de 9x9, pero
como la matriz de la luz es menor, no se realiza ningún muestreo y se
utiliza directamente la matriz de 4x4.
El comando circular
se ha añadido a las luces de área
para simular mejor las sombras circulares. Con luces de área normales,
los puntos de luz se reparten en una rejilla rectangular, con lo que
proyectan sombras parcialmente rectangulares alrededor de los objetos,
incluyendo los circulares. Con la inclusión del comando circular
en la luz de área, la luz se comprime y estira para que parezca un círculo: de esta manera se simulan mejor las luces circulares o
esféricas.
Hay que recordar varios aspectos:
circular
con
luces de area lineales o con áreas de 2x2.El comando orient
se ha añadido para simular mejores
sombras suaves. Sin este modificador, debes crear concienzudamente los
vectores de los ejes de una luz de área, ya que éstos definen tanto el área como la
orientación. Las luces de área son bidimensionales: los
objetos más encarados con el área de la luz reciben mayor cantidad de
luz que los que se encuentran a los lados.
Realmente, el área de luz en los lados de la matriz se reduce a una simple línea, que proyecta sombras suaves sólo en una dirección.
Entre estos dos extremos, la superficie de área que emite luz
progresa gradualmente. Incluyendo el modificador orient
en
la luz de área, la luz se gira para que siempre encare el punto que se
está comprobando. La orientación inicial no es importante, sólo tienes
que considerar las dimensiones del área al especificar los vectores. De
hecho, esto hace que la luz de área parezca realmente tridimensional
(esto es: una luz de área con ejes perpendiculares del mismo tamaño y
dimensiones, que usa los modificadores circular
y orient
,
simula una luz esférica).
El modificador de orientación tiene unas cuantas restricciones:
Ello es debido a que sin estas restricciones se pueden obtener resultados impredecibles.
Si alguna de las dos primeras reglas se transgrede, POV-Ray emitirá un mensaje de alerta y corregirá automáticamente el problema. En el caso de transgredir la tercera, sólo se emitirá un mensaje de error, y POV-Ray no corregirá el problema automáticamente.
Usando el comando shadowless
puedes hacer que una
fuente de luz no proyecte sombras. Estas luces se suelen llamar "luces
de relleno". Existe otra forma de simular luz de ambiente, pero las
luces sin sombra tienen la ventaja de poseer una fuente definida. Su
sintaxis es la siguiente:
FUENTE_DE_LUZ_SIN_SOMBRAS: light_source { <Location>, COLOR shadowless [MODIFICADORES_DE_LUZ...] } MODIFICADOR_DE_LUZ: ITEMS_LUZ_DE_AREA | MODIFICADORES_GENERICOS_DE_LUZ
El comando shadowless
puede usarse con todos los tipos
de fuentes de luz. La única restricción es que el comando debe aparecer
antes o después de todas las palabras reservadas de los
comandos spotlight
y cylinder
. Si se
mezclan, se obtiene un mensaje de error indicando que la palabra que
sigue al comando shadowless
no puede usarse con una fuente
de luz estándar. También debes observar que las luces sin sombras no
provocan brillos (highlights) en los objetos iluminados.
Normalmente, la fuente de luz no tiene una forma visible. La luz
simplemente irradia de un punto o área invisible. Puedes dar cualquier
forma a una fuente de luz utilizando la sentencia looks_like {
OBJETO }
.
El objeto contenido en la sentencia llevará un modificador no_shadow
implícito, para que éste no bloquee la luz. Sin este modificador implícito, la luz no
podría salir del interior del objeto y éste proyectaría una sombra sobre toda la escena.
Si quieres que el objeto asociado a la fuente de luz bloquee la luz de ésta, utiliza una unión de la siguiente forma:
union { light_source { <100, 200, -300> color White } object { Mi_objeto_lampara } }
Presumiblemente, deberás hacer que partes de la lámpara sean transparentes, para dejar que escape algo de luz.
Sintaxis:
light_source { <Location>, COLOR [ITEMS_FUNTE_DE_LUZ...] projected_through { OBJETO } }
La sentencia projected_through
puede usarse con
cualquier tipo de luz. También puede usarse cualquier objeto, siempre
que haya sido previamente declarado.
Proyectar una luz a través de un objeto puede ser considerado como lo contrario de la proyección de una sombra: sólo los rayos de luz que intersectan con el objeto contribuirán a iluminar la escena.
Este modificador también funciona con luces de área, provocando focos de luz con bordes suaves.
Los objetos situados entre la luz y el objeto a través del cual ésta se proyecta, no producen ninguna sombra para esta luz. Además, cualquier superficie en el interior del objeto de proyección tampoco provocará sombras.
Cualquier textura o interior del objeto de proyección será eliminada y el objeto no se mostrará en la escena.
Por defecto, POV-Ray no atenúa la luz que irradia de las fuentes de
luz en función de la distancia. Para obtener un efecto más realista
pueden usarse los modificadores fade_distance
y fade_power
,
seguidos de unos valores de coma flotante, que ayudan a modelar la atenuación en
función de la distancia recorrida.
El modificador fade_distance
se usa para especificar la
distancia a la cual llega la intensidad total de la luz, esto es, la
intensidad que fue indicada en la especificación del color. La
atenuacion real de la luz se describe con fade_power
Fade_Power
, que determina la tasa de disminucion. Por
ejemplo, pueden usarse una disminucion lineal o cuadrática
especificando respectivamente 1 o 2 para el valor de fade_power
.
La fórmula concreta utilizada para calcular el factor de atenuación es
la siguiente:
siendo d
la distancia recorrida por la luz.
No debes pasar por alto dos hechos importantes. Primero, para una
distancia de atenuación (fade_Distance
) mayor que
1, la intensidad de la luz a distancias menores realmente se
incrementa. Ello es necesario para obtener el color de la fuente de luz
cuando la distancia recorrida es igual al valor especificado para fade_distance
.
Segundo, sólo se atenua la luz que proviene directamente de la fuente:
la luz reflejada o refractada no se atenúa con la distancia.
Por defecto, las fuentes de luz interactuan con los medios
atmosfericos añadidos a la escena. Este comportamiento puede
desactivarse usando media_interaction off
en la declaración de la fuente de luz.
Nota: en POV-Ray 3.0 esta característica se controlaba con el comando atmosphere
.
Normalmente, la luz proveniente de las fuentes de luz no se ve
influenciada por la niebla o el medio atmosférico. Puede activarse la atenuación
atmosférica usando el modificador media_attenuation
on
en la fuente de luz. Toda la luz proveniente de esa fuente
será entonces atenuada al atravesar la niebla o el medio, con una disminución exponencial dependiente de la niebla o medio. Si no hay
ningún medio o niebla, no se efectuará ninguna atenuación.
Nota: en POV-Ray 3.0 esta característica se controlaba con el comando atmospheric_attenuation
.
|