La Gaceta de Linux ...¡ haciendo a Linux un poco más divertido !

Como hacer un Estereograma con GIMP, Blender y StereoGraph

Por Kapil Hari Paranjape

Traducción al español por Eduardo Alvarado
el día 14 de Diciembre de 2005, para La Gaceta de Linux

1. Introducción

PIC
¿Ven lo que yo veo?

Los Estereogramas de una Sola Imagen (SIS, Single Image Stereograms) son imágenes bidimensionales que parecen ser tridimensionales; estas imágenes en 3D parecen "elevarse" (o "hundirse") del papel impreso. La cantidad de entrenamiento que el sistema nervioso humano requiere para ver tales imágenes parece variar de persona a persona; parece ayudar si eres mayor y ¡miope! Este tutorial no es acerca de esto, no obstante, trata de la creación de imágenes que invocarán las imágenes 3D en el ojo de un espectador entrenado. Explicaré cómo he creado un estereograma de (lo que es para mi) una bella entidad matemática llamada "Anillos de Borromean". Las técnicas descritas son lo suficientemente generales como para que los lectores sean capaces de crear sus propias imágenes. En particular, el lector puede querer construir un mapa de profundidad para alguna otra cosa como un nudo de trébol o un pescado.

La historia de cómo me interesé en los estereogramas está al final (ver la sección 6) de este documento.

1.1 Software Requerido. Si tienes una configuración básica de Debian (con XFree86) que esté conectado al Internet, entonces todo lo que necesitas hacer es ejecutar el siguiente comando como root:

apt-get install gimp blender stereograph

En otras palabras, necesitas instalar los paquetes de Software: gimp, blender, y stereograph, además de una instalación básica del Escritorio Gráfico (XFree86).

Todo lo que necesitas es...
PIC

Necesitas iniciar la GUI y entonces iniciar gimp o blender corriendo como aplicaciones dentro de la GUI. Usualmente es tan simple como iniciar una terminal y escribir gimp o blender según el caso. Dependiendo de la sofisticación de su interfaz probablemente también puedas tenerlos bajo el menú "Aplicaciones Gráficas" (Graphics Applications).

2. Creando los Anillos

El programa de modelado en 3D Blender es una excelente contribución de la Compañía NaN y la Fundación Blender a la comunidad. Es capaz de mucho más que la construcción de mapas de profundidad como se describe en este documento. Excelentes tutoriales están disponibles on-line, o como documentación descargable. Visite el sitio de la Comunidad Blender para conocer más...

Iniciamos blender y creamos una escena vacía en él. Para hacerlo escribimos Ctrl-X en blender y aceptamos la opción de borrar todos los objetos. Esto crea una escena con un cubo (seleccionado), una cámara, y una lámpara. Después presionamos la tecla a dos veces para seleccionar todos los objetos, entonces presionamos la tecla x para borrar los objetos seleccionados. Finalmente, aceptamos la opción de el cubo, la lámpara y la cámara. Como resultado llegamos a ser aventureros viajando por la luz sin ninguna lámpara o cámara!

PIC
Viajando Sin Luz

Ahora seguiremos (aproximadamente) el tutorial dado en la sección sobre "DupliFrames" en el manual de blender para crear los "anillos".

Primero presionamos la barra espaciadora para activar el menú para añadir objetos. Seleccionamos una Curva ("Curve") de tipo "Nurbs circle" y presionamos la tecla enter. A menos que hayas movido el "cursor 3D " en blender,1 será insertado con su centro en el origen del sistema de coordenadas. Ahora lo redimensionaremos con un factor de 2 en la dirección y presionando las teclas s, y, 2 y presionando enter. Esta es la "trayectoria" central de el anillo.

PIC
Siguiendo la trayectoria circular

Después agregamos la curva que es el "contorno" de la superficie. Vamos al modo Objeto presionando Tab. Después, presionamosla barra espaciadora para mostrar el menú de adición de objetos, y seleccionamos otra curva de tipo "Nurbs Circle". Redimensionamos esta superficie a un tamaño razonable presionando las teclas s, 0.25. Finalmente, para evitar la confusión, renombramos esta curva a "contorno"("contour") presionando n, y entonces editamos el nombre seleccionándolo con un click izquierdo del ratón.

