Você está na página 1de 14

Adaptación del PRM sobre superficies libres.

Aplicación a entornos CAD/CAM


J.M. Sáez †, A. Jimeno †, J.A. Puchol ‡, R. Molina ‡

† Departamento de CAD/CAM
Instituto Tecnológico del Calzado y Conexas (INESCOP)
Polígono Industrial Campo Alto. Aptdo correos 253, 03600 Elda (Alicante)
Tlf: 965395213 Fax: 965381045

Grupo de Visión Artificial y Síntesis de Imagen
Universidad de Alicante
Campus de San Vicente. Aptdo correos 99, 03080 Alicante
Tlf: 965909310 Fax: 965903902

Resumen

Dentro del desarrollo de entornos CAD/CAM, es usual la utilización de curvas y


superficies libres (Bézier, B-splines, NURBS...) para modelar objetos. Para
visualizar dichos objetos se suele utilizar un modelo alternativo poligonal.
Normalmente, para que esa discretización no sea excesivamente apreciable, se
genera una malla poligonal muy densa. El problema es que aumentando la
densidad global de la malla aumentamos la calidad de visualización pero
empeoramos el tiempo de representación, eliminando la ventaja del modelo
alternativo. El método que proponemos permite generar mallas poligonales de
densidad variable para representar superficies libres, variando la densidad en
función de la precisión requerida en cada zona. La utilización de modelos
poligonales optimizados proporciona mallas de alta calidad con unos tiempos de
visualización aceptables. El método está basado en el algoritmo de
poligonalización de blobs llamado “Postproceso de rectificación de
metapolígonos” [1]. Con la generalización del método sobre superficies libres se
aumenta notablemente la aplicabilidad del mismo. Esta nueva versión del
algoritmo contiene además un conjunto de mejoras con las que se obtienen mallas
mucho más correctas con menor tiempo de cálculo. Los ejemplos que aparecen en
este documento han sido extraídos de las distintas aplicaciones CAD/CAM
desarrolladas en el Instituto Tecnológico del Calzado en las que se ha
implementado el método propuesto.

Palabras clave: Superficie libre, blob, metapolígono, mecanización, compensado.


1 Introducción
Dentro del marco de desarrollo de entornos CAD/CAM existen numerosas
aplicaciones que utilizan curvas y superficies libres (Bézier, B-splines, NURBS...)
para el modelado de objetos. El amplio conocimiento existente sobre estas
herramientas [2] permite poder crear potentes entornos de diseño para modelar casi
cualquier tipo de objeto tanto bidimensional como tridimensional.

A la hora de representar una superficie suele utilizarse un modelo discreto de la


misma, normalmente una malla poligonal, para poder visualizarla en tiempo real.
La calidad visual del objeto depende directamente de la densidad de dicha malla
poligonal. El problema es que aumentando la densidad general de la malla
aumentamos igualmente el tiempo necesario para representarla, perdiendo la
ventaja del modelo alternativo. Esto se debe a que suelen utilizarse modelos
poligonales homogéneos, donde la densidad de los polígonos es la misma en todas
las zonas de la superficie. Este tipo de poligonalización se consigue recorriendo el
espacio paramétrico de la superficie en incrementos constantes. En el caso de
superficies en tres dimensiones, el espacio paramétrico a recorrer es bidimensional.
En la figura 1 podemos observar un ejemplo del procedimiento para crear este tipo
de mallas poligonales.
Espacio paramétrico Espacio euclídeo
u
v

Figura 1: Construcción de una malla poligonal homogénea

Como vemos, aunque los vértices se tomen equidistantes sobre el espacio


paramétrico, no tienen por qué estarlo en el espacio euclídeo. Esto provoca que
existan zonas en las que la distancia paramétrica tomada sea suficiente y zonas en
las que no. La solución a este problema consiste en generar una malla poligonal de
densidad variable, concentrando dicha densidad en zonas de alta curvatura y
relajándola en zonas más planas. La utilización de modelos poligonales
optimizados proporciona mallas de alta calidad de visualización con unos tiempos
de representación aceptables. Para medir el grado de adaptabilidad de una malla
poligonal se utilizan distintos criterios, como por ejemplo el propuesto por H.L. de
Cougny [3]. En este artículo presentamos un algoritmo adaptativo de
poligonalización que genera mallas optimizadas para cada superficie, con la
posibilidad de regular el grado de semejanza que deseamos con respecto a la
superficie original. El algoritmo es una adaptación a superficies libres de un
método de poligonalización de blobs llamado “Postproceso de Rectificación de
metapolígonos”[1]. En el siguiente apartado introduciremos las ideas básicas de
dicho algoritmo.

