You are on page 1of 22

Diseo Asistido por Ordenador

Diseo asistido por ordenador


4 Curso Ingeniera Informtica
J.C. Torres Dpt. Lenguajes y Sistemas Informticos ETS. Ingeniera Informtica Universidad de Granada

TEMA 5. Modelado de slidos

En muchas aplicaciones los elementos que se disean representan objetos fsicos tridimensionales, de los que es necesario calcular propiedades tales como su peso, su volumen o su momento de inercia. Estos objetos no pueden modelarse con las tcnicas vistas en los temas anteriores. Este tema aborda el estudio del modelado de slidos, que es el conjunto de mtodos y tcnicas utilizadas para representar slidos. En el se aborda la problemtica especial planteada en la representacin de slidos y los tres mtodos de modelado ms utilizados en aplicaciones comerciales: la representacin de fronteras, la geometra constructiva de slidos y los octrees.

Diseo Asistido por Ordenador

Indice

5.1. Introduccin. 5.1.1. Modelo topolgico. 5.1.2. Modelo de superficies 5.1.3. Propiedades volumtricas. 5.1.4. Propiedades de los mtodos de representacin. 5.1.5. Operaciones regularizadas 5.1.6. Mtodos de representacin 5.2. Modelo de fronteras (b-rep) 5.2.1. Representacin 5.2.2. Clculo de propiedades 5.2.3. Edicin 5.2.4. Propiedades formales 5.3. Modelos de descomposicin 5.3.1. Enumeracin 5.3.2. Octrees 5.3.3. Almacenamiento 5.3.4. Bsqueda 5.3.5. Operaciones booleanas 5.3.6. Propiedades 5.4. Modelos constructivos: CSG 5.4.1. Representacin 5.4.2. Visualizacin 5.4.3. Propiedades

Diseo Asistido por Ordenador

5.1 Introduccin
Muchas aplicaciones (CAD/CAM) necesitan trabajar con elementos volumtricos con los que se puedan calcular propiedades, como por ejemplo el volumen, tamao, tensiones, temperaturas y realizar operaciones como unir objetos, calcular su interseccin, ver colisiones de elementos (robot, objeto), etc. En otros casos, el objeto que se disea se debe fabricar mediante algn proceso automtico, siendo fundamental el garantizar que representa realmente a un slido. El modelado de slidos es el conjunto de teoras, tcnicas y sistemas orientados a la representacin completa en cuanto a informacin de slidos. Dicha representacin debe permitir (al menos en principio) calcular automticamente cualquier propiedad bien conocida de cualquier slido almacenado [Requi83]. Con los slidos representados necesitaremos, adems de visualizarlos y editarlos, calcular sus propiedades fsicas (por ejemplo su peso o su centro de gravedad), y simular sobre ellos procesos fsicos (como la transmisin de calor en su interior).

Figura 5.1. Niveles de representacin Antes de plantearnos como realizar la representacin, es necesario concretar cuales son los aobjetos a representar. Es decir, formalizar lo que entenderemos por slido [Mntyla 88]. Hay dos aproximaciones diferentes al problema, una que caracteriza al slido como un conjunto de puntos 3D, conocida como modelo topolgico o de conjunto de puntos, y otra que caracteriza matemticamente al slido a partir de la superficie que lo delimita, esto es, su piel o frontera. De este modo estableceremos un sistema de representacin con tres niveles: slidos fsicos, modelos matemticos de slidos y representaciones [Mant88, pp.32].

Diseo Asistido por Ordenador

5.1.1 Modelo topolgico


Los slidos estn definidos en el espacio Eucldeo, E3, ocupando una determinada porcin del espacio. Podemos por tanto considerar un slido como un conjunto de E3 . Obviamente no todos los subconjuntos del espacio Eucldeo son slidos (por ejemplo un punto aislado no es un slido). Para que un conjunto de puntos represente, a nivel abstracto, un slido deber satisfacer, las siguientes condiciones:
Es cerrado y acotado. Esto es contiene a su frontera y ocupa una porcin finita del Es rgido. Los slidos no se modifican al trasladarlos o rotarlos. O lo que es lo mismo,

espacio.

dos slidos que se diferencian tan solo en una transformacin rgida son el mismo slido. Homogeneidad tridimensional. El slido debe ser tridimensional en todos sus puntos, es decir, en cualquier punto de l debe ser posible en tres direcciones ortogonales.

