sábado, 14 de mayo de 2011

Obtención automática de un modelo sólido a partir de una perspectiva bocetada

Este trabajo tiene como objetivo la generación automática de un modelo sólido a partir de un boceto que represente una perspectiva de éste. Su aplicación directa supone un importante soporte en la base más conceptual del diseño donde se barajan un conjunto de ideas abstractas sobre lo que el producto deberá ser y un conjunto de requisitos que deberán de cumplirse. El boceto es realizado mediante una tableta LCD que sirve de entrada a una fase de reconstrucción 2D que identifica las distintas entidades trazadas y las ajusta con las ya existentes en el dibujo. La salida de este algoritmo realimenta un motor geométrico de reconstrucción geométrica que genera un modelo de superficies del objeto reconstruido. Actualmente esta aplicación exporta la geometría del objeto reconstruido en los formatos DXF y VRML. El objetivo de este trabajo es ampliar las opciones de salida de esta aplicación, para permitir la reutilización de los modelos reconstruidos en otras aplicaciones CAD. Para ello se ha elegido el protocolo de aplicación 203 de ISO 10303 (STEP), siendo necesario para ello, la generación de un modelo b-rep del sólido reconstruido. En este trabajo se presentan los algoritmos implementados, para lograr la conversión del modelo de superficies de partida, en un auténtico modelo sólido b-rep.

1. Introducción

El desarrollo de las prestaciones de los sistemas CAD y de los interfaces de usuario experimentado en las últimas décadas se ha desequilibrado a favor de los sistemas CAD. En el grupo de Investigación de Reconstrucción Geométrica REGEO [1], se ha desarrollado una línea de trabajo orientada a analizar nuevos enfoques de comunicación hombre-máquina en el entorno de los sistemas CAD.

Este trabajo ha sido desarrollado como parte de una aplicación que permite la obtención de modelos tridimensionales a partir de bocetos que representan una perspectiva del modelo. El boceto es realizado mediante una tableta gráfica LCD, donde el usuario va esbozando su diseño que mediante un proceso de reconstrucción 2D permite de forma automática el reconocimiento de la entidad dibujada y su ajuste inteligente con las entidades que se muestren próximas a ella. La acción de borrar es tan sencilla como rayar las entidades que deseamos eliminar.

foto
Figura 1. Bocetando un modelado
El dibujo 2D obtenido alimenta un motor de reconstrucción geométrica [2] que genera un modelo tridimensional de superficies.

En la actualidad nuestra aplicación exporta el modelo de superficies en formato DXF y VRML [3]. El objetivo de este trabajo es generar, a partir del modelo de superficies un modelo sólido B-rep permitiendo generar un formato STEP (ISO 10303) para permitir su reutilización en otras aplicaciones CAD. Para este último paso se ha elegido el protocolo de aplicación 203, que en la actualidad está presente en la mayor parte de las aplicaciones CAD comerciales.

2. Descripción del algoritmo

Para conseguir nuestro objetivo, junto a la información de que disponemos en el modelo de superficies (lista de vértices que componen cada cara del modelo), se necesitan determinar los vectores normales a cada una de las caras definidas en el modelo orientados desde un punto cualquiera de la cara hacia el exterior del modelo, con el fin de poder determinar el interior del sólido. El algoritmo desarrollado puede resumirse en los siguientes subapartados.

2.1 Obtención de un vector normal cualquiera en un punto interior de la cara
El proceso se realiza de forma independiente determinando la dirección normal y un punto interior a la cara. La dirección normal (Dn) se reduce al producto vectorial de dos vectores que concurran en un mismo vértice de la cara (V1 y V2).

foto
Figura 2. Dirección normal a una cara
La determinación del punto interior de una cara se realiza acorde con los siguientes pasos:

  • Entre todos los vértices de la cara seleccionamos aquel que, no perteneciendo a ninguna arista horizontal, tenga menor coordenada “x” en la proyección de la imagen.
  • Tomamos una arista de la cara que concurra en dicho vértice (a) y obtenemos su punto medio Pm (x,y).
  • Obtenemos el punto (P) de menor coordenada “x” de las intersecciones de la recta definida en la forma y = Pm(y) con el resto de las aristas de la cara.
  • Se define como punto interior a la cara (Pi), el punto medio de Pm y P.
foto
Figura 3. Punto interior a una cara
Haciendo pasar por el punto interior determinado en la cara un vector según la dirección normal y sentido aleatorio, determinamos el vector buscado (Vn).
foto
Figura 4. Vector normal en un punto interior a una cara
2.2 Evaluación el sentido de los vectores normales

Determinado el vector normal a la cara queda por comprobar si su sentido apunta hacia el exterior del modelo. Tal evaluación se realiza de acuerdo con el siguiente algoritmo:

  • Determinamos la arista definida por el punto interior y el vector normal al plano de la cara del modelo.
  • Obtenemos los puntos de intersección de dicha arista con el resto de las caras definidas en el modelo (Q).
  • Determinamos los vectores definidos por los puntos de intersección y el punto interior de la cara, de manera que: si el número de dichos vectores que tienen el mismo sentido que el vector V es par o nulo, se modifica el sentido del vector normal.
foto
Figura 5. Evaluación del sentido del vector normal

2. Resultados y Discusión

El algoritmo planteado ha sido ensayado satisfactoriamente en más de 80 ejemplos. En la tabla 1 se representan algunos de dichos modelos, así como la disposición de los vectores normales obtenidos.

Una vez conocidas las orientaciones del vector normal de cada cara, se dispone de la información necesaria para generar un modelo B-rep que represente al sólido, utilizando el formato STEP [3].

Para ello se ha utilizando la entidad Manifold_Solid_ Brep la cual queda definida a través de la entidad Closed Shell. Ésta última sirve como frontera para una región finita del espacio R3 que está definida por una colección de caras orientadas.

En nuestro caso, estas caras, son superficies planas por lo que puede utilizarse en su definición otra entidad denominada, Poly_Loop , compuesta por una lista ordenada de los vértices que componen cada una de las caras. (El orden en el que se recorren es indiferente). Estos recorridos cerrados se asocian a las entidades Face_Bound y Face_Surface, que nos permiten definir la orientación de la cara, mediante el uso de la cadena “.T.” o “.F.” para designar si el recorrido de los vértices en cada cara es coherente con el sentido del vector normal (True) o es opuesto (False). El contenido de parte del fichero STEP según la definición de la parte 21 tendría el siguiente aspecto:

  • #33=POLY_LOOP((#3,#4,#1,#2));.
  • #39=FACE_BOUND(#33,.T.);
  • #40=FACE_SURFACE((#39),#27,.F.);
  • #51=CLOSED_SHELL((#40,#42,#44,#46,#48,#50));
  • #52=MANIFOLD_SOLID_BREP(#51);

3. Conclusiones

Se ha desarrollado de forma satisfactoria, una aplicación, que permite generar modelos sólidos de objetos poliédricos de mediana complejidad, en formato STEP AP203 a partir de un simple boceto en perspectiva del objeto. Ofreciendo de esta forma una herramienta muy sencilla y cómoda que puede permitir generar modelos sólidos de una forma ágil en las fases iniciales del proceso de diseño.

No hay comentarios:

Publicar un comentario