1.1 Postproceso de Rectificación de Metapolígonos (PRM)

Este método fue utilizado para la triangulación óptima de objetos orgánicos del tipo
blob. Un blob es un objeto 3D expresado en términos de isosuperficie construido
con un conjunto de primitivas generadoras de campo [4]. El tipo de dichas
primitivas define el modelo que estamos utilizando. Este algoritmo se aplicó sobre
el modelo más conocido, que es el de Metaballs [5]. Cuenta con una serie de
ventajas entre las que destaca su reducido coste (lineal con respecto al volumen del
objeto) con respecto a otros algoritmos de poligonalización adaptativa. De hecho,
es posible adaptar otros métodos de propósito similar [6][7] y otros muchos
derivados de triangulaciones basadas en Delaunay adaptadas a espacios
tridimensionales [8], pero el coste y la complejidad de estos algoritmos resulta
mucho mayor. Como veremos, al adaptar este algoritmo sobre superficies libres
hemos podido incorporar una serie de mejoras que permiten realizar una
poligonalización adaptativa en un tiempo de cómputo menor que sobre blobs y
siempre conservando el mismo coste lineal.

El PRM consiste básicamente en adaptar una malla poligonal inicial de


densidad fija a la isosuperficie original mediante la división recursiva de cada
polígono de dicha malla. La triangulación inicial se realiza mediante el algoritmo
Marching Cubes [9] o sobre variantes más avanzadas del mismo [10]. Para decidir
si dividimos o no un triángulo (base de recursión) le aplicamos el criterio de
partición de un triángulo. Esto es: para cada arista del triángulo calcular su longitud
y el ángulo que forman entre sí los vectores gradiente de la superficie medidos en
sus extremos. Si el ángulo asociado a alguna arista supera un umbral U o la
longitud de la misma supera un umbral L, el triángulo tendrá que ser partido por el
punto medio de dicha arista. Dependiendo de dicho criterio, dividiremos el
triángulo según las aristas que fallen (figura 2). A los triángulos resultantes les
aplicaremos el mismo método recursivamente hasta un límite máximo H (altura
máxima del árbol de recursión). Los nuevos vértices obtenidos de cada división
han de adaptarse a la isosuperficie mediante un método de búsqueda de un punto
sobre la frontera.

Pm
T1
T1 T3 T T 2 T3
T T T2
Pm T2 Pm Pm
T4 Pm
T1 Pm

(a) (b) (c)


Figura 2: Casos de partición de triángulo en dos, tres y en cuatro triángulos.

La malla poligonal final constará de todos los triángulos que incumplan el criterio
de partición de un triángulo o que hayan llegado a la división recursiva máxima. El
resultado de este algoritmo es una malla triangular adaptativa de densidad variable
ajustada a partir de la malla inicial.

2 Adaptación del PRM sobre superficies libres


En este apartado detallaremos cada uno de los pasos que hemos seguido para
adaptar el PRM sobre superficies libres. Como veremos, el nuevo algoritmo cuenta
con su propia poligonalización inicial, por lo que ya no se trata de un postproceso
de adaptación sino de un algoritmo completo. Por otro lado, hablaremos de cómo
adaptar los nuevos vértices a la superficie, proceso que se simplifica enormemente,
y de los nuevos casos de partición triangular introducidos para optimizar la malla
final. También hablaremos de la aplicación del algoritmo sobre espacios discretos,
que como veremos generaliza ampliamente el espectro de su aplicabilidad.
Finalizaremos con una serie de ejemplos de aplicaciones en las que se ha
introducido tanto para mejorar la visualización como para optimizar procesos de
generación de trayectorias de mecanizado.

