Módulo JAVA para la gestión de ficheros IGES en entornos de visualización cooperativa

Aitor Cuartango Berrendo (2000)

Link a dónde se realizó

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

 

 

Herramientas y tecnologías usadas 
JAVA
JDK 1.3
Java3D
IGES
Bibliografía especialmente relevante
---
Links especialmente relevantes
---

web3D-ehu  última revisión: September 05, 2005