Esta ltima propiedad se suele caracterizar mediante el concepto topolgico de regularizacin. La regularizacin de un conjunto se define como la clausura de su interior: r(S) = c(i(S)) El interior de un conjunto es el subconjunto de sus puntos que no estn en su frontera. La clausura de un conjunto es el conjunto formado por todos sus puntos y todos sus puntos adherentes (los que estn es su frontera). Un conjunto es regular si es igual a su regularizacin S = r(S) Es fcil comprobar que cualquier punto o plano aislado no estar en la regularizacin del conjunto, es decir ser regular es equivalente a ser tridimensional en todos sus puntos. Un conjunto regular acotado se denomina un r-set (ver figura 4.2).

2D (cara que cuelga) 3D (slido) 1D (arista que cuelga)

Figura 5.2. El objeto no es regular por tener elementos 2D y 1D.

5.1.2 Modelo de superficies


El modelo algebraico describe un slido a partir de su frontera. (conjunto de superficies que separa el slido de la parte del espacio no ocupada por l). La frontera se puede ver como la piel del slido. Obviamente cualquier superficie no determina un slido. Para que un conjunto de superficies describan un slido deben satisfacer la siguiente propiedad Encierra un volumen. La piel es cerrada, orientada y completa. Que la piel sea cerrada y este orientada permite determinar si un punto est dentro del slido, y por tanto obtener el modelo topolgico.

Diseo Asistido por Ordenador Los dos modelos son equivalentes, con determinadas restricciones. Para que el slido sea representable se suele imponer una condicin adicional de suavidad en su frontera, ms concretamente se suele exigir que la frontera sea sea algebraica (o al menos analtica). Esto es, debe ser representable por un polinomio de grado finito. Este modelo nos permite utilizar representaciones de los slidos basadas el almacenamiento de la frontera, que es una entidad bidimensional. Para facilitar la representacin se suele exigir, adems que la frontera sea 2-variedad., esto es, cada punto de la frontera es homeomorfo a un disco en E2. No todos los slidos satisfacen esta propiedad, por ejemplo, dos pirmides unidas por un vrtice no son 2-variedad (2manifold).

5.1.3 Propiedades volumtricas


La mayor parte de las propiedades del slido se pueden expresar como integrales de volumen de la forma:

Propiedad Slido =

Vol Slido

G p x , y , z dV

La funcin a integrar, Gp, cambiar dependiendo de la propiedad a calcular. La siguiente tabla recoge algunas de las propiedades ms usuales. Propiedad Volumen Masa Centro de gravedad Momento de inercia(eje z) Gp 1 P/Masa X2 +Y2

5.1.4. Propiedades de los mtodos de representacin


Un mtodo de representacin de slidos establece una relacin entre slidos y descripciones de stos. Las representaciones de slidos tiene los siguientes atributos y propiedades formales [Requi80]: Dominio. El dominio del mtodo de representacin es el conjunto de objetos representables por l. Idealmente ser el conjunto de slidos. Validez. Una representacin es invalida si no corresponde a ningn slido real. Es importante que el mtodo de representacin asegure de por s la validez de todas las representaciones que se pueden crear o que existan procedimientos automticos para comprobar la validez de las representaciones. No ambigedad. Un mtodo es no-ambiguo si cada representacin se corresponde con un nico objeto real. Es deseable que el mtodo no sea ambiguo. Unicidad. Se dice que existe unicidad en el mtodo de representacin si cada objeto real tiene, a lo sumo, una posible representacin. Si el mtodo no asegura la unicidad no es posible comprobar la igualdad de objetos.

Diseo Asistido por Ordenador Otras propiedades interesantes de las representaciones son:

Ocupacin de memoria. Facilidad de creacin y edicin Facilidad de visualizacin y clculo

Figura 5.3. Ambigedad del modelo de alambres

5.1.5. Operaciones regularizadas


Una de las formas ms usuales, y naturales, de editar slidos es combinarlos usando operaciones booleanas, unin, interseccin y diferencia (se usa la diferencia en lugar del complemento dado que el complemento producira un objeto no acotado). No obstante, las operaciones booleanas, tal como se definen habitualmente, no son internas al conjunto de slidos. Es decir, pueden producir, como resultado, objetos que no sean slidos.[Fole90; pp.535]. Para resolver este problema se utilizan operaciones booleanas regularizadas. Las operaciones regularizadas se define como la regularizacin del resultado de la operacin, y se denotan con un asterisco.