Ahora regresamos al modo objeto con un tab y seleccionamos la primera circunferencia, alargada en el eje y. Mostramos el menú Editar (edit) presionando la tecla F9, bajo el menú"Curvas y superficies" ("Curve and Surface") hay una opción llamada "BevOb". Lo seleccionamos e ingresamos el nombre de la otra curva, es decir "contorno" ("contour") si has seguido el último paso del párrafo anterior. La circunferencia alargada en el eje y será usada ahora como un "camino", y el contorno será "extruido" a lo largo de éste haciendo un anillo. Para finalizar, seleccionamos el "contorno" con un click derecho del ratón, lo sujetamos presionando la tecla g, y la shift 10 pasos a la derecha "fuera de la vista" de la cámara presionando la tecla x e ingresamos el numero 10.

PIC
Dame un anillo

Para crear las otras dos copias del anillo hacemos lo siguiente. Primero lo seleccionamos con un click derecho del ratón y hacemos un duplicado enlazado presionando las teclas Alt-d. Entonces lo rotamos 90 grados presionando la tecla r e ingresando 90.Vamos a la vista lateral ("side view") presionando la tecla 3/PgDn del teclado numérico. De nuevo rotamos 90 grados presionando r e ingresando 90. Ahora vamos a la vista frontal ("front view") presionando la tecla 1/End del teclado numérico. Hacemos otra copia presionando Alt-d y lo rotamos 90 grados presionando r e ingresando90. Volvemos de nuevo a la vista superior ("top view") presionando la tecla 7/Home en el teclado numérico y entonces rotamos de nuevo 90 grados presionando r e ingresando90.

Para tener una mejor visión de los anillos colocamos el cursos 3D en el origen. Entonces presionamos la tecla . (punto) para realizar las rotaciones con relación al cursor 3D (el cual está en el origen). Seleccionamos todos los anillos uno por uno de la siguiente manera: seleccionamos el primer anillo con un click derecho y seleccionamos cada uno de los otros con un click derecho mientras presionamos la tecla Shift. Ahora rotamos 45 grados al rededor del eje z presionando la tecla r e ingresando 45. Entonces vamos a la vista frontal presionando la tecla 1/End del teclado numérico; de nuevo rotamos 45 grados, esta vez alrededor eje y, presionando la tecla r e ingresando 45.. Regresamos a la vista superior presionando la tecla 7/Home del teclado numérico y cambiamos a la vista sólida ("solid view ") presionando la tecla z.

PIC
Anillos de Borromean terminados

3. Renderizando el mapa de profundidad

El cerebro crea una "sensación" de 3D de la imagen renderizada arriba, pero no es realmente una imagen 3D que sobresalga. Por esto debemos crear una versión de mapa de profundidad de la imagen. En blender esto se hace usando una textura. Una textura es adherida a un material, así que debemos añadir un material primero.

Presionamos la tecla F5 para obtener el menú de Materiales y Texturas. La Selección del material por defecto se lo realiza dando click en el botón que se encuentra junto al botón marcado como "ADD NEW" ("añadir nuevo") bajo el menú de "Materiales". También puede seleccionar un nuevo material con "Añadir Nuevo"("ADD NEW"). El último menú de la derecha es el menú de "Texturas". Si la textura por defecto está colocada entonces habrá una pequeña marca de "visto" junto al botón que dice "Tex". De otro modo seleccione la textura por defecto, "Tex", con el botón que se encuentra junto al botón "ADD NEW" en este menú; opcionalmente puede añadir una nueva textura si no hay ninguna. Ahora seleccione el botón que se parece a una piel de leopardo que tiene un pop-up de ayuda que dice "Botones de Textura"("Texture buttons") (N. del T.: o presione F6). Un nuevo conjunto de menús aparecen. En el menú Textura ("Texture") de este panel seleccione la textura "Blend".

PIC
Déjalo fluir ...

Regresa al menú y los botones de "Materiales" seleccionando la "esfera" roja que tiene un mensaje de ayuda que dice "Botones de Materiales"("Material buttons"). Selecciona el menú de "Entrada de Mapa" ("Input Menú"). Este menú nos permite seleccionar los datos de entrada que son usados para determinar la variación en los materiales que forman la textura. Selecciona el Botón "Glob" que hace a las coordenadas globales, los datos de entrada para la textura. Después seleccionamos el primer botón "Z" (el que esta junto a la barra de desplazamiento "sizeX"). Selecciona los botones vacíos junto a las barras de desplazamiento"sizeY" y "sizeZ". Esto significa que los mapas de textura la coordenada z del objeto corresponderá a la coordenada x de una "combinación" lineal.

PIC
Si lo que hemos hecho está correcto...

Ahora seleccionamos como esta combinación lineal saldrá. Vamos al menú "Map to" que se encuentra a la derecha. Deseleccionamos "Col" (por Color) y seleccionamos "Emit" para hacer que la textura emita luz en proporción a su coordenada z (la cual es la que mide la distancia desde la cámara). También damos click en el botón "No RGB" (el cual a veces aparece como "No RG" debido a la falta de espacio en la pantalla) así que la mezcla es solo una escala de grises de negro a blanco.

