Introducción
MindsEye está actualmente en fase de desarrollo. La mayor parte del
trabajo se realiza bajo la interface. Esto significa que si usted
intenta probar las partes actualmente funcionales, estas pueden variar
de un día para otro. Nosotros creemos en un buen diseño básico, antes
que en dar a los usuarios herramientas con las que jugar .
¿Qué es
Minds Eye?
En la actualidad el mercado del modelado y el rendering está dominado
por caros paquetes de software comercial. MindsEye es (o será) la
repuesta en freeware (gpl) a un paquete de software que pueda competir
con estas versiones comerciales. Cogiendo lo mejor de ambas fuentes y
con nuevas técnicas innovativas Minds Eye trata de ser en una
plataforma completa para todo tipo de trabajos con gráficos
3D
Historia
Hace unos dos años, cuando Linux no era más que un sistema operativo
para hackers, surgió la idea de comenzar a trabajar en un programa de
render/modelado/animación para Linux. Inspirados por el trabajo de la
gente de Gimp, nos pusimos a trabajar para ver si era posible crear
otra maravilla similar. Durante un año, más o menos, trabajamos con
varias ideas de diseño. En un principio, comenzó de un modo
erróneo. Se hicieron buzones a grupos de noticias para ver si había
gente interesada en unirse al proyecto. Recibimos montones de
repuestas, y parecía que no tendríamos ningún problema para comenzar
el proyecto. El nombre, por aquel entonces, era Free-D. Un nombre que
fue cambiado posteriormente por Minds Eye, dado que podría haber
causado confusiones con el proyecto de las librerías Free 3D. Muy
lentamente el proyecto creció. En el camino encontramos obstáculos
que no tenían nada que ver con el proyecto. Por ejemplo la gente tenía
una idea específica sobre lo que quería ver mejorado. Por lo tanto en
nuestra lista de correo, solíamos ver discusiones constantes sobre las
especificaciones en el diseño. Tardamos más de un año en producir
realmente algo de código.
Diseño
La parte más interesante de Minds Eye es su diseño. Todas las partes
son modulares, desde el elemento más pequeño hasta las partes más
grandes como el modelador. En el corazón del programa está lo que
nosotros denominamos el núcleo de Minds Eye. Esta pieza de software
es incapaz de hacer por sí mismo ningún tipo de trabajo gráfico. En
lugar de esto, se encarga de manejar todos los módulos y plug-ins. Se
podría definir como un gran administrador de recursos. Es también el
lugar donde se mantiene la estructura completa de los datos. Hay una
diferencia esencial entre un módulo y un plug-in en Minds Eye. Un
módulo es un trozo de código, del cual tiene noticia el núcleo. Un
módulo puede ser cargado y descargado por el núcleo. Cuando decimos
que "tiene noticia de", nos referimos a que el núcleo sabe algo sobre
los módulos. Por ejemplo, el módulo de trabajo en red es una puerta
que conecta varios núcleos. El módulo de trabajo en red podría ser
visto como un módulo tonto que reemplaza a uno de los otros módulos.
Hasta el momento hemos definido un conjunto de módulos básicos, que
son:
-
Trabajo en red
-
Editor de modelado
-
Editor de animación
-
Editor de materiales
-
El módulo Entrada/Salida
¿Quieres saber cuál es la apariencia del programa en la actualidad?
Aquí está:
Uno de los módulos es el módulo de animación. Es básicamente un
editor 3D especializado en animación. Emplea nuestro gestor de vistas
que a su vez usa nuestro código genérico de vistas. Todo nuestro
código es modular y puede ser utilizado en otras partes del programa.
Como ejemplo, en la pantalla de abajo se pude ver una esbozo del
animador, con cuatro vistas.
Para la salida en 3D empleamos OpenGL. Los archivos de instalación
asumen que se está empleando MesaGL si se trabaja bajo Linux. El
conjunto de herramientas GUI que se puede ver en acción es el QT de
TrollTech (http://www.troll.no).
Nosotros hemos elegido este kit (biblioteca) porque presenta algunos
elementos que necesitábamos y que ningún otro kit podía
proporcionarnos (por lo menos al nivel GPL). En el momento que
comenzamos, con Gtk no nos sentíamos con la suficiente confianza como
para trabajar con él. Además nosotros teníamos necesidades especiales
que Gtk no era capaz de satisfacer y Qt sí.
Al igual que los otros programas comerciales, Minds Eye dispondrá
de un editor de materiales. Como todas las otras partes el código de
este módulo está basado en otro código. Por ejemplo, las ventanas que
muestren a los materiales tendrán la misma fuente de luz que las
ventanas de diálogo. Están derivadas del código que muestra una esfera
de OpenGL con varias propiedades. Las ventanas de vistas sabrán cómo
tratar con todas estas propiedades. El editor de materiales sólo
tendrá que encargarse del control de todos los materiales y de los
datos disponibles en ese momento. Como todas las partes del programa,
la filosofía es: divide todas las partes en su forma más
básica. Básicamente siguiendo el mismo camino que hizo a Unix del modo
que es ahora.
Para la salida de render empleamos... cualquier cosa que
encontramos. Algunos programas de renderizar serán usados
internamente, como el SIPP. Otros renderizadores serán utilizados
como programas externos. Todo depende de la naturaleza y complejidad
del sistema sobre el que queramos realizar el render. Si el
renderizador de salida es interno, básicamente será cargado como un
plug-in. El módulo de render sabrá como tratar con él y le ofrecerá
una estructura de datos y un buffer para almacenar la imagen
renderizada junto con algunos parámetros. En la actualidad estamos
tratando con SIPP, POVRay y con Renderman, como programas de render,
pero los desarrolladores no pueden añadirles todo lo que quieren. Como
todo lo demás de Minds Eye todos los interfaces tendrán una API bien
definida.
Futuras Tecnologías
MindsEye espera convertirse en un programa muy robusto desde el punto
de vista de la arquitectura del software. Una gran cantidad de nuevas
tecnologías serán incluidas y el programa podría funcionar muy bien
como banco de pruebas para las nuevas técnicas de render y modelado.
Las nuevas características que planeamos incluir son:
Es muy probable que en el futuro las escenas sean más grandes y
complejas. Controlar estos grandes mundos entraña una gran labor en
sí misma. MindsEye quiere crear un modo sencillo de trabajar en una
escena con más de un modelador a la vez. La posibilidad de hacer esto
ahorra el tiempo de integración y reduce el tiempo total del modelado.
Una forma de hacerlo es desarrollar una especie de RCS (Revisión
Control System) para escenas y mundos. Por ejemplo un modelador
podría estar trabajando con una pequeña cantidad de datos en una gran
escena. Estos datos estarían bloqueados, para ese modelador. Otra
gente podría trabajar con otras partes sin interferir con las partes
bloqueadas por otros modeladores.
-
Programar al estilo LEGO®
Cada núcleo de MindsEye no es nada más que una tarea y un
controlador de recursos. Si se quiere activar cualquiera de los
módulos habrá que utilizar el núcleo. Una de las ventajas de tener un
sistema basado en núcleos es que se puede ver el conjunto de un modo
similar al LEGO ©. Veamos como funciona este concepto en la vida
real; bien, supongamos que tenemos una compañía de animación llamada
Paxir. La compañía está trabajando en una nueva película y decide
emplear Minds Eye como su principal plataforma de desarrollo. La
compañía está acostumbrada a trabajar con grupos de modeladores y
tiene un grupo central de render. Instalar ese tipo de sistema con
MindsEye sería relativamente fácil de conseguir. En cada máquina,
independientemente de la clase de plataforma o propósito, se instala
un sistema simple de Minds Eye. Dependiendo del rol que deba
desempeñar esa máquina, se le añaden unos módulos u otros. Por tanto
una parte de los diseñadores tendría un núcleo y el módulo de
modelado, junto con un módulo de render y un plug-in previo. El grupo
de render por otro lado tendría el núcleo y el módulo de trabajo en
red junto con su plug-in favorito para render. Cada núcleo comprendería
su papel y actuaría en consecuencia.
-
Transparencia en trabajo en red
Tal y como se explicó en la sección anterior, el render en red
debería ser mucho más flexible con Minds Eye. Lo que se pretende es
encadenar una serie de núcleos y hacer que cada uno de ellos,
renderize una parte de la animación. En efecto, cada núcleo es
responsable de su tarea aunque realmente son el módulo de
render-modelado y el de render plug-in los que hacen el trabajo. A lo
largo de todo el proceso de diseño y el trabajo de programación hay
que tener en cuenta una arquitectura modular. Muchas ideas y conceptos
deben ser tenidos en cuenta cuando se programa para este proyecto. El
soporte para red es sólo una pequeña parte pero como se puede observar
es lo que se encuentra en el corazón de Minds Eye.
Utilización
Por el momento Minds Eye es un programa muy interesante desde el punto
de vista del desarrollador/programador. Para el usuario en general no
resulta tan útil. Estamos trabajando para conseguir un núcleo muy bien
hecho. Cuando esté acabado, las aplicaciones aparecerán a gran
velocidad. Se puede ver un ejemplo del modelador actual en la
siguiente figura. Es MindsEye-0.5.19 en un escritorio de Enlightenment. En el
modelador se puede observar una escena cargada que se llama
rings5.nff. Minds Eye tiene la capacidad de cargar múltiples
escenas. Aunque no hay soporte para muchos formatos de imagen, el
código que se encarga de cargar y salvar las escenas es muy
flexible. Se están diseñando y construyendo protocolos para añadir
dinámicamente distintos tipos de archivos. Cada tipo se carga con el
plug-in adecuado. MindsEye será capaz de activar un "escaneo" de
plug-ins. Esto significa que los componentes serán añadidos y quitados
en el momento.
|