El trazador de rayos Povray. (Tutorial, principios básicos I).

Ejemplo sencillo realizado con Povray
Ejemplo sencillo realizado con Povray

Lo que me propongo aquí y en otros artículos que seguirán a este, es explicar el uso de un trazador de rayos llamado Povay. Hay otros trazadores de rayos, como Blender que incluso tienen un interfaz de modelado integrado. La filosofía de Povray es el de un lenguaje de descripción de escenas.


Introducción:

Puesto que en mi blog procuro orientar a los escritores autoeditores, proponiendo ideas, recursos y tutoriales, me gustaría resaltar que para hacer un buen vídeo promocional de un libro basta con un vídeo de cinco minutos, por lo tanto el uso de Povray puede ser muy adecuado para rellenar algunos minutos con diversos efectos infográficos sencillos, tales como un libro 3D girando, un planeta girando, un platillo volante en movimiento, un Scroll de texto 3D tipo guerra de las galaxias, un paisaje irreal, etc.  Puede que hacer todo un vídeo con Povray no sea buena idea, pero Povray es relativamente  sencillo de usar para hacer cosas sencillas, y es muy potente.

Povray (Persistence of Vision Raytracer) es básicamente un trazador de rayos. No resulta fácil explicar lo que significa este término sin entrar en ciertos detalles, pero dejaremos para más adelante (en posteriores artículos) la explicación detallada de qué es un trazador de rayos. Ahora nos limitaremos a esbozar dicho concepto. El trazado de rayos es una técnica para representar escenas imaginarias definidas en el ordenador mediante el uso de unos modelos matemáticos, en los que se establecen los objetos y sus formas, así como puntos de luz y una cámara. La forma en que el ordenador intenta obtener una imagen lo más realista posible es siempre el resultado de obtener la mejor imagen con el menor coste de cálculo posible.

Povray trabaja con un lenguaje estructurados de descripción de escenas. Todo se define en base a un espacio de coordenadas x,y,z en 3D.  Se puede definir una fuente luz, una cámara y una serie de objetos. La forma en que trabajan los trazadores de rayos, es por imitación a la forma en que las imágenes llegan a una cámara o a la retina de un ojo, pero otras veces solo se busca un efecto parecido y se usan trucos de computación. Sin estos atajos sería imposible obtener una imagen en un tiempo razonable. El ordenador deberá calcular una gran cantidad de trayectorias de rayos lumínicos, pero no lo hace de la misma forma que ocurre en la naturaleza. En ésta los rayos salen de la fuente de luz principal y cada vez que inciden en un punto de una superficie se genera una fuente de luz secundaria y termina incidiendo en la retina del espectador o en la película de una cámara. Daremos ahora solo un detalle como anticipo. En un trazador de rayos estos viajan en sentido contrario. Desde un punto de la retina, o película de la cámara hacia los objetos primero, y por último llegarán a la fuente de luz. Dejaremos la explicación detallada de este y otros aspectos para el artículo siguiente.

La calidad del trazador de rayos Povray es excelente, y no tiene nada que envidiar a la de muchos productos comerciales. Los productos comerciales de diseño basados en trazado de rayos suelen venir integrados con una serie de herramientas para diseñar cómodamente toda clase de objetos.

En el caso de Povray se pueden usar modeladores de diferentes casas independientes o traductores de formatos, y en general una gran variedad de herramientas. Existe un modelador llamado ‘kpovmodeler’ especialmente diseñado para él.

El manual de Povray impreso en papel cuando yo elaboré la primera versión de este artículo en 1996 ya ocupaba 600 hojas. Povray ha continuado sacando nuevas versiones y ahora el manual viene en html. Las posibilidades de Povray son enormes, pero eso no significa que sea necesario estudiar ese manual tan enorme  para poderle sacar un cierto provecho. Se trata de un manual de referencia muy completo que nos servirá de consulta para poder hacer cantidad de cosas. Como más se aprende es con ejemplos sencillos que muestren algún concepto.  El manual viene lleno de estos ejemplitos que ilustran el efecto de cada sentencia del lenguaje.

Lo cierto es que Povray nos permite hacer una incursión en el mundo de la infografía por la puerta grande, debido a sus increíbles capacidades técnicas.