2.1 Poligonalización inicial

El PRM se propone como un postproceso de cualquier algoritmo de triangulación


de blobs puesto que no existe ningún tipo de triangulación de blobs sencilla. Esto
se debe a que solamente contamos con la ecuación implícita del sólido al que
pertenece la superficie. En el caso de las superficies libres, contamos con una
definición paramétrica de la superficie que permite formar una poligonalización
inicial de forma sencilla. Al romper esta dependencia eliminamos problemas
añadidos que puede contener el método original.

Inicialmente formaremos una malla poligonal cuadrangular a incrementos


paramétricos constantes, tal y como se veía en la figura 1. A cada cuadrilátero
perteneciente a la malla inicial le aplicaremos el criterio de partición de un
cuadrilátero. Dicho criterio consiste en calcular para las cuatro aristas y las dos
diagonales del cuadrilátero, la longitud y el ángulo que forman los vectores
gradiente de la superficie medidos en sus vértices. Si la longitud de alguna arista o
diagonal supera un umbral L o el ángulo asociado supera un umbral U, el
cuadrilátero será dividido. Si todas las aristas y diagonales superan el criterio, el
cuadrilátero pertenecerá a la poligonalización final.

Para dividir un cuadrilátero siempre lo haremos en dos triángulos manteniendo


los vértices originales. Para partir tendremos que escoger una de las dos diagonales
del cuadrilátero original. Dicha diagonal será la que menor ángulo asociado tenga
(figura 3). De esta forma, la poligonalización en esta porción de superficie se
asemeja mucho más a la superficie original. Por otro lado, ya que los triángulos
resultantes serán divididos de forma similar al PRM y dada la mecánica del criterio
de partición de un triángulo, el algoritmo terminará mucho antes que partiendo por
la diagonal opuesta.

(a) (b) (c)


Figura 3: Posibles casos de división de un cuadrilátero.

Puesto que los cuadriláteros que superen el criterio pertenecerán directamente a


la malla poligonal final, la topología de la poligonalización final será mixta, esto
es, una malla formada por triángulos y cuadriláteros interconectados.

2.2 Partición de un triángulo y adaptación de los nuevos vértices

Cada triángulo obtenido por la partición de un cuadrilátero será subdividido


recursivamente hasta una altura H tal y como se realizaba en el PRM original con
el mismo criterio de partición de un triángulo. Sin embargo, el segundo caso de
partición (figura 2) se verá modificado de la siguiente manera: Cuando fallan dos
aristas de un triángulo, surgirán dos nuevos vértices en los puntos medios de dichas
aristas. Está claro que uno de los nuevos triángulos será directamente el formado
por los dos nuevos vértices y el vértice que comparten las aristas. Eliminando este
triángulo nos queda por poligonalizar un cuadrilátero. Este nuevo cuadrilátero será
poligonalizado según el criterio de partición de un cuadrilátero, añadiéndolo a la
malla final directamente o partiéndolo convenientemente estudiando sus aristas.

Como vimos en el apartado de partición de un cuadrilátero, la elección de la


diagonal correcta evita particiones posteriores de los triángulos generados. Con la
utilización de una topología mixta representamos la misma malla con un número de
polígonos menor. Por otro lado, si usamos un motor de representación que sea
capaz de optimizar el uso de cuadriláteros, el tiempo de visualización se reduce al
ser tratado como un solo polígono. En la figura 4 podemos observar los nuevos
casos de partición de un triángulo.

Pm
T1
T1
T T T2 T 3
Pm T2 Pm
T4 Pm

(a) (b)

T2
C1 T3
T T T2 T
T 3
Pm Pm Pm
T1 Pm T 1 Pm T1 Pm

(c) (d) (e)


Figura 4: Nuevos casos de partición de triángulo.Las aristas etiquetadas con un
círculo son aquellas que superan los umbrales y por tanto serán divididas.

