RECONSTRUCCIÓN DE MODELOS SÓLIDOS 3D A PARTIR DE VISTAS ORTOGRÁFICAS 2D UTILIZANDO TÉCNICAS DE COMBINACIÓN DE CUERPOS ELEMENTALES. Autores: Gomis Martí; José María; Company Calleja, Pedro Pablo. (1) Universidad Politécnica de Valencia. (2) Area de conocimiento: Expresión Gráfica en la Ingeniería E.T.S.I.Industriales. Universidad Politécnica de Valencia. Camí de Vera s/nº. 46071 Valencia. España. Tfn.: 34-963877514 Fax.: 34-963877179 E-mail: jmgomis@degi.upv.es RESUMEN La descripción de objetos tridimensionales en un plano, utilizando proyecciones bidimensionales, se remonta a más de dos mil años. El problema contrario de cómo reconstruir automáticamente la estructura geométrica y topológica de un objeto tridimensional a partir de sus proyecciones, empezó a atraer la atención sólo a finales de los 60, motivado por el desarrollo de los ordenadores digitales. En efecto, la revolución que supuso la aparición de las herramientas de Diseño Asistido por Ordenador (CAD), aun no se ha podido completar, debido a que gran cantidad de información de las oficinas de ingeniería (“Know-how”) sigue estando almacenada en complejos planos de ingeniería, inaccesible para los ordenadores. Por ello, conseguir que los ordenadores puedan “leer” planos de ingeniería es un reto pendiente. La importancia de éste problema es doble, porque los dibujos de ingeniería son la forma estándar de comunicación entre los departamentos de diseño y fabricación, por lo que incorporar a los ordenadores a esa comunicación puede ser muy beneficioso para mejorar el proceso de diseño/fabricación. La presente comunicación trata sobre la implementación de un algoritmo eficiente para la reconstrucción del modelo tridimensional de cuerpos poliédricos a partir de sus proyecciones ortográficas de planta, alzado y perfil dadas mediante líneas continuas o discontinuas. Dicho algoritmo reduce eficazmente el posible número de objetos ambiguos y puede reconocer todos los sólidos correctos correspondientes a las proyecciones dadas. Palabras Claves: Reconstrucción 3D, Modelos Sólidos, Proyecciones Ortográficas. Area Temática: Ingeniería Gráfica, Informática Gráfica. (1) Universitat Jaume I, Departamento de Tecnología, E-12071, Castellón. pcompany@tec.uji.es. (2) Este trabajo cuenta con el apoyo del Gobierno Autónomo Valenciano (Generalitat Valenciana) dentro del Programa Tecnológico para la Investigación y Desarrollo (Proyecto GV-TI-04-39), titulado “Reconstrucción de objetos 3D a partir de sus representaciones 2D”). 1. ESTADO DEL ARTE Los primeros estudios sobre la reconstrucción geométrica tridimensional se pueden encontrar resumidos en unas pocas referencias [1-8]. El libro de Sugihara [1] es la referencia más completa a la historia inicial de la interpretación automática de dibujos técnicos. Najendra y Gujar [2] publicaron un resumen de varios artículos que trataban la reconstrucción de objetos tridimensionales a partir de sus vistas 2D. Wang y Grinstein [3] completaron el trabajo, realizando una taxonomía de la reconstrucción de objetos 3D a partir de dibujos lineales de proyección bidimensional. La referencia a Yan y otros [4] se debe a que estos autores completaron y sistematizaron uno de los métodos más desarrollados y efectivos hasta la fecha, para reconstrucción de poliedros a partir de vistas múltiples. Por último, las referencias [5-7] trazan los orígenes del prometedor método de reconstrucción por optimización de regularidades, mientras que la referencia [8] recoge la visión de los autores sobre el estado del arte de la reconstrucción. 1.1. Análisis de los métodos de reconstrucción a partir de vistas múltiples Los modelos obtenidos tras el proceso de reconstrucción son generalmente de tipo “Geometría Constructiva de Sólidos” (CSG) o “Representación de Fronteras” (BRep). Actualmente, la mayor parte de los trabajos de reconstrucción totalmente automática usan BRep, mientras que las representaciones CSG son más habituales en los procesos de reconstrucción guiada. En efecto, se han llevado a cabo distintos intentos para obtener modelos CSG a partir de vistas múltiples. Todos los métodos de este tipo tienen en común que asumen que el objeto 3D puede ser construido a partir de cierto conjunto de primitivas combinadas siguiendo una cierta jerarquía. Los métodos difieren en las estrategias que proponen para “extraer” dichas primitivas de las vistas de partida. Pero, hasta la fecha, en todos ellos se requiere mucha participación del usuario. Por tanto, se trata de métodos de construcción asistida, más que de reconstrucción automática. Respecto a los métodos orientados hacia la consecución de un modelo BRep, tal como hemos indicado arriba, el trabajo de Yan y otros [4], contiene una completa y detallada descripción del método de reconstrucción de poliedros más efectivo hasta la fecha. Dicho método sigue la secuencia de pasos que resumimos a continuación: 1. 2. 3. 4. Generación de vértices “candidatos”, a partir de los nodos 2D. Generación de aristas “candidatas”, a partir de los vértices candidatos y los segmentos lineales de partida. Construcción de caras, a partir de las aristas. (Primero se construyen los “bucles de cara”, candidatos a describir caras en el modelo 3D, y después se filtran dichos bucles). Formación del modelo BRep, a partir de los bucles de cara. La secuencia descrita resume con bastante aproximación la mayoría de los métodos basados en “ensamblar” una representación BRep del objeto a partir de una colección de elementos geométricos, los cuales deben identificarse previamente en las figuras de partida. Las diferentes propuestas se centran en aumentar la efectividad de los algoritmos y en tratar los casos patológicos. 1.2. Antecedentes de los autores en este campo. Los primeros pasos dados por los autores de esta comunicación en el campo de la reconstrucción tridimensional se dirigieron hacia la restitución de un sistema de coordenadas tridimensional a partir de su proyección axonométrica oblicua. Dicho trabajo, resuelto mediante el empleo de la programación simbólica y de un método numérico, sugirió la vía de la utilización de las axonometrías oblicuas en los trabajos que se efectuaron posteriormente. Los resultados de este trabajo fueron presentados en el VII Congreso de Ingeniería Gráfica celebrado en Vigo en junio de 1995 [9]. A partir de aquí el planteamiento general de reconstrucción se dividió en dos vías: el método que utiliza vistas múltiples ortográficas y el método que realiza la reconstrucción a partir de una única vista. Ambas vías se enfocaron a partir de la utilización de axonometrías oblicuas. En la primera, se usó como elemento auxiliar para la determinación de la topología de los objetos, utilizando para ello un método derivado del Teorema de Pohlke. En la segunda, se utilizó como dato de partida para el algoritmo de reconstrucción. Respecto al trabajo realizado hasta la fecha en la reconstrucción a partir de vistas múltiples ortográficas, los primeros resultados se materializaron en la obtención de un algoritmo que permite la generación automática de axonometrías oblicuas a partir de las tres vistas diédricas de un objeto poliédrico. Dichos resultados fueron presentados en la Reunión Internacional de Expresión Gráfica en la Ingeniería y en la Arquitectura EGRAF 96 celebrada en Camagüey (Cuba) en Diciembre de 1996 [10]. Posteriormente dicho algoritmo fue complementado con otro que permite reconstruir dicho objeto en tres dimensiones. Una versión básica, ya operativa de dicho algoritmo fue presentada en el I Seminario Italo-Español de Diseño de máquinas celebrado en Nápoles en Junio de 1996. Los resultados definitivos fueron presentados en el XII Congreso Nacional de Ingeniería Mecánica celebrado en Bilbao en febrero de 1997 [11]. En la actualidad los autores de esta comunicación trabajan siguiendo las líneas básicas planteadas por Wesley y Markowsky [12] y continuadas por Yan y otros [4]. 2. NUESTRO ALGORITMO DE RECONSTRUCCIÓN. La finalidad del algoritmo que presentamos es la reconstrucción automática del modelo tridimensional “BRep” de un cuerpo poliédrico a partir de sus proyecciones ortográficas de planta, alzado y perfil. Según lo apuntado al final del apartado anterior el esquema de reconstrucción seguido está basado en los trabajos de Wesley y Markowsky [12] y Yan y otros [4]. El esquema utilizado se puede resumir en un primer paso para generar el modelo alámbrico y un segundo paso para generar el modelo BRep. A su vez, generar el modelo alámbrico es una tarea compleja que consiste en generar vértices 3D a partir de proyecciones 2D y generar aristas 3D a partir de vértices 3D. Por su parte, generar el modelo BRep requiere obtener caras 3D a partir de aristas 3D, agrupar las caras 3D para formar cuerpos elementales 3D, y después agrupar cuerpos elementales 3D, para formar los objetos que se correspondan con las proyecciones 2D dadas. El algoritmo, después de tratar los datos de entrada, utiliza toda la información disponible, tal como las líneas continuas o discontinuas en las proyecciones (datos de entrada), para reducir la cantidad de caras y cuerpos potencialmente computables. Resuelve el modelo alámbrico correctamente. Determina eficazmente todas las caras del poliedro, sean éstas cóncavas o convexas. Además, las ambigüedades causadas por el hecho de que varios objetos puedan tener el mismo conjunto de proyecciones dado por los datos de entrada, son tenidas en cuenta de manera que el algoritmo puede reconocer todos los sólidos correctos de un conjunto de proyecciones dado. En la figura 1 se da el diagrama de flujo de la estructura del algoritmo: Entrada: datos de proyección Generación de caras Preproceso de datos 2D Obtención de vértices y aristas de corte Construcción del modelo alámbrico3D Generación de cuerpos elementales Generación de planos Combinación de cuerpos elementales. Verificación final Análisis de la información de las lineas discontinuas Figura 1 Una breve descripción de todos los pasos de este algoritmo de reconstrucción 3D es la siguiente: I. Preproceso de datos. En este paso se realiza un análisis de los datos de entrada. Se ha de tener en cuenta que la información de los datos de entrada es información en dos dimensiones, por lo que en el caso de que algunas aristas del objeto compartan planos proyectantes con relación a alguna de las vistas, pueden originarse solapes entre las proyecciones correspondientes, dando lugar a secuencias de vértices alineados que desvirtúen la relación biunívoca que debe existir entre las aristas y sus proyecciones. La estrategia adoptada para resolver estos posibles problemas ha sido obtener todas las combinaciones que se puedan generar a partir de conjunto de vértices (mas de dos) alineados de una vista, e incluirlas en la lista de aristas de esa vista. Las aristas que se generen y que resulten inútiles para generar el objeto 3D se eliminaran en los siguientes apartados. II. Construcción del modelo alámbrico. En este paso, a partir de toda la información generada por el anterior, información de vértices y aristas en 2D de cada proyección, el algoritmo genera modelo alámbrico. Para cada vista se establecen 5 casos de aristas: aristas con proyecciones paralelas a los ejes X, Y, Z, aristas proyectantes respecto a alguno de los planos diédricos (con proyecciones según un punto) y aristas con proyecciones no paralelas a ningún eje. A partir de aquí, un árbol de decisión permite obtener los vértices 3D de las aristas 3D que generan las proyecciones diédricas de partida. Un sencillo planteamiento desde la geometría analítica permite obtener las ecuaciones de las aristas determinadas y seguidamente la representación del modelo alámbrico. III. Generación de planos. A partir del modelo alámbrico, se construyen todos los posibles planos que se pueden generar con las aristas del objeto 3D. Este paso consta de varios pasos: búsqueda de aristas adyacentes a un vértice, obtención de los planos determinadas por éstas, cálculo del vector normal al plano, eliminación de planos duplicados, búsqueda de aristas pertenecientes a dichos planos y verificación de los gráficos planos. IV. Análisis de la información de líneas discontinuas. Aquí, para cada arista 2D discontinua, se comprueba si la arista 3D generada a partir de ella, tiene un plano que la oculta desde el punto de vista de la proyección, eliminando las aristas 3D que no se oculten detrás de un plano. V. Generación de caras. En este paso se generan todas las caras que forman parte del objeto alámbrico 3D obtenido en pasos anteriores. En primer lugar se generan todos los bucles básicos que pueden formarse, mediante aristas 3D contenidas en un mismo plano. A continuación, se estudian las relaciones de inclusión entre todos los bucles básicos coplanarios. Aquí el criterio utilizado exige identificar previamente el carácter cóncavo o convexo de los bucles básicos a examinar. La identificación del carácter cóncavo o convexo de los bucles se realiza a partir de la información 2D recogida en alguna de las proyecciones del mismo. En el caso de que el posible bucle básico “exterior” sea cóncavo, éste se descompone en tantos bucles como sean necesarios hasta que todos ellos sean convexos. A partir de aquí un bucle básico será “interior” a otro si la totalidad de sus vértices esta incluido en este ultimo (en el caso de ser éste convexo) o en alguno de los del conjunto de bucles convexos fruto de la descomposición de este último (en el caso de ser éste cóncavo). La inclusión de vértices dentro de polígonos se determina comparando el sentido de los vectores resultado de diferentes productos vectoriales en los que intervienen la totalidad de los vectores formados por el vértice analizar junto a los vértices del polígono “exterior”. Este método, que constituye la principal aportación de los autores, permite determinar todo tipo de caras susceptibles de conformar un poliedro, incluidos los no eulerianos. Poliedros, muy presentes en los diferentes objetos usados en ingeniería y arquitectura. VI. Obtención de vértices y aristas de corte. En este paso se examinan todas las caras, cóncavas y convexas, generadas en el paso anterior para obtener los vértices o aristas de corte entre cada dos caras. Dichas intersecciones pueden producirse según aristas de ambas caras (caso mas frecuente, cuyo resultado se ignora), nuevas aristas con sus vértices situados en aristas de las dos caras examinadas (en cuyo caso hay que añadir esta nueva arista junto con sus vértices, así como descomponer las caras examinadas), o bien según una arista con sus vértices no contenidos en aristas de las dos caras examinadas (en cuyo caso la cara que contiene estos “nuevos” vértices es patológica y es eliminada). VII. Generación cuerpos elementales. En este paso, a partir de las caras, se generan todos los cuerpos u objetos simples y cerrados que se puedan generar. Es decir, se generan bucles de cuerpos a partir de caras. Los bucles de cuerpos pueden entenderse como subobjetos que no tienen puntos interiores comunes, pudiendo compartir vértices, aristas o caras. Este apartado, en el que tienen un papel relevante las aristas comunes entre caras y los vectores normales a las mismas, consta de tres subapartados. En ellos sucesivamente: se forman los bucles de cuerpos, se verifican el carácter cerrado de los mismos, y se localizan los posibles bucles interiores a otros bucles exteriores. Los segundos son eliminados y se quedan exclusivamente los bucles de cuerpos interiores. VIII. Combinación de cuerpos elementales y verificación final. En este paso, en primer lugar, a partir de los cuerpos elementales, se obtiene todas las posibles combinaciones de estos cuerpos. A continuación, se obtienen las proyecciones, en alzado, planta y perfil, de todas ellas. Finalmente, se realiza la verificación final, en la que se comparan los vértices y aristas obtenidas con los datos de partida. Unicamente las combinaciones de cuerpos elementales que superen esta verificación son admitidos como correctos, pudiéndose obtener una o varias soluciones. El modelo obtenido es completo, porque sirve para representar sin pérdida de información y de manera inequívoca la estructura topológica y la forma geométrica de cualquier poliedro tridimensional. Para la implementación del algoritmo descrito se ha utilizado el lenguaje de programación C++. En concreto, se ha utilizado el compilador de Borland C++ versión 4.5. El lenguaje C++ se ha elegido por ser el más común como lenguaje de programación de propósito general, y por ser también apropiado para el tratamiento de información gráfica. Aunque se ha realizado una aplicación totalmente independiente, también se ha valorado al elegir el C++ la posibilidad de convertir en el futuro esta aplicación en un módulo de reconstrucción de diferentes aplicaciones CAD comerciales. Por la misma razón (independencia y simplicidad) se ha utilizado el entorno de desarrollo WINDOWS, por ser el más habitual en nuestro contexto. Por lo dicho, queda claro que en esta primera versión se ha buscado una implementación sencilla, por lo que todos los aspectos que tienen relación con las prestaciones del algoritmo (tiempos de cálculo, requerimientos de memoria, etc.) no se han considerado como requisitos. Aunque sí se pretende mejorar estas prestaciones en las siguientes versiones. Empezando por los problemas de almacenamiento de memoria, que han obligado a limitar el tamaño máximo de las figuras a tratar en esta primera versión. 3. EJEMPLO Como ejemplo para ilustrar las posibilidades de reconstrucción del algoritmo desarrollado, en la figura 2 se muestran los datos de partida de un objeto poliédrico no euleriano. Dichos datos de partida son el alzado, planta y perfil izquierdo del objeto. Por su parte, la figura 3 muestra el modelo alámbrico 3D del objeto obtenido. Figura 2 Figura 3 En la figura 4 se pueden ver ilustrada la fase de detección de algunas de las caras generada por el algoritmo. Figura 4 En la figura 5 se pueden observar los cuerpos elementales generados por el algoritmo. Figura 5 Finalmente, la figura 6 muestra el proceso de verificación de una de las combinaciones de cuerpos elementales (se comprueba que sus proyecciones principales coincidan con los datos), y la figura 7 permite observar el modelo BRep de la solución obtenida. Figura 6 Figura 7 4. CONCLUSIONES En este trabajo, se ha presentado un algoritmo para la reconstrucción de modelos sólidos BRep, de cuerpos poliédricos 3D a partir de sus vistas planas principales (alzado, planta y perfil). Con relación a otros trabajos, este algoritmo mejora la determinación de las caras cóncavas, así como el cálculo de la inclusión y otros análisis entre bucles de caras que sean cóncavos. El algoritmo detecta todas las soluciones, en los casos de soluciones múltiples. El algoritmo utiliza la información de las líneas discontinuas para eliminar otros casos patológicos. Actualmente el trabajo de los autores se centra en la optimización del procedimiento de verificación a fin de mejorar el tiempo de ejecución. También esta previsto introducir la posibilidad de la utilización de diferentes formatos gráficos de intercambio para los datos de entrada (como por ejemplo DXF e IGES). Por último, en próximas versiones, se prevé mejorar las prestaciones del algoritmo, por ejemplo utilizando un esquema de memoria dinámica para el almacenamiento de todas las variables, eliminándose así limitaciones de tamaño máximo de los objetos a reconstruir. 5. REFERENCIAS [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] Sugihara K. Machine interpretation of Line Drawings. MIT Press, 1986. Nagendra I.V. and Gujar U.G.. "3-D Objects From 2-D Orthographic Views – A Survey". Computers & Graphics. Vol 12, No. 1, 1988. pp. 111-114. Wang W. and Grinstein G. "A Survey of 3D Solid Reconstruction from 2D Projection Line Drawings". Computer Graphics Forum. Vol. 12, No 2, 1993, pp. 137-158. Yan Q.W., Philip Chen C.L. and Tang Z. "Efficient algoritm for the reconstruction of 3D objects from orthographic projections". Computer Aided Design. Vol. 26, No 9, 1994, pp. 699-717. Marill, T. "emulating the Human Interpretation of Line-Drawings as Three-Dimensional Objects". International Journal of Computer Vision. Vol. 6, No. 2, 1991, pp. 147-161. Leclerc, Y. and Fischler M. "An Optimization-Based Approach to the Interpretation of Single Line Drawings as 3D Wire Frames". Internat. Journal of Computer Vision. Vol. 9, No. 2, 1992, pp. 113-136. Lipson H. and Shpitalni M. "Optimization-Based Reconstruction of a 3D Object from a Single Freehand Line Drawing". Computer Aided Design. Vol. 28, No. 8, 1996, pp. 651-663. Gomis J.M. y Company P. "Reconstrucción geométrica tridimensional". Anales de Ingeniería Gráfica, No. 2, pp 26-34, 1996. Gomis J.M. y Company P. "Restitución de un sistema de coordenadas tridimensional a partir de su proyección axonométrica oblicua" Actas del VII Cong. Inter. Ing. Gráfica. Tomo 1, .pp. 357-372, (1995). Gomis J.M., Leiceaga X. y Vejarano J. " Generación Automática de Axonometrías Oblicuas a partir de sus vistas Ortográficas" Encuentro EGRAF 96, (1997). Gomis J.M., Company P. y Contero M. " Reconstrucción de modelos poliédricos a partir de sus vistas normalizadas" Anales de Ingeniería Mecánica.Año 11, Volumen 1. pp. 383-391, (1997). Wesley M.A. and Markowsky G. " Fleshing Out Projections," IBM Journal of Research and Development, vol. 25 No. 6, (Nov 1981).