Actualmente es fácil localizar los paquetes y estos tienen sistemas automatizados para su instalación. Yo uso SO Linux Ubuntu y localicé la nueva versión de Povray con ‘apt-cahe search’. Se instaló como cualquier otro paquete. El paquete básico se llama ‘povray’, también necesitará ‘povray-doc’, y ‘povray-includes’, recomiendo además instalar ‘povray-examples’, y ‘kpovmodeler’. Todo ello en Debian, (lógicamente también en Ubuntu) puede hacerse mediante el comando.

apt-get install povray povray-doc povray-includes povray-examples kpovmodeler

No es útil comentar las mil maneras en que pueden hacerse las mismas cosas, así que directamente explicaré el sistema que yo uso. Los comienzos son siempre un poco más duros, pero si es capaz de realizar los ejercicios propuestos en este artículo, que son bastante sencillos, tendrá abierta la puerta a un mundo de posibilidades inimaginables. Lo recomiendo que instale Povray e intente seguir este artículo hasta conseguir la imagen que encabeza el artículo. Si tiene dudas coméntelas aquí para que otros puedan beneficiarse de las respuestas.

Para trabajar con Povray hay que ser capaz de imaginar escenas en 3D, y así poder trasladarlas al lenguaje Povray. Generalmente imaginamos una escena situándonos en el punto donde hemos situado la cámara mirando a objeto que nos interese. Este estará iluminado desde otro lugar. Esto implica unas coordenada x,y,z para el objeto, otras para la cámara y otras para la fuente de luz, y además una orientación de la cámara en dirección al objeto. (esto último se puede hacer orientando la cámara para que mire al punto que nos interesa indicando sus coordenadas). Puede que no acertemos a la primera con algunas coordenadas y necesitemos una serie de tanteos. Si, no miramos en la dirección adecuada, o si la luz queda encerrada dentro de un objeto opaco, etc. no veremos nada en el resultado final. En el momento que veamos algo, aunque salga desplazado, ya podemos trabajar tanteando por prueba y error.

Esta forma de trabajar por prueba y error, requiere usar el comando de Povray muchas veces y cuanto menos tengamos que teclear mucho mejor. Para ello he realizado un programa ‘pov.py’ en lenguaje Python que genera un fichero *.ini con los parámetros necesarios para usar Povray .

Existen varios ficheros *.ini proporcionados a modo de ejemplo para propósitos generales.Esto da lugar a diversas posibilidades para establecer la configuración. Se puede referenciar en una variable de entorno nuestro fichero de configuración por defecto, o se pueden usar variables para localizar la librería de includes por defecto, etc.; también se pueden pasar como argumentos un montón de opciones pero nosotros lo pasaremos casi todo en un fichero de configuración *.ini que a su vez nuestro programa ‘pov.py’ pasará como argumento en la linea de comandos.

Descargar  pov.py

Para obtener una breve ayuda de este pequeño programa realizado por mí, teclee ‘pov.py’ sin argumentos. (Conviene que lea los comentarios del código). Si no tiene costumbre de trabajar con Povray, esta utilidad le servirá como metodología inicial de trabajo. Posteriormente es probable que desee adaptar este script a sus necesidades particulares. La versión original se hizo en lenguaje shell script y se ha traducido a lenguaje Python para que sea más fácil migrarlo a Windows.

Cree la estructura de directorios adecuados para poder trabajar con ella  y verá qué sencillo le resulta empezar renderizando escenas desde el primer día. Nosotros basaremos todos los ejercicios en el uso de esta herramienta ‘pov.py’. En posteriores artículos ya no explicaremos su uso. Aunque no es imprescindible usarla, le resultará más cómodo hacerlo.

Empezaremos con un ejemplo sencillo para comprobar que todo funciona. En la figura aparecen tres bolas. Dos grandes de espejo y oro respectivamente, y otra menor de vidrio plomizo situada delante.  Tanto el suelo como la cúpula celeste también están realizados con esferas.  Este ejemplo pretende poner de manifiesto que no es necesario un diseño complicado para que resulte bonito. A continuación, el fuente que describe la escena en lenguaje povray.

Descargar el fuente  sample1.pov

Las coordenadas en el espacio 3D se definen con tres valores x,y,z en coma flotante con la sintaxis <x,y,z>. Las magnitudes son unidades arbitrarias de longitud. Puede imaginar que son centímetros, milímetros, metros, lo que quiera.Eso dependerá de si está modelando un insecto, un edificio, o un planeta.

