Este artículo inicia una serie sobre el trazador
de rayos Povray. El propósito de este primero es facilitar su uso
a principiantes en Linux.
Persistence of Vision Ray-Tracer (POV-Ray) Copyright 1996 POV-Team.
Introducción
Povray (Persistence of Vision Raytracer) es básicamente
un trazador de rayos. No resulta facil 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 el concepto de trazado de
rayos. El trazado de rayos es una técnica para representar
escenas imaginarias definidas en el ordenador mediante el uso de unos
modelos, 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.
Cuando se puede, se intenta imitar a la naturaleza y otras veces solo
se busca un efecto parecido. Sin estos atajos sería
imposible obtener una imagen en un tiempo razonable. El ordenador
deberá calcular una gran cantidad de trayectorias de rayos,
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 llegan 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. Eso no significa que no sea posible lograr
un diseño bonito incluso espectacular exclusivamente con
Povray. Para ello hace falta sobre todo una gran dosis de
imaginación.
Por añadidura los fuentes son públicos lo que nos
permite investigar las técnicas utilizadas.
El Copyright de Povray viene descrito en el Apéndice A del
manual, se trata al igual que Linux de una licencia de tipo
freeware. Los detalles deben ser consultados en el texto original de
dicha licencia.
El manual de Povray está disponible en su versión de
texto (ideal para búsquedas rápidas), en formato HTML, y
en formato postscript. Si tiene intención de imprimir el
documento postcript prepare unas 600 hojas más o menos; la
razón de ello es que las posibilidades de Povray son enormes,
pero no se asuste. Este artículo le permitirá probar
Povray y en artículos posteriores se expondrán los
conceptos básicos.
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. Según mi propia
concepción de la infografía el dominio de la
técnica nos puede acercar a la obtención de
imágenes con un grado de realismo increíble, pero el
valor artístico de una imagen no tiene nada que ver ni con el
realismo ni con la técnica. La técnica es una valiosa
ayuda pero todo lo que realmente tiene valor artístico tiene
que ser concebido previamente en nuestra cabeza. La idea es lo que
cuenta.
Muchas veces me gusta jugar con los conceptos de realismo e
irrealidad. la infografía se presta a este juego de una y mil
formas distintas provocando un estimulante conflicto en el
espectador. Guardo una pequeña selección de
imágenes creadas con Povray en
http://slug.ctv.es/~acastro/infograf/catalog.htm
Tengo un diseño de un híbrido entre avión tipo
velero y una gaviota.
Gaviota 1
En esta primera imagen podemos ver su gran parecido con una gaviota.
Gaviota 2
En esta segunda perspectiva se diría que es un avión,
y sin embargo se trata del mismo objeto.
La silueta es la de una gaviota. Tiene en la parte superior una cabina
transparente donde se aprecian dos pilotos. La pigmentación es extraña
pero gracias al trazado de rayos estas imágenes obtienen un grado
de realismo notable.
Cuando estas imágenes se muestran a los ojos de un niño
de unos cinco años y le preguntamos su opinión dirá
que es una foto, no un dibujo. En cambio mostradas a un adulto tendrá
cierta dificultad en clasificarla. Dirá claramente que no es un
dibujo, dirá claramente que no es una foto. Sabrá quizás
que se ha obtenido con un ordenador, pero cómo ha conseguido el
ordenador este extraño y bello resultado?
En mi opinión este tipo de resultado es el que interesa conseguir
en los diseños. Imágenes desconcertantes donde lo sintético
y lo artificial se armonizan con diversos efectos tremendamente realistas.
Para ello resulta imprescindible una gran dosis de imaginación
y un cierto dominio de la técnica.
Para conseguir imágenes muy realistas en cambio si suele ser
necesario dominar plenamente la técnica, pero esto no es arte necesariamente.
He pasado muy buenos ratos con Povray y estoy seguro de que todo aquel
que se anime disfrutará con ello..
Algunas de las características
más destacadas de Povray
-
Rendering parcial de una imagen, posibilidad de continuar un rendering
interrumpido.
-
Opciones para renderizar con distintas resoluciones, y con distintos grados
de perfección a fin de reducir el tiempo de procesamiento.
-
Posibilidad de visualización de imagen durante la creación
de la misma. (Posibilidad en SVGA y en Xwindows)
-
Posibilidad de un rápido vistazo en mosaico.
-
Creación de logs (registros) muy completos que permiten analizar
donde se está gastando más CPU.
-
Análisis sintáctico previo con buen tratamiento de errores.
-
Abundante librería de texturas, con posibilidades enormes para crear
prácticamente cualquier clase de texturas.
-
Efectos de superficie: rugosidad, brillos, reflejos, transparencia, etc.
-
Figuras geométricas simples, (esferas, conos, planos, cubos, prismas,
etc.).
-
Figuras geométricas basadas en complejas ecuaciones matemáticas.
-
Figuras formadas por redes de triángulos.
-
Suavización de aristas, por ejemplo en figuras formadas por triángulos.
-
Figuras complejas formadas por agregación de otras.
-
Delimitación de objetos complejos mediante figuras sencillas para
optimizar el rendimiento del trazador.
-
Pigmentación de una figura a partir de una imagen plana.
-
Figuras generadas por sobrealzado proporcional al color de un pixel a partir
de una imagen. (muy útil para generar terrenos)
-
Figuras generadas por revolución (modelado "en torno").
-
Textos tridimensionales a partir de fuentes Tiff.
-
Efectos atmosféricos, por ejemplo nieblas.
-
Efectos luminosos con varios tipos de luces, focos, etc.
-
Distintas opciones de Antiseudónimos (Anti-Aliasing). Estos efectos
permiten que una línea diagonal parezca más lineal camuflando
el conocido efecto escalera mediante un degradado suave. Existen distintos
métodos disponibles para ello en Povray.
-
Completo lenguaje de descripción de escenas.
-
Posibilidad de generar animaciones con distintos métodos:
-
Bucle externo (uso de la opción Clock=n.n).
-
Bucle interno (uso de parámetros internos en el propio fuente).
-
Dado que permite la definición de constantes y que estas pueden
localizarse en un fichero include. También es posible generar animación
externa mediante utilidades o scripts que actualicen estos includes a cada
fotograma. Este sistema aunque fue el que se utilizaba en las primeras
versiones de Povray sigue siendo útil.
Donde se puede obtener Povray
Povray puede ser obtenido por ftp.
El lugar oficial para su obtención es el siguiente.
http://www.povray.org
ftp://ftp.povray.org
Existe una revista electrónica dedicada a povray aunque parece
abandonada conserva algunos números muy buenos que aparecieron por
la misma epoca que la versión 3.0 de Povray . PovZine
http://www.povray.org/pub/povray/ezine
Existen muchos MIRRORS pero ninguno tiene carácter oficial.
Contenido: (15-Enero-1998) ftp.povray.org
Para que se pueda hacer una idea de lo que hay en el sitio oficial se
ofrece un extracto.
pub
lrwxr-xr-x 1 povray vuser 15 Aug 24 11:12 HEADER -> povray/.message
drwxr-xr-x 5 povray vuser 512 Aug 24 13:13 povray
pub/povray
-rw-r--r-- 1 povray vuser 305 Jan 9 01:30 .message
lrwxr-xr-x 1 povray vuser 8 Aug 24 13:13 HEADER -> .message
dr-xr-xr-x 2 povray vuser 1536 Aug 24 13:13 Hall-Of-Fame
-r--r--r-- 1 povray vuser 3262 Aug 24 10:52 MIRRORS
dr-xr-xr-x 10 povray vuser 512 Aug 24 11:14 Official-3.0
-r--r--r-- 1 povray vuser 3262 Aug 24 10:52 README.MIRRORS
-r--r--r-- 1 povray vuser 3731 Aug 24 10:52 README.MIRRORS.HTML
dr-xr-xr-x 2 povray vuser 1024 Aug 24 13:13 Ray-Tracing-News
pub/povray/Hall-Of-Fame
-r--r--r-- 1 1017 1017 235235 May 14 1996 6x86.jpg
-r--r--r-- 1 1017 1017 393630 Sep 30 1994 6z4.jpg
-r--r--r-- 1 1017 1017 308 Sep 30 1994 6z4jpg.txt
-r--r--r-- 1 1017 1017 154256 Oct 13 1995 astplant.jpg
-r--r--r-- 1 1017 1017 2991 Oct 13 1995 astplant.txt
-r--r--r-- 1 1017 1017 110322 Sep 30 1994 ballz5.gif
-r--r--r-- 1 1017 1017 287164 Dec 8 1994 bell_jar.jpg
-r--r--r-- 1 1017 1017 57111 Oct 13 1995 bkntools.jpg
-r--r--r-- 1 1017 1017 610 Oct 13 1995 bkntools.txt
-r--r--r-- 1 1017 1017 331058 Sep 30 1994 brass.jpg
-r--r--r-- 1 1017 1017 254 Sep 30 1994 brass.txt
-r--r--r-- 1 1017 1017 284250 Sep 30 1994 bug1.gif
-r--r--r-- 1 1017 1017 279273 Sep 30 1994 camera.jpg
-r--r--r-- 1 1017 1017 367490 Oct 13 1995 crane.jpg
-r--r--r-- 1 1017 1017 2650 Oct 13 1995 crane.txt
-r--r--r-- 1 1017 1017 101473 Sep 30 1994 dragons.jpg
-r--r--r-- 1 1017 1017 295129 Sep 30 1994 frosty.gif
-r--r--r-- 1 1017 1017 777531 Sep 30 1994 frosty.tga.zip
-r--r--r-- 1 1017 1017 88350 Sep 30 1994 geodome.jpg
-r--r--r-- 1 1017 1017 2252 Sep 30 1994 geodome.txt
-r--r--r-- 1 1017 1017 11801 Sep 30 1994 geosmall.gif
-r--r--r-- 1 1017 1017 356889 Oct 13 1995 gofood1.jpg
-r--r--r-- 1 1017 1017 483 Oct 13 1995 gofood1.txt
-r--r--r-- 1 1017 1017 375781 Oct 13 1995 gogadget.jpg
-r--r--r-- 1 1017 1017 825 Oct 13 1995 gogadget.txt
-r--r--r-- 1 1017 1017 72337 Oct 13 1995 info_hwy.jpg
-r--r--r-- 1 1017 1017 1796 Oct 13 1995 info_hwy.txt
-r--r--r-- 1 1017 1017 109462 Oct 13 1995 jmwarmup.jpg
-r--r--r-- 1 1017 1017 3346 Oct 13 1995 jmwarmup.txt
-r--r--r-- 1 1017 1017 628 Sep 30 1994 julia.txt
-r--r--r-- 1 1017 1017 50762 Sep 30 1994 kettle.jpg
-r--r--r-- 1 1017 1017 295555 Sep 30 1994 kkteaset.jpg
-r--r--r-- 1 1017 1017 96 Sep 30 1994 kkteaset.txt
-r--r--r-- 1 1017 1017 151503 Sep 30 1994 lionfish.gif
-r--r--r-- 1 1017 1017 112 Sep 30 1994 mindmaz1.txt
-r--r--r-- 1 1017 1017 341101 Sep 30 1994 museum.jpg
-r--r--r-- 1 1017 1017 564 Sep 30 1994 museum.txt
-r--r--r-- 1 1017 1017 364856 Aug 19 1995 pcktwtch.gif
-r--r--r-- 1 1017 1017 580 Aug 19 1995 pcktwtch.txt
-r--r--r-- 1 1017 1017 590679 Jan 29 1996 pcktwtch.zip
-r--r--r-- 1 1017 1017 417 Sep 30 1994 pclock.txt
-r--r--r-- 1 1017 1017 213426 Sep 30 1994 plntscap.gif
-r--r--r-- 1 1017 1017 2558 Sep 30 1994 plntscap.txt
-r--r--r-- 1 1017 1017 125648 Oct 13 1995 springeq.jpg
-r--r--r-- 1 1017 1017 1129 Oct 13 1995 springeq.txt
-r--r--r-- 1 1017 1017 239594 Sep 30 1994 studying.jpg
-r--r--r-- 1 1017 1017 244179 Oct 13 1995 subrace.jpg
-r--r--r-- 1 1017 1017 2681 Oct 13 1995 subrace.txt
-r--r--r-- 1 1017 1017 191332 Sep 30 1994 sundae.gif
-r--r--r-- 1 1017 1017 162140 Sep 30 1994 woild2.gif
pub/povray/Official-3.0
-r--r--r-- 1 povray vuser 80 Jul 20 01:47 .message
drwxr-xr-x 2 povray vuser 512 Dec 16 03:53 Amiga
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:31 Docs
lr-xr-xr-x 1 povray vuser 11 Aug 24 11:14 HEADER -> ../.message
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:31 Linux
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:31 MS-Dos
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:36 Macintosh
-r--r--r-- 1 povray vuser 83 Jul 20 01:48 README
-r--r--r-- 1 povray vuser 222 Feb 6 1997 README.HTML-DOCS
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:31 SunOS
dr-xr-xr-x 2 povray vuser 512 Aug 24 10:32 Unix
dr-xr-xr-x 3 povray vuser 512 Aug 24 10:32 Windows
-r--r--r-- 1 povray vuser 15055 Jul 19 1996 gamma.gif
-r--r--r-- 1 povray vuser 1776 Jul 19 1996 gamma.gif.txt
-r--r--r-- 1 povray vuser 3735 Feb 6 1997 news.3.01.txt
-r--r--r-- 1 povray vuser 18452 Feb 5 1997 povlegal.doc
-r--r--r-- 1 povray vuser 24060 Feb 1 1997 povwhere.get
-r--r--r-- 1 povray vuser 110 Aug 24 11:01 www.html
pub/povray/Official-3.0/Docs
-r--r--r-- 1 1017 1017 413 Feb 7 1997 README
-r--r--r-- 1 1017 1017 286517 Feb 7 1997 povdoc.zip
-r--r--r-- 1 1017 1017 764628 Feb 7 1997 povdocps.zip
-r--r--r-- 1 1017 1017 1601733 Feb 7 1997 povhtml.zip
-r--r--r-- 1 1017 1017 18452 Feb 7 1997 povlegal.doc
-r--r--r-- 1 1017 1017 24060 Feb 2 1997 povwhere.get
pub/povray/Official-3.0/Linux * * * * *
-r--r--r-- 1 povray vuser 786 Jul 20 01:41 00_index.txt
-r--r--r-- 1 povray vuser 442 Jul 20 01:42 README
-r--r--r-- 1 povray vuser 1506794 Feb 2 1997 povdoc.html.tgz
-r--r--r-- 1 povray vuser 908752 Aug 1 1996 povdoc.ps.gz
-r--r--r-- 1 povray vuser 1678592 Jul 18 13:02 povlinux.tgz
|
Para Linux nos interesan especialmente dos directorios:
'pub/povray/Official-3.0/Linux y 'pub/povray/Hall-Of-Fame'
Este último no es imprescindible pero aquí
obtemdremos lo que no podemos encontrar en el fabuloso manual de
Povray.
El manual de Povray es muy bueno pero siempre se ha dicho que una
imagen vale más que mil palabras. Por una parte dicho manual no
está ilustrado en la medida necesaria. Por otra parte
aquí podemos encontrar una gran cantidad de imagenes que son el
complemento ideal para el manual. No quiero decir que el manual no
tenga ejemplos, al contrario tiene muchos. Cada uno ilustra un
concepto, lo cual está muy bien para adquirir
técnica. Algunos ejemplos son bellísimos, pero en
'Hall-Of-Fame' estamos hablando de una selección de
imágenes muy buenas: un auténtico museo de arte
infográfico. A cada imagen se acompaña un texto
explicativo donde se explican las herramientas y las técnicas
empleadas para conseguir tan increíbles resultados.
Hay que advertir que muchas de las herramientas que se mencionan
como modeladores, conversores, etc. con frecuencia no se encuentran
disponibles todavía para su uso desde Linux.
Podemos destacar por lo tanto ftp.povray.org/pub/povray/Official-3.0/Linux
También se recomienda bajar ftp.povray.org/pub/povray/Hall-Of-Fame
no solo para disfrute visual sino como importante fuente de
inspiración creativa.
Mostraremos la instalación típica que en principio tendría
que funcionar en cualquier tipo de Linux aunque solo ha sido probada completamente
en Debian.
Instalación
Como es normal en las instalaciones, entramos en el sistema como super
usuario (root).
Vamos a suponer que ya tenemos los ficheros en nuestro sistema en el
directorio "/incoming/pub/povray/Official-3.0/Linux"
A continuación tecleamos los siguientes comandos.
# mkdir /usr/local/sbin
# mkdir /usr/local/apli
# mkdir /usr/local/apli/povray
# cp "/incoming/pub/povray/Official-3.0/Linux"
/usr/local/povray
# cd /usr/local/povray
# tar -xzf povlinux.tgz
# tar -xzf povdoc.html.tgz
# cd /usr/local/sbin
# ln -s /usr/local/apli/povray/povray3/x-povray
x-povray
# ln -s /usr/local/apli/povray/povray3/s-povray
s-povray
|
Con esto estaría todo ya que no hay que compilar nada.
Unicamente asegurese de que tiene permiso de ejecución para
todo el mundo para cada uno de los directorios de la cadena
/usr/local/apli/povray/povray3 y para los ejecutables x-povray y
s-povray. En nuestro caso, durante la instalacón
necesitamos cambiar algunos de estos permisos con 'chmod 755
(directorio o fichero)'.
Configuración
La configuración de Povray sirve para que la librería de
ficheros "includes" sea accesible, para que la tarjeta gráfica
sea reconocida, para establecer el formato de los ficheros de salida y
muchas cuestiones más.
Creo que en lugar de explicar cosas que están muy bien explicadas
en el manual (Quick start) será mejor que tomemos una configuracíon
muy genérica y que permita a la mayoría de los usuarios de
Linux usar Povray de una forma fácil, cómoda e inmediata.
Povray puede visualizar en SVGA pero esto nos obligaría a comentar
un tema que depende de cada tarjeta. Por ejemplo vamos a suponer que en
su equipo tiene instaladas las Xwindows y como visualizador de imágenes
usaremos 'xv'.
La configuración para poder trabajar en Linux con las nuevas
versiones de 'povray' puede simplificarse al máximo. Se pueden usar
variables de entorno pero resulta más práctico generar un
fichero de configuración *.ini con todo lo necesario.
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 pasaremos como argumento en la linea de comandos. Si
no le convence este sistema consulte el manual y verá que hay varias
posibilidades para alcanzar el mismo resultado, pero no es cuestión
en un artículo como este de mencionar todas las posibilidades sino
una sola que sea lo más útil posible.
Existe también una shell de utilidad para generar las imágenes
correspondientes a todos los ejemplos 'allscene.sh'.
Seguramente en lugar de generar la totalidad de las escenas con una
resolución pobre preferirá elegir alguna y renderizarla con
mayor resolución.
En este caso situese en el directorio del ejemplo y lance povray usando
el fichero 'ini' siguiente:
-------------------------8<------------(ini.ini)----------------
Width=640
Height=480
Quality=8
Library_Path=/usr/local/apli/povray/povray3/include
Output_to_File=on
Output_File_Type=t
Output_File_Name=out.tga
verbose=on
-------------------------8<--------------------------------------
Las dos primeras lineas determinaran la resolución de la imagen
final.
El comando para obtener la imagen sería:
$ s-povray ini.ini +i fuente.pov
El fichero 'fuente.pov' será el nombre del fichero que deseamos
procesar. Obtendremos una imagen 'out.tga' que podremos luego ver con 'xv
out.tga' por ejemplo.
POV: una utilidad para
trabajar con Povray
'pov' es una shell-script para trabajar cómodamente. En primer lugar
mostramos su listado:
------------------------8<-----------------------------------
#!/bin/bash
#####################################################################
# Autor: Antonio Castro Snurmacher (1.998)
#
# pov (ver 1.0)
#
# Esta versión esta dedicada a su inclusión en la
# revista LinuxFocus (freeware)
#
# Este programa puede ser utilizado, distribuido, y modificado
# libremente pero siempre se deberá respetar la propiedad
# intelectual de su autor. Esta cabecera debe ser conservada
# tal cual en todas las modificaciones.
#
# En caso de traducción deberá conservarse el texto original de
# esta cabecera y añadirse la traducción a continuación de ella.
#
# El autor renuncia a todo tipo de beneficio económico y no se hace
# responsable de los posibles perjuicios derivados del uso del mismo.
#
# E-mail (acastro@ctv.es)
#
#####################################################################
uso(){
echo "Uso: pov (proyect) (size=0..6) (quality=1..11)"
echo
echo "0) 40x30 (STD/20) No backup"
echo "1) 80x60 (STD/10) No backup"
echo "2) 100x75 (STD/8) No backup"
echo "3) 200x150 (STD/4)"
echo "4) 266x200 (STD/3)"
echo "5) 320x200 *"
echo "6) 400x300 (STD/2)"
echo "7) 640x480 *"
echo "8) 800x600 * (STD)"
echo "9) 1024x768 *"
echo
echo "Los proyectos deben situarse en un directorio situado en"
echo "${HOMEPOV} y se usará el mismo nombre para el directorio"
echo "que para el fichero fuente principal *.pov"
echo "(STD) es la resolución elegida como referencia estandar."
echo
exit 1
}
newversion(){
mv ${PREFIX}.pov.8.gz ${PREFIX}.pov.9.gz 2> /dev/null
mv ${PREFIX}.pov.7.gz ${PREFIX}.pov.8.gz 2> /dev/null
mv ${PREFIX}.pov.6.gz ${PREFIX}.pov.7.gz 2> /dev/null
mv ${PREFIX}.pov.5.gz ${PREFIX}.pov.6.gz 2> /dev/null
mv ${PREFIX}.pov.4.gz ${PREFIX}.pov.5.gz 2> /dev/null
mv ${PREFIX}.pov.3 ${PREFIX}.pov.4 2> /dev/null
mv ${PREFIX}.pov.2 ${PREFIX}.pov.3 2> /dev/null
mv ${PREFIX}.pov.1 ${PREFIX}.pov.2 2> /dev/null
cp ${PREFIX}.pov ${PREFIX}.pov.1
gzip ${PREFIX}.pov.4 2> /dev/null
}
#################################################
size(){
export SAVE="yes"
case $1 in
0) Width=40 ; Height=30; SAVE="no" ;;
1) Width=80 ; Height=60 SAVE="no" ;;
2) Width=100; Height=75 SAVE="no" ;;
3) Width=200; Height=150;;
4) Width=266; Height=200;;
5) Width=320; Height=200;;
6) Width=400 ;Height=300;;
7) Width=640 ;Height=480;;
8) Width=800 ;Height=600;;
9) Width=1024;Height=768;;
*) uso
esac
}
quality(){
case $1 in
1) ;;
2) ;;
3) ;;
4) ;;
5) ;;
6) ;;
7) ;;
8) ;;
9) ;;
10) ;;
11) ;;
*) uso
esac
export Quality=$1
}
####################### main ##############################
export HOMEPOV=${HOME}/dat/pov
export PROYECT=$1
export PREFIX=${HOMEPOV}/${PROYECT}/${PROYECT}
if [ $# != 3 ]
then uso
fi
export POVRAY=/usr/local/apli/povray/povray3
size $2
quality $3
if [ $SAVE == "yes" ]
then newversion
fi
cat <<-FIN > ${PREFIX}.ini
Width=$Width
Height=$Height
Quality=$Quality
Library_Path=${POVRAY}/include
Input_File_Name=${PREFIX}.pov
Output_to_File=on
Output_File_Type=t
Output_File_Name=${PREFIX}.tga
verbose=on
Post_Scene_Command=xv ${PREFIX}.tga
FIN
# Output_File_Type=t
## Others hight performace options ##
# Antialias_Depth=3
# Antialias=On
# Antialias_Threshold=0.1
# Jitter_Amount=0.5
# Jitter=On
# Baja prioridad por si quiero hacer otras cosas.
nice -20 x-povray ${PREFIX}.ini
if [ $SAVE != "yes" ]
then echo "!! Atención !! No se generó backup de esta versión."
fi
------------------------8<-----------------------------------
Cuando estamos diseñando hay que probar muchas veces, para poco
a poco acercarnos al resultado deseado.
Para simplificar la ejecución vamos a implementar un shell-script
que genere un fichero *.ini, lance el trazador Povray y luego visualice
el resultado. Se asume que se va a trabajar en un directorio del tipo $HOME/dat/pov/(nombre-proyecto)
y que el nombre del fichero principal será (nombre-proyecto).pov
Esta shell genera ficheros *.ini que prácticamente son suficientes
en la inmensa mayoría de los casos. Además está orientado
a una forma de trabajar concreta, pero si no le convence esta forma de
trabajar es fácil de modificar.
Esta utilidad establece además un sistema que preserva los últimos
cambios en ficheros fuentes porque con frecuencia ocurre que después
de varios cambios persiguiendo un resultado deseamos volver a una versión
anterior para continuar por otro camino. Como hemos dicho antes, el proceso
creativo es como ir dando pinceladas y decidiendo poco a poco como continuar.
Si lanzamos el programa con las resoluciones más bajas no se
produce desplazamiento de versiones ni backup: se considera que es una
prueba sin interés. Este tipo de pruebas se hacen para obtener rápidamente
una idea que determine si las posiciones a grandes rasgos de los objetos
parecen estar bien.
Todo esto se puede cambiar pero a mí me resulta personalmente
útil trabajar de esta manera. Para obtener una breve ayuda teclee
'pov' sin argumentos.
Algunas de las resoluciones disponibles coinciden con modos estandar
de algunas resoluciones de video. Otras son fracciones de la resolución
800x600. Si no tiene costumbre de trabajar con Povray le servirá
como metodología inicial de trabajo. Posteriormente es probable
que desee adaptar esta herramienta a sus necesidades particulares.
Cree la estructura de directorios adecuados para poder trabajar con
ella dentro de su directorio $HOME y verá qué sencillo le
resulta empezar haciendo cosas desde el primero día. Nosotros basaremos
los ejercicios en el uso de esta herramienta. Aunque no es necesario usarla,
le resultará más comodo.
Empezaremos con un ejemplo sencillo para comprobar que todo funciona:
------------------------8<-----------------------------------
#include "colors.inc"
#include "textures.inc"
#include "glass.inc"
// Autor: Antonio Castro
// La camara mirara al punto de contacto
// de ambas esferas
camera {
location <0, 15, 35>
look_at <0, 10, 0>
}
// Fuente de luz blanca
object {
light_source {
<20, 100, 50>
color White
}
}
// Cielo con nubes blancas
object {
sphere { <0, 0, 0> 200000} // Boveda celeste de gran tamaño
texture {Blue_Sky scale <50000, 6000, 50000>} // Estiramos las nubes
}
// Bola de oro
sphere { <-10, 10, 0> 10
texture { Gold_Metal }
}
// Bola de espejo
sphere { <10, 10, 0> 10
texture { Mirror }
}
// Bola de cristal
sphere { <0, 5, 10> 5
texture { T_Glass1 }
}
// Suelo
// Esta realizado con una gran esfera que toca el centro <0,0,0>
// pero se podía haber realizado con un plano.
sphere {<0, -1000000, 0> 1000000
pigment {checker color Red color Yellow scale 2 } // Textura ajedrez
}
------------------------8<-----------------------------------
Copielo en $HOME/dat/pov/sample1/sample1.pov
Si es necesario cree primero la estructura de directorios correcta.
Luego use la utilidad 'pov' que se proporciona en este artículo,
lanzándola desde una sesion xterminal de Xwindows con su usuario.
$ pov sample1 4 9
Deberá tener disponible 'xv' para visualizarlo, esta forma de
trabajar le resultará muy cómoda. Cuando quiera realizar
sus propias escenas le recomendamos que tenga otra ventana 'xterm' con
la versión de texto del manual cargada por ejemplo con vi en modo
solo lectura para buscar rápidamente las palabras clave del lenguaje
y así poder consultar rápidamente su sintaxis, con algún
ejemplo de utilización.
../../common/March1998/sample1.gif
|