Para adaptar los nuevos vértices en el PRM había que intersectar la superficie
con la recta definida por el punto medio entre los dos vértices y el vector medio
entre las normales de los dos vértices asociados a la arista de estudio. Puesto que
no existe ningún procedimiento analítico conocido para ello, se realizaba un
procedimiento iterativo que, por consiguiente, consumía gran cantidad de tiempo.
En el caso de las superficies libres hemos simplificado este procedimiento. Para
calcular la posición del nuevo vértice sobre la superficie, tomamos la posición
media de los vértices de la arista en el espacio paramétrico (figura 5).
Espacio paramétrico Espacio euclídeo

P3
P3

Pm P1 Pm

P1

Figura 5: Ajuste de los nuevos vértices.

Este cálculo tiene un coste constante, frente al coste lineal de búsqueda en


frontera en el caso del PRM original. Dada la cantidad de vértices nuevos que se
generan, este procedimiento puede considerarse crítico, por tanto el tiempo de
cómputo general se minimiza considerablemente.

2.3 Poligonalización sobre un espacio discreto

Como método alternativo a las superficies libres o NURBS algunas aplicaciones


CAD/CAM utilizan una representación discreta del modelo anterior. Se trata de
manejar modelos poligonales (o mallas de puntos) que debido a su densidad no
necesitan de un espacio continuo de representación (los puntos se encuentran tan
cercanos que el error cometido se puede considerar despreciable). En general, se
puede expresar un modelo poligonal a partir de un modelo continuo en forma de
matriz de la forma siguiente: Definimos PS n como el conjunto de n superficies
libres a poligonalizar, cada una de ellas (ri ) se supone normalizada en el espacio
paramétrico [0..1]:

PS n = {ri (u , v) : i ∈ [1..n], u ∈ [0..1], v ∈ [0..1]} 1)

Sea DS el dominio de la malla escogido sobre el rango paramétrico de las


superficies de PS con densidades m y s para las direcciones u y v respectivamente:
DS = {DSi : i ∈[1..n]}
DSi = {(x j , yk ) : j ∈ [0..mi −1], k ∈[0..si − 1]}
1 1 2)
x j = j.∆ j : ∆ j = , yk = k.∆k : ∆ k =
mi − 1 si − 1
mi , si ∈ Ν+
Finalmente, podemos definir el modelo poligonal malla GS como:

GS = {GS i : i ∈ [1..n]} 3)
GSi = {ri (u , v ) : ( u, v) ∈ DS i }

La ventaja principal del modelo poligonal se basa en el amplio abanico de


operaciones que pueden realizarse sobre el modelo y que serían muy complicadas
sobre el modelo matemático de la superficie. Los coeficientes [i,j] de cada punto en
la matriz simbolizan la discretización del espacio paramétrico (u,v) de la superficie
según la ecuación 3). A continuación detallaremos cómo aplicar el algoritmo de
poligonalización sobre un espacio discreto de estas características.

Comenzaremos con la utilización de una malla del tipo expresado en la


ecuación 3) y asumiremos que la densidad de la malla es suficiente para representar
con precisión el objeto en cuestión. Por tanto tenemos una cota máxima del grado
de detalle que tiene el modelo a poligonalizar. Como nos movemos en un espacio
discreto, todos los vértices de la poligonalización pertenecerán a la nube de puntos
original.

Puesto que tenemos un tamaño mínimo de polígono, tanto el tamaño de la


poligonalización inicial como la altura máxima del árbol de partición ha de
regularse en función del mismo. Puesto que en cada partición la arista se divide en
2 partes por el punto medio paramétrico de la misma, si queremos que el árbol
tenga una altura máxima de H, el tamaño de arista de la cuadrangulación inicial
será, como mínimo de 2H unidades. En la figura 6 se aprecian las distintas
particiones que podrían hacerse sobre un cuadrilátero de tamaño 8x8 en el peor de
los casos.

Figura 6: Niveles de partición recursiva en el peor de los casos de un


cuadrilátero de tamaño 8x8
Como vemos en la figura 6, la máxima altura que podemos tener en el árbol de
partición para ese tamaño de cuadrilátero es de 3. Si superásemos la altura máxima,
los nuevos vértices coincidirían con los del propio triángulo que estamos
estudiando. El resto del procedimiento se aplica de igual forma que sobre un
espacio continuo.