Por ejemplo en la definición de la cámara viene su situación como ‘location <0, 15, 35>’. Es decir, esta a 15 de altura, y 35 unidades hacia atrás. Para alejarla aún mas de los objetos tendríamos que aumentar el valor 35 al valor deseado. La cámara esta mirando al punto <0,10,0> que es donde se tocan las dos esferas grandes. (look_at).

Las esferas se definen situando primero el centro de la misma en un punto del espacio 3D y luego indicando el radio.

‘sphere { <-10, 10, 0> 10 }’  pero al ser un objeto sólido necesita una textura la apariencia en superficie. Por ejemplo: ‘sphere { <-10, 10, 0> 10  texture { Gold_Metal } }’  donde Gold_Metal es una de tantas texturas previamente definidas. Concretamente esta podemos usarla por haber incluido “textures.inc”. Este ejemplo es el primero y no pretendemos que asimile ya demasiados conceptos del lenguaje. Tan solo que capte en qué consiste el lenguaje de descripción de escenas. Ya conoce una de las formas de definir la cámara, una luz y un objeto sencillo, aunque no comprenda aún lo que hace el programa, lo cierto es que puede intentar descolocar algunos objetos. Puede intentar situar la cámara más lejos o en otra perspectiva.

Podríamos haber empezado presentando el modelador kpovmodeler, que hace innecesario trabajar a nivel de lenguaje. Es un interfaz gráfico estupendo, pero aprender Povray usando este modelador limitará la comprensión de este trazador,  y no podrá sacarle todo el partido. Podría crearle el hábito de recurrir en exceso a este modelador y tarde o temprano necesitará entrar a nivel de lenguaje, porque es donde obtendrá toda la potencia del mismo. Hablaremos del modelador en otro momento.

El nombre de este proyecto es ‘sample1’, y debe usarse el mismo nombre para la carpeta que contiene el fuente, el cual tendrá el mismo nombre terminado en ‘.pov’. Eso no tiene que ver con Povray, pero debe ser así para que nuestra utilidad ‘pov.py’  funcione y le facilite el trabajo. Es decir, que asumiremos que este código estará en un fichero con nombre del tipo ‘…/sample1/sample1.pov’.

Solo tiene que situarse en el directorio sample1 colocar el fuente sample1.pov y ejecutar el comando.

pov.py 8 8

Además de la imagen ‘sample1.png’, obtendremos un fichero ‘sample1.ini’ que solo resulta útil si deseamos saber con que parámetros se ha invocado el trazador Povray.

Descargar el sample1.ini

Si ya ha llegado hasta aquí, el resto le va a resultar mucho más fácil. Para muestra un botón. ¿Sería usted capaz de colocar la bola de vidrio pequeña encina de una grande? Intente hacerlo de un solo intento recurriendo a sus nociones básicas de geometría 3D. No se asuste, es muy sencillo, déjese llevar por la intuición como si se tratara de un juego de adivinación, y verá que no es tan difícil.

Referencias:

Nota:

Este artículo es una revisión actualizada de otro ‘Comenzando con Povray’ que se publicó  en la revista LinuxFocus. en 1996.

Se ha modificado el lanzador, el fuente se ha adecuado a la versión actual de Povray (versión 3.5), y el contenido del artículo también ha sido profundamente modificado.

Share

3 thoughts on “El trazador de rayos Povray. (Tutorial, principios básicos I).

  1. un poco extenso tu articulo y letra muy chiquita. lo lei pero estuve a punto de dejarlo. pero gracias estuvo bueno

  2. Yo uso el navegador de Google, sufro vista cansada, y para leer cualquier cosa necesito aumentar el texto. Eso se logra pulsando simultáneamente las teclas Control y la tecla más del teclado numérico. ([Ctrl]+[+] ) Puedes aumentar el texto todo lo que quieras.

    En cuanto a la extensión, yo mismo lo admití (‘ Si ya ha llegado hasta aquí, el resto le va a resultar mucho más fácil.’)

    En cualquier caso y dado tu interés, te recomiendo que instales el trazador, y lo apliques a algún ejemplo sencillo como el que yo indico.

    Cualquier duda que tengas la puedes preguntar aquí y la resolveré con mucho gusto.

  3. Buenas , gracias por tu articulo, necesito hacer un sistemas solar (sin Movimiento) me puedes ayudar..??

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*