Resumen
Para explicar la procedencia de la idea de la realización del
actual proyecto, nos hemos de referir a la empresa local que usa
productos de CAD/CAM - Diseño asistido por computador -. En estas
empresas, generalmente pequeñas, se hace bastante uso de PC's
para resolver los problemas de diseño, de visualización y de
fabricación de modelos tridimensionales - piezas para mecánica,
modelos del sector del automóvil, etc. - . Habitualmente el
modelo original no es generado en la propia empresa, sino que es
una empresa subsidiaria la encargada de tal fin. De esta forma,
nos encontramos con dos entidades que necesitan compartir
información tridimensional entre ellos.
Para compartir la información tridimensional, hace falta
generar un fichero con la información y enviarlo a la empresa
cliente. Este fichero ha de ser legible para ambas empresas, y
además no se ha de perder en el intercambio ninguna información.
Esto supone un gran problema, ya que las herramientas que usan
diferentes empresas suelen ser diferentes también, debido a que
cada empresa tiene un objetivo concreto y unas necesidades
concretas que cubre una herramienta concreta. Además, la
distancia entre la empresa que desarrolla el modelo y la del
cliente, suele suponer un problema ante el necesario
desplazamiento de al menos una persona, para que le muestre el
resultado al cliente, y anote las modificaciones necesarias.
Esta situación genera un innecesario gasto de tiempo y dinero
en un viaje para mostrar el modelo, o incluso en varios viajes,
debido a correcciones en el modelo que se podrían haber
solucionado a distancia.
Esa situación indujo a pensar en una herramienta de propósito
general destinada a la visualización de modelos 3D
simultáneamente en varios computadores a su vez situados en
puntos distantes a través de Internet, con la posibilidad de
entablar una conversación mientras se muestra el modelo a una o
varias personas. Todo esto sobre una sencilla y barata plataforma
PC.
Inicialmente se desarrolló un sistema de visualización local
- Iñigo Recio - extensible, e independiente de la plataforma
software-hardware - hecho en Java -. Este sistema de
visualización lee ficheros Wavefront-OBJ, compuesto de polígonos
simples, y lo visualiza en pantalla con un rendimiento más que
aceptable para el mundo del PC - Uso de tarjetas aceleradoras y
tecnología Java3D -.
El paso lógico siguiente era el poder integrar el software
citado en el mundo de Internet, y poder compartir modelos a
través de la red independientemente del sistema gráfico de uso
en ambas empresas. De este módulo se encargó Diego Borro. La
característica más bondadosa del sistema desarrollado, consiste
en que la comunicación de la herramienta se basa en paso de
mensajes, y no transmite el modelo entero cada vez que se desplaza
por la pantalla, de esta forma se consigue tiempo real en la
conversación entre usuarios.
A esta herramienta ya bastante completa se le vio el defecto de
que el soporte de entidades geométricas era bastante precario. De
este modo se pensó en dotarla de un módulo para poder
interpretar superficies complejas basadas en curvas - Bezier,
Bsplines racionales -. Así que se encargó a Luís Javier
Ochotorena el desarrollo del sistema. En concreto se encargó del
desarrollo del soporte para NURBS - Superficies racionales
Bsplines no uniformes - por parte de la herramienta. Con este
avance, se consigue que la información a transmitir entre los
sistemas conectados a Internet sea de unos pocos puntos de
control, en vez de las gigantescas mallas de polígonos que se
suelen usar en los modelos 3D.
Pero aún la herramienta no era de aplicación en el mundo
real. Le falta algo muy importante. Consiste en que el formato de
fichero que usa el programa es muy limitado, y se quiere conseguir
soporte para un formato que sea un estándar para cualquier
herramienta de gráficos por computador. Además se requiere que
el formato elegido sea un formato con gran cantidad de entidades
geométricas, apuntes, notas, texto, y demás entidades que se
suelen añadir a un modelo real - planos, piezas, etc -, sobre
todo las ya desarrolladas en la herramienta NURBS.
Ante la necesidad de minimizar la cantidad de información para
la representación de formas en el espacio euclídeo, surge la
necesidad de guardar únicamente información de control sobre
curvas, las cuales se podrán más tarde poligonalizar de la
manera más adecuada según el objetivo más o menos minucioso de
la visualización requerida. De esta forma, se minimiza la
información a guardar y se hace la representación de la
información de superficies curvas mucho más exacta, al existir
la posibilidad de hacer la poligonalización siempre que haga
falta, para no perder detalle al acercarse a un modelo.
Hoy en día el estándar de representación para superficies
curvas son las NURBS. Las superficies racionales B-Spline no
uniformes - NURBS -, que tienen soporte actualmente en la mayoría
de las herramientas importantes del mercado - 3D Studio, Advanced
Visualizer -
Las herramientas con soporte para lectura de NURBS suelen estar
integradas en software desarrollado con paquetes de librerías de
visualización realmente caros. Así que se encontró un nuevo
objetivo para el proyecto: El de la creación de un módulo de
software libre que dé soporte de lectura para NURBS sobre algún
tipo de fichero 3D actual, y el de la integración del mismo en un
módulo de visualización con capacidad de dibujar NURBS.
El módulo de visualización ya ha sido creado, ya que dio
lugar al proyecto de fin de carrera de Luis Javier Ochotorena
Santos presentado en septiembre de 2000. Y ahora da lugar la
presentación del proyecto que implementa la lectura de ficheros
con soporte para estructuras NURBS e integración del mismo en la
herramienta de visualización con soporte para NURBS.
Este proyecto ha sido desarrollado con el lenguaje Orientado a
Objetos Java, concretamente con la librería de Sun de libre
distribución JDK 1.3 , para que el software sea además de libre,
multiplataforma. Aunque la fama de Java es de un lenguaje lento,
se ha elegido por sus características de universalidad. En este
proyecto, la velocidad no es crítica, ya que la fase de carga de
un fichero es una fase que sólo se realiza una vez, y no se
necesita más durante la ejecución de una visualización. De
todas formas se ha demostrado con los proyectos que preceden a
este dentro del área de la visualización interactiva y a tiempo
real - un área de grandes exigencias de velocidad y rendimiento -
que java, junto con las librerías Java3D - que soportan
aceleración por hardware al basarse en OpenGL - es un lenguaje
suficientemente potente para nuestros objetivos.
Se implementado en este proyecto un lector de ficheros IGES
sobre Java - las razones para la elección del tipo de fichero se
detalla más adelante - y se ha integrado en el citado software de
visualización de NURBS, que es una versión inicial del software
de visualización cooperativa de Iñigo Recio y Diego Borro.
|
Objetivo principal : Creación de
un módulo de software en Java integrable con un visualizador
tridimensional interactivo y cooperativo, que soporte la lectura
para superficies NURBS.
Objetivos derivados
- Generación de un informe sobre los tipos de fichero con
soporte para información tridimensional, enfatizando el
soporte para superficies NURBS y posterior elección del más
adecuado para los propósitos de carácter general del
proyecto.
- Utilizar un formato de fichero de alta gama en un PC, para
acercar las características de los formatos citados al actual
y rápidamente cambiante mundo del PC.
- Crear la librería en Java - lenguaje orientado a objetos -
para leer de forma organizada las citadas superficies de una
forma rápida y estandarizada para su posible integración en
nuevo software.
- Integración de la librería creada en un módulo de
visualización con soporte para superficies racionales
B-Spline no uniformes - NURBS -.
Software privado de NURBS disponible en http://www.integrityware.com

Figura Imagen basada en NURBS
|