Este procedimiento tiene numerosas ventajas. La primera es que cada vez que
generamos un nuevo vértice no hay que interrogar a la superficie para extraer su
posición y el valor de su vector gradiente, por tanto el proceso se hace mucho más
rápido. Así mismo, aprovechamos al máximo la coherencia espacial de esta
geometría. En el caso continuo, cuando se parte una arista y se genera un nuevo
vértice no sola mente se calcula en el triángulo actual sino también en el vecino que
comparta con él dicha arista. Esto implica calcular la posición y el vector gradiente
de cada nuevo vértice dos veces. En el caso discreto, tenemos todos los posibles
vértices calculados a priori por lo que eliminamos este problema.

Además de las ventajas temporales que ofrece esta adaptación, la ventaja


fundamental es su generalidad. Puesto que en el caso discreto no utilizamos en
ningún momento la superficie continua, podemos aplicar el algoritmo a cualquier
nube de puntos ordenada sobre un espacio paramétrico, siempre que las distancias
entre dos puntos contiguos en la misma dirección paramétrica sea constante.

2.4 Ejemplos y aplicaciones

Este algoritmo ha sido implementado en algunas aplicaciones CAD/CAM


desarrolladas en el Instituto Tecnológico del Calzado y Conexas (INESCOP). En
este apartado pondremos algunos ejemplos obtenidos de dichas aplicaciones.

La primera aplicación en la que se implementó el algoritmo fue en el proyecto


europeo de transferencia tecnológica (RTT) “Footwear Last Design and
Manufacturing”. Se trata de una aplicación CAD/CAM de diseño de hormas por
computador [11]. El algoritmo se aplicó para agilizar la visualización sin perder
calidad en la forma. En la aplicación se maneja una nube de puntos muy densa
ordenada paramétricamente que proviene de un digitalizador. Es por ello que este
es el conjunto de puntos que representa de manera más fiable la figura original. Por
tanto, el algoritmo se aplica en este caso sobre el espacio discreto del conjunto
digitalizado. En la figura 7 podemos observar un ejemplo de la superficie original
poligonalizada con todos los puntos de la malla.
Figura 7: Horma poligonalizada con todos los puntos obtenidos del digitalizador.
Se han utilizado 15120 polígonos para representarla.

Como podemos imaginar, el número de polígonos generados resulta excesivo


para que su representación resulte ágil. Por ello es necesario representar la figura
con un número de polígonos menor. En la figura 8 tenemos un ejemplo de
poligonalización de la misma horma con un incremento paramétrico mayor.

Figura 8: Ejemplo de poligonalización de una horma con incrementos


paramétricos mayores (960 polígonos)
Como vemos, la representación homogénea con menos polígonos es mucho más
inexacta que la del modelo original. En la figura 9 tenemos la representación del
mismo ejemplo con el algoritmo propuesto.

Figura 9: Ejemplo del algoritmo sobre una horma. Nº polígonos = 4698

En el ejemplo, la poligonalización inicial es la misma que en la figura 8. Como


vemos, se respeta la densidad poligonal inicial en las zonas donde la precisión es
suficiente y se incrementa en las zonas con cambios bruscos de curvatura. Se
consigue una calidad de acabado muy cercana al modelo original con un número de
polígonos mucho menor (del orden de un 70% menos). En el siguiente ejemplo
(figura 10) hemos introducido una torsión exagerada sobre la horma. Como vemos,
la malla se adapta perfectamente a la nueva situación de los vértices.

Figura 10: Ejemplo de una horma con una torsión exagerada sobre su quiebre.
La segunda implementación del algoritmo se realizó sobre el proyecto RTT
“New metodology for rubber and crock recycling to produce footwear insocks”. Se
trata de una aplicación para el diseño y fabricación de plantillas (figura 11)

Figura 11: Ejemplo de poligonalización del molde de una plantilla.

En este caso el algoritmo no se ha utilizado para mejorar la visualización sino