PIC
El material relevante

¡Todavía no tenemos una cámara para ver esto! Debemos estar en la vista superior, si no es así vamos a ella presionando la tecla 7/Home del teclado numérico. Colocamos el cursor 3D en el origen (nos aseguramos que este sea el origen en todas las vistas). Ahora añadimos una cámara con la barra espaciadora y seleccionamos "Camera" (Carama) en el menú que aparece. Vamos a la vista frontal y elevamos la cámara 10 pasos en la dirección z presionando la tecla g seguida de la tecla z e ingresando 10. Necesitamos configurar el fondo con un color gris oscuro uniforme. Notarás un nuevo conjunto de menús. Damos click en los números junto a "HoR", "HoG" y"HoB" en el menú "World"(Mundo) e ingresamos el valor de 0.1. Si presionas F12 ahora verás un mapa de profundidad el cual necesitamos retorcer solo un poco más.

Primero mejoraremos la renderización. Presione F10 para mostrar el menú "Render". En este menú deseleccionamos los botones "Shado(w)", "EnvMa(p)" y"Gamma". Seleccionamos la renderización al menos al "75%" para ver las cosas con más claridad. Es muy importante dar click en el botón "OSA" el cual causa que los anillos sean más lisos. Finalmente seleccionamos el formato de salida, en el menú "Format", que debe ser "Targa Raw" en lugar de "Jpeg" (por defecto). También damos click en el botón "BW" ya que sabemos que sabemos que la salida es una escala de grises.

PIC
Renderizado con Blender

Esto dará un razonable mapa de profundidad. Sin embargo, puedes desear mejorarlo un poco más. Yo pienso que el "negro" en los anillos es demasiado oscuro así que hice que el material emita un poco más de luz, incrementando la barra de desplazamiento"Emit" en el menú "Shaders", hasta 0.2. Además, la barra de desplazamiento"ofsX" fue cambiada a0.3 y la barra de desplazamiento "sizeX" se redujo a 0.7.

PIC
Todos los anillos son grises de noche

Cuando estés satisfecho con el resultado, ve al menú"File" cerca de la esquina superior izquierda de la ventana del blender y graba la imagen con "Save Image". Puedes También querer grabar el archivo .blend. En adelante asumiré que has grabado la imagen. como borromean.tga; también, asumiré que la imagen. tiene el tamaño de 640x480 el cual es el valor por defecto.

4. Creando la textura del fondo

El programa de modificación de imágenes GNU es absolutamente un programa maravilloso. Puedo jugar con él durante horas (y lo he hecho)! Usaremos este programa muy versátil para crear una bonita textura de fondo para la imagen estereográfica.

Abrimos gimp. Con el menú "File" ("Archivo") o presionando las teclas Ctrl-n creamos un lienzo de tamaño 640x480. Una forma de crear rápidamente una textura del tipo que necesitamos es seleccionar la herramienta"Fill" del menú "Tools" o presionando la tecla B. Elegimos un bonito patrón uniforme como Leopardo("Leopard"), Lluvia("Rain") o Cielo("Sky"). Entonces de la caja de dialogo "Tool Options" seleccionamos "Pattern Fill" y llenamos el lienzo con este patrón

.

PIC
Una cajita de pastillas con piel de Leopardo

Grabamos el patrón como texture.png usando el menú "Archivo"("File") o presionando Ctrl-S.

5. Usando stereograph

El programa de línea de comandos stereograph puede generar un número de diferentes tipos de estereogramas. Incluso algunos transparentes que contienen dos imágenes en una! Crearemos un estereograma bastante simple con el comando:

stereograph -R -a -t texture.png -b borromean.tga -o stereo.png

Un breve explicación de estás opciones. La opción -t claramente indica el archivo que contiene la textura mientras que la opción -b indica el archivo que contiene el mapa de profundidad; finalmente la opción -o indica donde deberá ir la salida. La opción -a dice a stereograph que active el "anti-aliasing" y la opción -R es experimental para deshacerse de los "artefactos".

PIC
Un circo de tres anillos, acaso

Si tienes dificultad para "ver" los estereogramas puedes añadir la opción -A la cual pondrá dos triángulos en la imagen. que ayudarán a la visión. ¡Esto es todo! El archivo stereo.png es la imagen. del estereograma. Puedes verla con tu software de visualización de imágenes favorito o incluso abrirla con gimp para verla.

6. Palabras Finales