A B A,B A B

A *B=c(i(A B))

i(A B)

A *B

Figura 5.4. Interseccin regularizada

Diseo Asistido por Ordenador A * B = r( A B) = c(i(A B)) A * B = r( A B) = c(i(A B)) A -* B = r( A - B) = c(i(A - B)) El conjunto de slidos con las operaciones regularizadas constituye un lgebra de Boole.

5.1.6. Mtodos de representacin


Se han propuesto un gran nmero de esquemas de representacin para slidos. En esta seccin se hace una breve introduccin a algunos de estos mtodos. En el resto del tema se vern con ms detalle tres de estos mtodos. Instanciacin de primitivas. El modelo se representa como un conjunto de primitivas que se instancian en el espacio. Para pode realizar clculos es necesario que las diferentes instancias no se solapen en el espacio. El dominio depende del repertorio de primitivas.

Figura 5.5. Instanciacin de primitivas Barrido (sweep). Se puede ver como una generalizacin de los mtodos de desarrollo de superficies a partir de curvas. El elemento a desplazar es ahora una superficie, que describe un volumen al desplazarse a lo largo de una trayectoria o al rotarse.

Figura 5.6. Construccin de slido por barrido Descomposicin. El slido se describe en base a una descomposicin del espacio en una coleccin de elementos simples disjuntos, celdas (por ejemplo tetraedros o cubos). La representacin de un slido es el conjunto de celdas que ocupa.

Diseo Asistido por Ordenador

Figura5.7. Enumeracin espacial Fronteras. El slido se representa mediante un conjunto de caras que describen su frontera. La mayor parte de los sistemas utilizan representaciones de fronteras, con caras poligonales.

Figura 5.8. Representacin de fronteras CSG. Se almacena una expresin booleana que construye el slido a partir de primitivas simples.

Figura 5.9. Construccin de un slido CSG ASM. El modelado analtico de slidos describe los slidos a partir de mallas 3D de puntos de control, combinados usando funciones mezcla, generalizando los mtodos de diseo de superficies.

Diseo Asistido por Ordenador

Figura 5.10. Modelado analtico de slidos

5.2. Representacin de fronteras


El mtodo de representacin de fronteras (b-rep, de boundary representation) se basa en la descripcin algebraica de los slidos, asumiendo que estn delimitados por un conjunto de caras, que pertenecen a superficies orientables y cerradas. La orientacin implica que es posible distinguir la cara exterior de la interior al slido. La orientacin suele estar indicada por el vector normal a la superficie. El mtodo surge a partir de los modelos polidricos usados para la representacin de objetos con eliminacin de lineas y caras ocultas. Se puede ver como una mejora de modelo para poder describir slidos incluyendo toda la informacin de la superficie. En l los slidos se describen dando la geometra de su superficie (frontera), normalmente formada por un conjunto de caras planas, y las relaciones topolgicas existentes. Para ello se distingue entre entidades geomtricas (puntos, curvas, superficies) y topolgicas (vrtices, aristas y caras). La superficie de una cara es el plano que sustenta la cara. Las relaciones topolgicas incluyen relaciones de vecindad y de pertenencia, como por ejemplo:
Las caras estn delimitadas por aristas. Las aristas estn delimitadas por dos vrtices. Cada arista es compartida por dos caras. En cada vrtice confluyen varias aristas (al menos tres) Vecindad entre caras.

Cuando las caras permitidas por el sistema son polgonos el conjunto de objetos representable es el conjunto de poliedros. En este caso, las caras deben ser polgonos cualesquiera, incluyendo polgonos cncavos y con agujeros (de otro modo el conjunto de presentaciones no sera cerrado bajo operaciones booleanas). Por este mismo motivo se suele considerar como un nico slido un conjunto de poliedros separados.

5.2.1. Representacin
Existen diversas representaciones que permiten almacenar modelos de fronteras. Su complejidad varia en funcin de las relaciones topolgicas almacenadas. La opcin ms simple es no almacenar ningn tipo de relacin, con lo que la

