| 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ónPovray (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 PovrayPovray 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. 
 
 
 
Para     Linux  nos     interesan  especialmente  dos     directorios:
'pub/povray/Official-3.0/Linux y 'pub/povray/Hall-Of-Fame'
|  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 |  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ónComo 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.
 
 
 
Con esto estaría  todo ya que no  hay  que compilar nada.
| # 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
 
 |  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ónLa 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.povSi 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 
 |