para mejorar el tiempo de mecanizado. Se entie nde por mecanización el proceso de
generación de la trayectoria de una herramienta de corte mediante un algoritmo de
compensado para que una máquina en concreto fabrique un determinado objeto.
Existen numerosos algoritmos de compensado basados en mallas poligonales,
como por ejemplo el de “Shoe last machining using virtual digitising” [12]. El
tiempo de cálculo del compensado depende directamente del número de vértices
que tenga la malla poligonal del objeto que queremos fabricar. Como en el caso de
la visualización, la densidad de la malla es directamente proporcional a la calidad
final de fabricación e inversamente proporcional a la velocidad de mecanizado. Por
tanto, el tiempo y la calidad de mecanizado se optimizan con una malla adaptativa.

Con la adaptación de este algoritmo en el mecanizado se consiguen reducciones


de hasta un 60% del tiempo de cálculo. Contando con que un mecanizado común
de este tipo de piezas tarda del orden de 120 minutos, con el algoritmo
conseguimos unos tiempos del orden de 48 minutos para obtener la misma calidad
de acabado.
3 Conclusiones
El método propuesto tiene una serie de ventajas entre las que podemos citar:

- Generación de una malla poligonal adaptativa, que maximiza la calidad de la


representación y minimiza el número de polígonos necesarios.

- Los nuevos casos de partición poligonal hacen que el número de polígonos


generado sea menor y que la poligonalización sea más correcta.

- Aunque el algoritmo sigue teniendo un coste lineal, es más rápido y sencillo


que el algoritmo original (PRM) debido al ajuste directo de los vértices.

- La adaptación sobre un espacio discreto aumenta el marco de aplicabilidad del


algoritmo enormemente y como hemos visto, el aprovechamiento de la
coherencia espacial provoca que el algoritmo sea aún más rápido.

Agradecimientos
Queremos agradecer a INESCOP y a nuestros compañeros del grupo de
investigación de CAD/CAM: David Ortuño, Vicente López y Juan Poveda el
tiempo y el trabajo que han invertido en el desarrollo de este artículo.

Bibliografía
1. Puchol García J.A.; Sáez Martínez J.M.; Molina Carmona, R. “Postproceso de
Rectificación de Metapolígonos” IX Congreso Español de Informática Gráfica.
Jaén, Junio de 1999.

2. Farin G. “Curves and surfaces for CAGD”. Academic Press 1993.

3. H.L. de Cougny and M.S. Shephard “Surface meshing using vertex insertion”.
Scientific Computation Research Center 1996.

4. Blinn, J.F.: “A Generalization of Algebraic Surface Drawing”, ACM Trans. On


Graphics Vol 1, No. 3, pp.235-256, 1982.
5. Nishimura, H., Hirai, M., Kawai, T., Kawata, T., Shirakawa, I. and Omura,
K.;”Object Modeling by distribution Function and a Method of Image
Generation”, Trans.IEICE Japan, Vol J68-D, No. 4, pp. 718-725.

6. Puchol García, J.A.; Molina Carmona, R.; García Quintana, C. "Conversión


Paramétrica de Blobs a Modelo de Fronteras en Tiempo Real”. IX Congreso
Internacional de Ingeniería Gráfica. Bilbao - San Sebastián, Junio 1997.

7. Sáez Martínez J.M.; Puchol García J.A.; Molina Carmona, R.


“Poligonalización de Blobs con Rectificación de Precisión” IX Congreso
Español de Informática Gráfica. Jaén, Junio de 1999.

8. H.Borouchaki, F. Hecht, E. Saltel and P.L. George “Reasonably efficent


Delaunay based mesh generator in 3 dimensions” INRIA Report 1995.

9. Lorensen, W.E. and Cline, H.E. “Marching Cubes: A High Resolution 3D


Surface Construction Algorithm”, ACM Computer Graphics, Vol 21, No. 24,
pp. 163-169, Julio 1987.

10. B.A. Payne and A.W. Toga, “Surface mapping brain function on 3D models”,
IEEE Computer Graphics and Applications, pp 33-41 1990.

11. A.Jimeno y otros. “Shoe last and computer systems”. Tecnología del calzado.
España 1999.

12. J.M. Chamizo, F.Salas, A.Jimeno “Shoe last machining using virtual
digitising”. (En proceso de publicación en la revista “International journal of
advanced manufacturing technology”)

Você também pode gostar