Diseo Asistido por Ordenador representacin puede ser una simple lista de caras. No obstante, esta aparente simplicidad en la estructura de datos da lugar a procesos complejos para realizar cualquier operacin con el modelo, desde la comprobacin de validez hasta la edicin o clculo. A modo de ejemplo, supongamos que deseamos comprobar que la frontera es cerrada (condicin indispensable para que la representacin sea vlida). Tendremos que comprobar que en cada arista confluyen dos caras con la misma orientacin. Para ello tendremos que comparar cada par de puntos consecutivos de cada cara con los pares de puntos consecutivos del resto de las caras. Este proceso es complejo (depende del cuadrado del nmero de caras) e impreciso, la comparacin de puntos puede generar errores numricos. Obsrvese que esta es la estructura habitualmente usada en los sistemas que dibujan poliedros, cuando no interesa editar el objeto como un slido, ni que represente un slido vlido, ni calcularle propiedades. Por otra parte, esta estructura es muy redundante, los puntos asociados a cada vrtice se almacenan en la lista de puntos de cada cara que comparte el vrtice. La existencia de informacin redundante conlleva la utilizacin de un mayor espacio, y puede ser origen de inconsistencias. La siguiente tabla muestra la representacin de las dos caras visibles del poliedro de la figura 5.11. Cara 1 2 3 Vrtices (0,0,0) (0,2,-1) (0,3,2) (0,1,2) NULL (0,2,-1) (2,3,.-1) (2,4,1) (0,3,2) NULL

Una alternativa simple es almacenar el modelo en una estructura jerrquica heterognea, en la que la informacin asociada a cada cara sea una lista de aristas, y la normal a la cara. De cada arista se almacenen los dos vrtices que la delimitan, y para cada vrtice el punto en el que se encuentra. La estructura se puede completar con relaciones hacia arriba (de vrtices a aristas, y de estas a caras). De este modo se eliminan las redundancias y se almacenan parte de las relaciones topolgicas. Las superficies de las caras y las lneas de las aristas se pueden calcular cuando sea necesario a partir de los puntos que las delimitan.
3 2 4

Cara 1 2 3

Aristas 0 1 4 5

2 6

3 1

NULL NULL
0 5

Aristas 0 1 2 3 4 5 6

Vi 0 1 2 3 1 5 4

Vf 1 2 3 0 5 4 2

Cizq 1 1 1 1 2 2 2

Cder 3 2 4 5 3 6 4

Figura 5.11. Poliedro mostrando dos caras visibles Vrtice 0 1 2 3 4 5 X 0 0 0 0 2 2 Y 0 2 3 1 4 3 Z 0 -1 2 2 1 -1

10

Diseo Asistido por Ordenador Para poder utilizar caras con agujeros es necesario complicar la estructura, almacenando para cada cara una secuencia de ciclos de aristas, de los que el primero es el permetro exterior, y el resto agujeros practicados en l. Otra alternativa es utilizar falsas aristas, o aristas puente, para unir los permetros interiores al exterior.

Aristas con alas nccw


La estructura de datos ms popular para almacenar un modelo de fronteras es la de aristas aladas (winged-edge) [Manty88, Baumgart72]. Esta estructura incorpora ms relaciones topolgicas y organiza la jerarqua partiendo de las aristas, lo que simplifica el tratamiento de caras con agujeros1. El elemento central de estructura es la arista, en lugar de la cara. Cada arista almacena informacin de sus relaciones de vecindad con aristas y caras. Concretamente, cada arista contiene, adems de su identificador: Sus dos vrtices Las dos caras que comparten arista Las cuatro aristas que parten de ella, en las caras que la comparten. Las dos caras de la arista se etiquetan en funcin de como se recorra la cara cuando se va del vrtice inicial al final de la arista, en clockwise y counterclockwise. La figura 4.12 muestra la informacin asociada a cada arista. El recorrido de los vrtices se realiza en sentido anti-horario. Las tablas siguientes muestran parte de la informacin almacenada para el slido de la figura 5.13. Aristas 0 1 2 3 4 5 6 Vrtice 0 1 2 3 4 5 X 0 0 0 0 2 2

pcw fccw fcw pccw ncw

Figura 5.12. Etiqueta de aristas.

Vi
0 1 2 3 5 4 2 Y 0 2 3 1 4 3