Aprendí acerca de los Estereogramas de una sola Imagen. (SIS) (Los cuales son conocidos comercialmente como Ojo Mágico(TM), MagicEye(TM) en ingles) debido al regalo de mi hermano de un libro del Ojo Mágico. Inicialmente aprecié las bellas texturas que habían en las brillantes páginas de este libro, pero no pude verificar la afirmación de los creadores de que habían imágenes tridimensionales que saldrían de la página. Un día mi abuelo alcanzó a ver la cubierta del libro y dijo algo como "¡Qué extraño elefante!" Es solamente entonces cuando intenté ver las imágenes y pude hacerlo (La morfogénesis de Thom a veces actúa extremadamente local).

Hay numerosas fuentes de información (especialmente en la Internet) de como estas imágenes "trabajan". La lectura de estas y los intentos por crear algunos por mi mismo me llevaros a la conclusión que el Programa de Manipulación de Imágenes GNU (GNU Image Manipulation Program ) GIMP es una excelente programa para crear las texturas. Alguna vez hubo También un plugin para GIMP el cual podía crear las imágenes SIS desde una textura y un mapa de profundidad. Este fue reemplazado pronto con el excelente programa stereograph. Sin embargo, por mucho tiempo no pude encontrar un forma adecuada de crear los mapas de profundidad si tener que escribir un programa para cada uno de los mapas o alguna otra forma de "hacking". Siempre que el software de creación de imágenes 3D que revisaba mencionaba "raytracing", "texturas", "iliminación" y "renderizado" me confundía terriblemente ¡Después de todo yo soy matemático y no físico! Otra barrera era el hecho de que el software más popular, povray, fue considerado "no libre" por Debian. No quise invertir y esfuerzo aprendiendo un programa que tal vez podría no estar disponible para mi en algún momento en el futuro.

Algunos años atrás cambié a blender, su excelente manual, y más de unos pocos tutoriales para él. Gracias a la documentación, los términos llegaron a adquirir un "real" significado matemático. En efecto llegó a ser claro para mi que blender podría llegar a ser para el dibujo 3D lo que xfig llegó a ser para el dibujo 2D. Desde entonces estuvo en mi lista de grandes herramientas gráficas decidí aprender blender lo mas pronto posible. Esta decisión llegó con la decisión de nuestro Instituto (IMSc) de crear un logo para él a través de un "concurso". Mientras el logo se materializaba completamente agradable con (y sin!) blender Yo no podía obtener los mapas de profundidad que estaba buscando. Solamente por la repetida lectura del manual de blender por explicaciones sobre "iluminación", "materiales", "texturas" and "renderizado" fue que finalmente por suerte completé el método que está descrito aquí.

El resultado final ha sido este tutorial sobre la creación de una imagen. 3D SIS de los Anillos de Borromean. A partir de que e escribí este tutorial, he aprendido del sitio "Linux Artist" que hay muchas más herramientas de dibujo 3D como blender.

Como el profesor que viene de una familia de profesores no puedo evitar dar unos pocos ejercicios:

Mas allá del Horizonte :
Haga su propio estereograma de algo usando alguna otra herramienta Open Source. Hay más de una forma de Hacerlo!

No Matemático:
Encuentre todas las referencias a artistas de los 70's, 80's y 90's en este texto.

Matemático:
Encuentre más acerca de los Anillos de Borromean, nudos de trébol (trefoil knots), Nurbs y otras entidades matemáticas mencionadas en el texto.

Notas al Pie:

1. En otras palabras, ¡nunca toques el mouse a menos que realmente necesites ir a algún lado!


[BIO] Kapil Hari Paranjape ha sido un "hack''-er desde los días de tarjetas perforadas. Sofisticadamente, esto significa que nunca ha escrito un programa "real". Simplemente se ha entretenido con programas escritos por otros. Después de jugar con Minix en 1990 - 91 aparte de escribir su primer programa --- un "genuino" kernel *nix para las computadoras de la clase x86. Afortunadamente para él un tal L. Torvalds lo logró primero --- a consecuencia de esto lo salvó del problema (otra vez) de escribir código en la actualidad. En eterna gratitud, ha pasado desde entonces gran cantidad de tiempo pensando y promocionando Linux y GNU --- tras el desánimo de muchos alrededor de él que pensaron que debe dedicarse a la investigación matemática --- el cual es un trabajo remunerado. La Interacción entre los programas actuales, que pueden ser computados en principio y que pueden ser mostrados para existir continúan fascinándole.

Derechos de autor © 2004, Kapil Hari Paranjape. Editado bajo la Open Publication License

Publicado en la Edición 104 de La Gaceta de Linux, Julio del 2004