Trazado de Rayos. Introducción a POV-RAY.

1.Introducción.

Pov-Ray es un programa de trazado de rayos que nos permite generar imágenes y animaciones foto-realistas. A diferencia de OpenGl, la escena no se genera en tiempo real. El proceso para crear una animación será diseñar primero la escena, y a continuación generar la imagen o la secuencia.

En cada escena deberemos definir la posición de la cámara, las luces, y los objetos que la componen con sus propiedades. También podremos generar animaciones, seleccionando el número de imágenes que la componen y los movimientos que se deben producir durante la animación. En el caso de las animaciones, Pov-Ray crea un conjunto de imágenes independientes que deberemos unir para formar una animación en algún programa que nos permita crear vídeos a partir de imágenes.

Pov-Ray es un software libre, que os podéis bajar de http://www.povray.org/

2.Componente básicos de una escena.

La forma de definir una escena será escribiendo en un fichero ascii, cuya extensión será .pov, los componentes de la escena. A continuación visualizaremos la escena con la opción Render/Start rendering. Desde la opción de menu Render/Edit Settings podemos configurar el tamaño de la imagen y las algunas opciones de visualización. La imagen o imágenes generadas estarán en formato bmp.

Veamos cómo crear una escena.

Pov-ray tiene un editor de ficheros que nos permite rellenar con facilidad los ficheros así como tener varios abiertos a la vez. Con la opción File / New File crearemos un nuevo fichero en el que podremos introducir los elementos de la escena.

Además, para ir introduciendo elementos en la escena, podemos hacerlo utilizando las opciones de los menús, que nos añadirán objetos con una serie de valores por defecto que podremos cambiar. Para ello deberemos situar el cursor en el punto del fichero donde queramos que se introduzca el comando seleccionado.

Desde el menú Insert / Headers podemos seleccionar la opción Scene File Header y a continuación Standard Includes para poner la cabecera del fichero e incluir los ficheros de colores y texturas.

2.1.Insertar una cámara.

Uno de los componente básicos de la escena es la cámara, con la cual definiremos el punto de vista y hacia donde miramos. Podemos definir una desde el menú Insert / Cameras / A typical camera . Esto nos añade una cámara con valores por defecto que podemos cambiar:

camera
{
location <0,10, -15> // position of camera <X Y Z>
up y // which way is +up <X Y Z>
look_at <0.0, 0.0, 0.0> // point center of view at this point <X Y Z>
}

También podemos definir una serie de propiedades de la cámara como el zoom, la proporción, o el tipo de perspectiva (esférica, cilíndrica, etc.) con lo que podremos obtener diferentes efectos.

2.2.Iluminación.

Para añadir luces a nuestra lo podemos hacer desde el menú Insert / Light Sources / Light Definition. Deberemos definir al menos, la posición de la luz y el color:

light_source {
<10, 10, 10> // position of the light source
color rgb 1.0 // color of the light
}

En este mismo menú tenemos opciones para insertar luces de diferentes tipos: puntuales, focos, cilíndricas, ambientales, etc.

2.3.Objetos simples.

Una vez insertada la cámara y las luces, debemos añadir los objetos de nuestra escena. Esto lo podemos hacer desde el menú Insert / Shapes. Por ejemplo, si creamos un objeto simple como una caja, un cilindro o un plano, lo definiremos así:

box {
<-1, -1, -1> // one corner position <X1 Y1 Z1>
< 1, 1, 1> // other corner position <X2 Y2 Z2>
}

A los objetos debemos añadirles, algún material o textura. Por ejemplo, podemos ponerle un color con Insert / Textures / Pigment Component:

// create a box that extends between the 2 specified points
box {
<-1, -1, -1> // one corner position <X1 Y1 Z1>
< 1, 1, 1> // other corner position <X2 Y2 Z2>
// texture component
pigment { color rgb <0.7,0.5,0.3> // solid color pigment }
}

3. Formas complejas.

Para diseñar escenas, Pov-Ray facilita la tarea con una serie de objetos definidos, así como operaciones que se pueden realizar sobre ellos. Desde el menú Insert / Shapes tenemos opciones para crear todo tipo de objetos, desde una esfera, toro, prisma, hasta objetos complejos como mesh de triángulos, isosuperficies, cuádricas, fractales, superficies de revolución,etc.

También podemos crear objetos CSG (Insert / CSG Operations).

Desde el menú Insert / Transformations podemos realizar rotaciones, traslaciones y escalados sobre los objetos añadidos. La transformación deberá incluirse dentro de la definición del objeto. Por ejemplo, si creamos una esfera y queremos trasladarla y escalarla:

sphere {
<0, 1, 0> // center of sphere <X Y Z>
0.5 // radius of sphere
pigment{ color White }
// Move object or texture relative to current position
// example: translate -5.0*z
translate <2.0, 4.0, -1.0> // <dX, dY, dZ>
}

También tenemos la opción de modificar las propiedades del objeto para que, por ejemplo, no cree sombras, esté doblemente iluminado, etc. desde Insert / Shape modifiers.

4.Texturas.

Podemos crear interesantes efectos definiendo adecuadamente las texturas que se aplican sobre un objeto. La textura tiene una serie de propiedades que podemos modificar. Las más básicas son el color y el acabado de la superficie. Para definir el pigmento de una textura lo hacemos desde Insert / Texture / Pigment Component .

Los pigmentos, podemos definirlos en rgb, o bien definir sus propiedades. También podemos utilizar colores ya predefinidos por defecto, que están en el fichero colors.inc. En el fichero textures.inc también tenemos una serie de texturas ya definidas. Por ejemplo:

texture {Cherry_Wood }

pigment { color White }

Las propiedades de la textura en cuanto a su interacción con la luz, las definimos con Insert / Texture /Finish Properties:


finish {
ambient 0.1 // ambient surface reflection color [0.1]
// (---diffuse lighting---)
diffuse 0.6 // amount [0.6]
brilliance 1.0 // tightness of diffuse illumination [1.0]
// (---phong highlight---)
phong 0.5 // amount [0.0]
phong_size 40 // (1.0..250+) (dull->highly polished) [40]
// (---specular highlight---)
specular 0.5 // amount [0.0]
..........................................................
}

Tenemos otras muchas opciones para crear mapas de colores con patrones, transparencias, etc.

5.Crear animaciones.

Para crear una animación, debemos generar una secuencia de imágenes, que después, en algún programa externo uniremos secuencialmente.

Pov-Ray ofrece una serie de facilidades para las animaciones. En primer lugar, existe la variable clock. Esta variable la introduciremos en el objeto que deseamos que se mueva durante la animación. Por ejemplo, si queremos trasladar un objeto en el eje x:

translate <clock, 0, 0>

El siguiente paso será crear un fichero de inicialización (.ini) asociado a nuestra escena. En este fichero definiremos el número de frames que queremos crear, y el valor inicial y final de la variable clock. Un ejemplo sería:

Input_File_Name=mifichero.pov
Initial_Frame=1
Final_Frame=5
Initial_Clock=0
Final_Clock=1
Cyclic_Animation=on
Pause_when_Done=off

A continuación, generamos la escena con Start Rendering y se crearán 5 imágenes, en las que el objeto se irá trasladando.

Para crear una película a partir de estas imágenes independientes podemos utilizar distintos programas que se pueden obtener en el web de povray. Uno de ellos, para crear vídeos avi a partir de fichero bmp es Avi Creator : http://www.bloodshed.net/avi.html