Vf
1 2 3 0 1 5 4 Z 0 -1 2 2 1 -1

fcw
1 1 1 1

fccw pccw nccw pcw


2 3 0 1 2 1 2 3 0 6

ncw
4

2 2 2 Cara Arista 1 0 2 4

1 4 5

5 6 1 Normal (1,0,0) (0,1,0)

Cuando se utilizan aristas puente es necesario marcarlas para evitar dibujarlas. Con la estructura de aristas aladas esto no es necesario ya que se detectan por tener la misma cara a derecha e izquierda.

11

Diseo Asistido por Ordenador

nccw
6

pcw

2 4

fccw
0

fcw
4

0 5 1
Figura 5.13. Slido ejemplo.

pccw

ncw

Obsrvese que esta estructura no se puede utilizar para poliedros no variedad, ya que en ellos una arista podra tener ms de dos caras vecinas. La alternativa para tratar este tipo de slidos con estas representaciones es modificar el slido para eliminar la singularidad, bien convirtiendo la arista en una unin slida o desdoblndola (ver figura 5.14).

Figura 5.14. El slido no varidad de la izquierda se puede convertir para obtener un slido 2-variedad

5.2.2. Clculo de propiedades


Las propiedades volumtricas se pueden calcular de forma exacta a partir del teorema de la divergencia (o de Gauss que es una generalizacin del de Stokes.)2, que establece una relacin entre la integral en volumen cerrado de la divergencia de un campo vectorial, y la integral de superficie de la componente normal del campo en la superficie del volumen. Concretamente, el enunciado del teorema es: Teorema de la divergencia. Sea V un volumen en el espacio Eucldeo limitado por una superficie cerrada y orientable, S, y sea n la normal a S, orientada hacia el exterior. Para cualquier campo vectorial F, definido en V, se cumple:

div F d V = F n d S
V S

siendo S la superficie que encierra a V, n el vector normal a dicha superficie, (obsrvese que los vectores estn notados usando negrita), y div el operador divergencia.
2

Apostol T.M.: "Calculus. Clculo con funciones de varias variables y lgebra lineal, con aplicaciones a las ecuaciones diferenciales y a las probabilidades". Reverte 1980. Pp. 537-560.

12

Diseo Asistido por Ordenador Para una funcin vectorial F, dada por F(x,y,z) = (Fx,Fy,Fz) la divergencia se calcula como:

div F =

Fx F y Fz , , x y z

Calcular la propiedad volumtrica se reduce a una funcin F cuya divergencia sea igual a Gp, e integrar dicha funcin en la superficie del slido.

div( F) = g

r
h

Ejemplo. Clculo del peso de un cilindro. Supongamos un cilindro, cuyos eje sea paralelo al eje y, con altura h y radio de base r. Para calcular el peso se debe integrar la funcin constante r. Hay infinidad de funciones que cumplen esta condicin, por ejemplo: Fa(x,y,z) = (x/3, y/3, z/3) y Fb(x,y,z) = (0, y, 0)

En general, no es posible adaptar la funcin usada a la forma del slido. En este caso es evidente, no obstante, que es ms fcil integrar la segunda funcin. Podemos pues calcular el peso de un objeto integrando F n en su superficie. Si el objeto es un cilindro vertical, bastara con integrar en las dos caras horizontales, ya que el producto escalar es cero en el resto. Por tanto el volumen ser:

div F dV = F n d S =
V S

y dS = r 2 h

tapa

5.2.3. Edicin
La edicin directa, moviendo puntos de control, aunque es factible cuando se restringe el mtodo para utilizar caras triangulares, no es aconsejable, pues es demasiado laborioso.

13

Diseo Asistido por Ordenador Los mtodos de edicin usuales en modeladores que trabajan con modelos de fronteras son:

La combinacin de instanciacin de primitivas prediseadas operaciones de barrido sobre las caras. Las operaciones booleanas La modificacin local del modelo por biselado de las aristas o vrtices.

con

Hablaremos brevemente de cada una de estas opciones. Las operaciones booleanas usadas son la unin, la interseccin y la diferencia. No se usa el complemento, ya que produce slidos no vlidos. Para realizar una operacin boolena entre dos slidos se sigue el siguiente proceso: a) Clasificacin de caras 1. Calcular todas las lneas de interseccin de las caras de A con las caras del slido B y viceversa. 2. Dividir las caras que estn partidas por estas lineas. Para ello se unen las aristas consecutivas entre si para formar nuevas caras. 3. Clasificar las caras de cada slido respecto al otro slido en externas e internas. b) Seleccin de caras 4. En funcin de la operacin a realizar se clasifican las caras eligiendo las que forman parte del slido resultado. Operacin Caras AB AB A-B Caras de A externas a B y caras de B externas a A Caras de A internas a B y caras de B internas a A Caras de A externas a B y caras de B internas a A

c) Crear representacin 5. Reconstruir las relaciones entre elementos

A B A

Unin InterseccinDiferencia B

Figura 5.15. Tratamiento de caras coplanarias al realizar operaciones booleanas

14

Diseo Asistido por Ordenador

Se debe tener un cuidado especial al tratar las caras coplanarias, realizando la clasificacin de la las caras teniendo en cuenta la orientacin de las dos caras. La figura 5.15 muestra el resultado que se obtendra con dos slidos a los que coincide una cara si esto no se tiene en consideracin, y como se deben clasificar dos caras coplanarias con la misma y distinta orientacin en cada uno de las operaciones. El biselado consiste en sustituir una arista o un vrtice por una cara. Aplicando reiteradas veces se puede obtener un slido con perfil redondeado. El sistema modifica la representacin del slido creando las nuevas caras y modificando las relaciones de vecindad.

Figura 5.16. Biselado de un cubo Una operacin de barrido define un slido por el volumen del espacio ocupado por una superficie cuando se desplaza a lo largo de una trayectoria, de un modo anlogo a la construccin de una superficie por desplazamiento de una curva. La construccin ms simple es realizar traslaciones o revoluciones, pero se pueden igualmente construir slidos realizando un barrido generalizado, escalando y rotando la superficie mientras se desplaza a lo largo de una trayectoria arbitraria. An en este ltimo caso, el conjunto de slidos que se pueden generar es muy reducido. Por este motivo su utilizacin como mtodo de representacin en si mismo est muy limitada. No obstante es muy til como mtodo de modificacin local de un modelo de fronteras, permitiendo su edicin. De este modo se puede aadir materia a una cara del modelo realizando un extrusin a partir de la cara, o realizar una perforacin haciendo una intrisun en la cara. En cualquier caso, el usuario dibuja la superficie a desplazar sobre la cara del slido e indica el vector de desplazamiento. A partir de esta informacin el sistema puede generar automticamente la informacin de las caras creadas (Figura 5.17).

Figura 5.17. Edicin por barrido

15

Diseo Asistido por Ordenador

5.2.4. Propiedades de la representacin


El modelo de fronteras es no ambiguo y su dominio es, cuando se usan caras planas, el conjunto de objetos formados por poliedros. Si se permiten caras no planas el dominio es mayor. La representacin de cada slido es nica, salvo permutacones de la informacin en las listas, si no se permiten caras coplanarias adyacentes, ya que de otro modo las caras podran estar partidas en la estructura de datos de diversas formas. La principal debilidad del modelo es la validez, ya que cualquier conjunto de caras, vrtices y aristas no define un slido valido. Para asegurar la validez de la representacin se imponen una serie de condiciones a sta, que pueden verse como una restriccin del conjunto imagen del mtodo. Una representacin de fronteras, para representar un slido 2-variedad vlido debe cumplir: i) Cada arista est delimitada por dos vrtices. ii) Cada arista separa dos caras. iii) Las caras que coinciden en una arista tienen orientacin conforme. iv) Las aristas solo se intersectan en los vrtices. v) Las caras solo se intersectan en los vrtices y las aristas. Las dos primeras condiciones se comprueban fcilmente cuando se utiliza una estructura de aristas aladas. Las tres ltimas requieren la realizacin de comprobaciones geomtricas que son costosas. Una forma rpida de detectar modelos no validos es comprobar la formula de Euler, que establece una relacin invariente entre caras, aristas y vrtices de cualquier poliedro: caras + vrtices-aristas = anillos + 2 (cuerpos perforaciones) F + V - E = R + 2( B- H) Donde un anillo es un perforacin entrante en una cara, una perforacin es un agujero que cruza el slido y un cuerpo es un fragmento separado del slido. La formula de Euler es una condicin necesaria pero no suficiente para que la representacin se corresponda con un slido vlido.

V + F = E + R + 2(B H) Vrtices + Caras 12 8 20 Aristas 18 + Anillos 0 +2Cuerpos 2 -2 Agujeros 0 20

Figura 5.18. Frmula de Euler

16

Diseo Asistido por Ordenador

5.3. METODOS DE DESCOMPOSICIN


Representan objetos slidos mediante la unin de un conjunto de celdas disjuntas sin agujeros.

S = Ci

La representacin del slido es la lista de celdas que ocupa, que se puede codificar como un bit de ocupacin por cada celda (Ci), si la geometra de las celdas es fija, o como la lista de parmetros de las celdas ocupadas. Los mtodos que utilizan celdas de geomtrica fija suelen utilizarse para realizar representaciones aproximadas. Estos mtodos se pueden utilizar para representar slidos heterogneos, aadiendo simplemente el valor de propiedad de cada celda. Los mtodos de descomposicin puede estructurar las celdas en una estructura jerrquica, lo que ayuda a localizar informacin y a compactar la representacin del modelo, este es el caso de los rboles octales (o de octantes, octrees), y de los rboles de particin binaria del espacio (BSP). Cuando la representacin no es jerrquica se dice que el mtodo de representacin es una enumeracin de celdas. En la siguiente seccin se estudia la enumeracin espacial y en la seccin 3.2 los Octrees.

5.3.1. Enumeracin espacial


El espacio donde reside el slido se divide en cubos de igual tamao, que conforman una rejilla 3D. Por cada cubo (voxel), se almacena la informacin de ocupacin del slido, esto es, si el voxel pertenece o no al slido. En la mayor parte de los casos es necesario realizar una aproximacin ya que el voxel no estar ni totalmente dentro ni totalmente fuera del slido. La estructura de almacenamiento es simplemente un array 3D de booleanos. En cierto modo, la representacin es semejante a una imagen 3D del slido. El principal inconveniente de la representacin, adems de ser aproximada, es que no es concisa (ocupa mucho espacio).

5.3.2. Octrees
Un octree describe, dentro de un cubo inicial, y recursivamente los octantes ocupados por el slido. Dado un cubo que encierra al slido, se divide en ocho octantes, que podrn estar totalmente ocupados por el slido, vacos o parcialmente ocupados. Para los octantes que estn parcialmente ocupados se repite el mismo proceso. As hasta alcanzar un nivel de precisin prefijado. La representacin puede verse como una compactacin de una enumeracin espacial.

5.3.3. Almacenamiento
De forma natural la representacin se puede almacenar como un rbol octal, en el que cada nodo interno representa un cubo parcialmente ocupado, y los nodos terminales puede estar ocupados o vacos. Los ocho hijos de cada nodo interno representan los ocho subcubos en que se divide el cubo. Esta representacin permite localizar de forma rpida la informacin de un nodo, pero requiere un espacio adicional para alojar los punteros a los hijos. Cuando no se va a operar con el

17

Diseo Asistido por Ordenador slido, por ejemplo para almacenarlo en un fichero, suele ser preferible una codificacin lineal, obtenida mediante un recorrido del rbol (por ejemplo en orden central).

BBW(BBWBWBWW)BBBW
5.3.4. Bsqueda
La localizacin de un punto del espacio en el rbol, que es necesaria para la mayor parte de las operaciones, y en concreto para saber si el punto est dentro del slido se puede realizar de forma rpida si se ha realizado el etiquetado de los nodos de forma adecuada. Concretamente se puede hacer que el ndice del nodo hijo se obtenga por yuxtaposicin de su posicin relativa en las tres direcciones (ver figura). Asumiendo una resolucin mxima conocida, esto es un tamao conocido, d, del voxel de ms pequeo a usar, podemos calcular los ndices de un voxel dado en coordenadas enteras, en el rango 0 a 2n, siendo n la mxima profundidad del rbol.

d2n

2 6 7 5 3 1 0

d2n

d2n

d2n-2

d2n

d2n-1

18

Diseo Asistido por Ordenador

2 6 4 zyx 1,0,1 7 5 3 1 0
0001 0000 0100 0010 1000

101 = 5

5.3.5. Operaciones booleanas


La forma ms simple de editar un octree es realizando operaciones booleanas. Dados dos octrees con la misma caja englobante, las operaciones booleanas se pueden calcular nodo a nodo, realizando un descenso sincronizado en los dos operandos. Las siguientes tablas muestran el procesamiento de las operaciones booleanas, representando por un nodo vaco, por uno lleno, y por un nodo interno. B AB A Copiar A Copiar B Descender

B AB A Copiar A Copiar B Descender

B A-B A Copiar A Copiar -B Descender

19

Diseo Asistido por Ordenador

5.3.6. Propiedades
Los principales inconvenientes de la representacin son su carcter aproximado y el espacio ocupado. Por otra parte, no es trivial realizar transformaciones geomtricas, salvo rotaciones de mltiplos de 90 grados, escalados por mltiplos de dos o traslaciones en mltiplos del tamao de un voxel. Como ventajas destacan la facilidad para realizar operaciones booleanas y calcular propiedades. Las propiedades volumtricas se pueden calcular realizando una simple sumatoria sobre el conjunto de nodos terminales ocupados:

Propiedad Slido =

Vol Slido

G p x , y , z dV =

nodos llenos

G p voxel V voxel

Se han realizado varias extensiones del mtodo de representacin para permitir una representacin exacta de slidos polidricos. Entre estas cabe destacar los octrees extendidos, que incluyen informacin de la geometra de la frontera en los nodos terminales.

5.4. GEOMETRIA CONSTRUCTIVA DE SOLIDOS.


La geometra constructiva de slidos (CSG) no representa explcitamente la geomtrica del slido, si no que lo describe como una expresin booleana, en la que intervienen primitivas (slidos bsicos predefinidos). Ms formalmente, un modelo CSG se puede expresar como

Slido=T g1 Slido1 OpB T g2 Slido2 T g3 primitiva


donde las Tg son transformaciones geomtricas y OpB es una operacin booleana ( , o -). Obviamente la representacin es muy concisa, pero a costa de no almacenar explcitamente la geometra, lo que hace que la visualizacin no sea trivial.

5.4.1. Representacin
La representacin usual de un modelo CGS es como un rbol binario, en el que los nodos terminales contienen primitivas y los nodos internos operadores booleanos. Asociado a cada arco hay una transformacin geomtrica. Las primitivas, que puede estar parametrizadas, se representan como interseccin de semiespacios, lo que permite un tratamiento homogneo de todo el rbol.

20

Diseo Asistido por Ordenador

S 17=S 15 - S16

S16=S 11 S12

S15=S 13 - S14

S12=T9C7 S 11=T8C6 S 14=S 10 S9

S13=S8 S7 S9=T6C4 S10=T7C5

S8=T5C3

S 7=S5 S 6

S5=S 1 S2

S6=S 3 S4

S 1=T1B1

S 2=T2C1

S3=T3B
2

S 4=T4C2

21

Diseo Asistido por Ordenador

5.4.2. Visualizacin
La visualizacin del modelo debe realizarse convirtiendolo a Brep, usando ray casting o por lineas de barrido (scan line). Para convertir el modelo CSG a Brep se transforman a Brep las primitivas y se evala el rbol CSG. La visualizacin directa por trazados de rayos o lneas de barrido resuelve el problema en 1D o 2D calculando la interseccin de cada primitiva con los rayos que pasan por cada pixel, o los planos que contienen cada linea de barrido.

5.4.3. Propiedades
La geometra constructiva de slidos es un mtodo de modelado no ambiguo, con un dominio amplio (condicionado por el repertorio de primitivas disponibles) y vlido. La principal debilidad del mtodo es la no unicidad de las representaciones, ya que hay infinidad de formas de representar cualquier slido.3

Bibliografa:
Fole90 Brun93 Foley J.D.; van Dam A.; Feiner S.K.; Hughes J.F.: "Computer Graphics. Theory and Practice". Addison-Wesley 1990. Brunet, P.; "Modelado geomtrico de volmenes" Cursos del CEIG'93

Manty88 Mantyla, M.; "An introduction to solid modeling". Computer Science Press 1988 Bron87 Bronsvoort W.; "Geometric Modeling" Tutorial EG'87

Manty89 Mantyla M.; "Avanced Topics in Solid Modeling". Tutorial EG'89

22

You might also like