Sie sind auf Seite 1von 39

UNIVERSIDAD INCA

GARCILASO DE LA VEGA
COMPUTACION GRAFICA
ING. JESSICA DELGADO
FUENTES

Formas complejas. Extrusiones

En la sesion anterior vimos el nodo IndexedFaceSet,


con el que se pueden obtener superficies irregulares
(caras).
Aunque este nodo es una herramienta potente, en
ocasiones no es la ms adecuada ya que es preciso
definir cada una de las caras. Para ciertas formas,
esto obligara a definir un nmero enorme de puntos y
caras (imagnese definir de esta manera una
superficie esfrica).
En esta sesio vamos a ver el nodo Extrusion que
permite definir formas muy complejas utilizando muy
pocos

CONCEPTO BSICO DE LA
EXTRUSIN

En lneas generales, una forma extruida se obtiene de la


siguiente manera:
En el plano XZ (horizontal) se define, mediante una serie
de puntos, un polgono cerrado: la seccin transversal o
crossSection. Esta seccin es, por tanto, plana.
Mediante otra serie de puntos, se define un recorrido en
el espacio tridimensional: la espina dorsal o spine.
El objeto extruido se obtiene desplazando la seccin
transversal a lo largo de la espina dorsal. Durante este
desplazamiento,
la
seccin
transversal
puede
permanecer invariable, o bien se pueden ir modificando
tanto su escala (tamao), como su orientacin.

Ejemplos

de extrusiones

Estructura general del nodo


La estructura bsica de este nodo es la siguiente:
Extrusion

Extrusion {
crossSection [
1 0,
0 6.5,
.......
]
spine [
10 0 3,
15 1 5,
............
]
solid FALSE
}

Fields Principales

Se pueden observar los campos:


crossSection, cuyo argumento es una serie de
puntos que definen la seccin transversal. Ntese que
estos puntos estn definidos por dos coordenadas, y
no por tres, que es lo habitual.
spine, cuyo argumento es otra serie de puntos que
definen la espina dorsal del objeto extruido. Cada uno
de estos puntos est definido por tres coordenadas,
como no poda ser menos, puesto que la espina
dorsal es un recorrido en el espacio tridimensional.
solid, tiene dos opciones: TRUE (la opcin por
defecto) con la que se ven slo un lado de las caras.
FALSE: se vern ambos lados.

Ejemplo de extrusin:
un

cubo
Veamos a continuacin con ms detalle
cmo se define la seccin transversal.
Como se ha dicho antes, se encuentra
en el plano XZ, es decir, en el plano
horizontal formado por los ejes
coordenados X y Z.

A la derecha se puede ver la


representacion de los ejes
coordenados.
La seccin transversal es
una superficie plana, definida
en el el plano XZ. Por tanto,
se van a utilizar slo dos
coordenas (x,z).
ejemplo muy sencillo de
extrusin, para comprender
este concepto: un cubo.
( existe el nodo Box para
conseguirlo directamente)

La seccin transversal de un
cubo es un cuadrado definido en
el plano XZ.
A la derecha se puede ver la
seccin transversal del cubo,
definida por sus cuatro vrtices.
Para
definir
la
seccin
transversal, se debe sealar un
polgono cerrado, es decir,
comenzando desde un vrtice
cualquiera (p. ej. 10,10), y
siguiendo el sentido de las
agujas del reloj, el siguiente ser
(-10,10), luego (-10,-10), a
continuacin
(10,-10)
y
finalmente (10,10) de nuevo,
con lo que el polgono se ha
cerrado.

crossSection

10 10,
-10 10,
-10 -10,
10 -10,
10 10

Ahora falta por definir la


espina dorsal. La espina
dorsal define el recorrido que
la
seccin
transversal
deber efectuar para crear le
forma extruida.
Vamos a hacer que la seccin
transversal comience en el
punto (0,-10,0) y se mueva
hasta el punto (0,10,0).
En las siguientes figuras se
muestra la espina dorsal para
el cubo y el camino recorrido
por la seccin transversal a lo
largo de ella (en rojo):

El

campo spine queda de


la siguiente manera:
spine [ 0 -10 0,
0 10 0 ]

Inclusion del nodo Extrusion en


el nodo Shape
Como

se ha dicho repetida veces, para


que un nodo que define una forma
(como es el caso del nodo Extrusion)
sea visible, debe incluirse dentro del
nodo Shape.

Por

tanto, el documento VRML de este


ejemplo quedar de esta forma:

EJEMPLO

A la derecha puede
verse el resultado.
Se han aadido unos
ejes coordenados y
modificado el punto
de vista inicial)

Aberturas en la superficie extruida


En el ejemplo del cubo visto anteriormente, todas las caras
eran visibles. Pero, si se desea, se puede hacer que no
existan algunas de ellas, es decir, que haya aberturas en la
superficie extruida.
Existen dos campos que determinan si la forma extruida
est abierta o cerrada en los extremos:
beginCap: si se establece como FALSE, no existir la
seccin transversal inicial (en el ejemplo del cubo, la cara
inferior).
endCap: si se establece como FALSE, no existir la seccin
transversal final (en el ejemplo del cubo, la cara superior).
Aadiendo estos dos campos al nodo Extrusion, en el
ejemplo anterior:

beginCap

FALSE
endCap FALSE
dar el resultado que
se ve a la derecha

Otra posibilidad es la de
dejar deliberadamente
sin cerrar el polgono
que
determina
la
superficie transversal.
As, en el ejemplo de la
seccin transversal del
cubo, si se comienza
por el vrtice inferior
izquierdo (-10,10), y
siguiendo
segn
el
sentido de las agujas del
reloj:

crossSection [ -10 10,


-10 -10, 10 -10, 10 10 ]

queda

sin cerrar el
polgono, con lo que
el
cubo
extruido
carece de la cara
frontal,
como
se
puede ver en la
imagen de la derecha
(pulsarla para cargar
el
escenario).

Complicando la espina dorsal


En
los
ejemplos
vistos
anteriormente, la espina dorsal
siempre es perpendicular a la
seccin transversal y adems justo
en su centro. Pero esto no tiene por
qu ser as necesariamente.
La espina dorsal puede estar
situada en cualquier sitio, formar
una recta inclinada, estar formada
por ms de dos puntos o tener
cualquier forma espacial que se
desee. Veamos una espina dorsal
que sea una recta inclinada con
respecto a la seccin transversal
(ver imagen a la derecha).
La
espina
dorsal
ha
sido
representada en rojo y la seccin
transversal
en
verde.

A la derecha puede
verse el resultado.

(Y

ste es el texto
del fichero (sin los
ejes coordenados).

Ejemplo

ahora veamos un
ejemplo de espina
dorsal formada por
tres puntos:

Superficies de revolucin

Si la espina dorsal es un crculo,


entonces el cuerpo engendrado es
una superficie de revolucin.
Veamos un ejemplo: un toro
definido por 8 puntos.
A la derecha puede verse la
imagen que representa la seccin
transversal (en verde) y que est
situada, como debe ser, en plano
horizontal XZ. Esta seccin
transversal es un crculo de radio 5
y est representada por 8 puntos.
Tambin est representada (en
blanco)
una
espina
dorsal
formada por otros ocho puntos que
forman un crculo de radio 10, y
que tambin est situada en el
plano XZ, porque as lo hemos
querido.

crossSection [
5 0,
3.53 3.53,
0 5,
-3.53 3.53,
-5 0,
-3.53 -3.53,
0 -5,
3.53 -3.53,
50
]

Recurdese

que
en
el
campo
crossSection los puntos se expresan
con dos corrdenadas (x,z), y que
adems hay que repetir al final el primer
punto,
para
cerrar
la
seccin
transversal.

El campo spine es el siguiente:

spine [
10 0 0,
7.07 0 7.07,
0 0 10,
-7.07 0 7.07,
-10 0 0,
-7.07 0 -7.07,
0 0 -10,
7.07 0 -7.07,
10 0 0
]

En este caso, los puntos vienen


expresados
por
tres
coordenadas (x,y,z). Y tambin
se repite el ltimo para cerrar el
toro

A la derecha puede verse el


resultado (pulsar la imagen para
cargar el escenario).
Es evidente que los ocho puntos
que se han utilizado para definir
los dos crculos (el de la seccin
transversal y el de la espina
dorsal) no son suficientes, pues
ms que crculos son octgonos.
Haran falta muchos ms puntos
para conseguir un toro como el
representado al principio.

Variacin de la escala de la
seccin transversal

Hasta ahora, en todos los casos vistos, la seccin


transversal parmaneca inalterable en su forma y
tamao a lo largo de la espina dorsal.
Existe el campo scale que permite modificar la escala
de la seccin transversal en cada uno de los puntos
de la espina dorsal.
As, en el primer ejemplo del cubo, la espina dorsal
estaba constituda por dos puntos. Podemos hacer
que en el segundo punto, la escala de la seccin
transversal se reduzca a la mitad, con lo que la figura
resultante sera un tronco de prisma. Basta con aadir
el campo scale de la siguiente forma:

scale

[
1 1,
0.5 0.5

]
El argumento del campo scale es un par de
parmetros (que varan de 0 a 1) y que
representan la variacin de las coordenadas x
z. Hay que especificarlo por cada punto que
hay en la espina dorsal.

En el ejemplo anterior, quiere


decir que en el primer punto de
la espina dorsal, queremos que
permanezcan inalterables las
medidas de las x (factor 1), as
como de las z (factor 1). En el
segundo punto de la espina
dorsal, en cambio, queremos
que las x se reduzcan a la mitad
(factor 0.5), as como las z
(factor 0.5). Se poda haber
modificado slo uno, pasando en
vez de a un cuadrado menor, a
un rectngulo.

A la derecha puede verse el


resultado (pulsar para cargar el
escenario).

Variacin de la orientacin de la seccin


transversal

Hasta ahora, en todos los casos vistos se ha


considerado que la seccin transversal se traslada
paralelamente a s misma (variando o no su tamao).
Existe el campo orientation que permite girar la
seccin transversal en cada punto de la espina dorsal
un ngulo determinado.
Veamos un ejemplo: en el cubo vamos a hacer que la
seccin transversal gire 45 en el segundo punto de la
espina dorsal, con lo que se obtendr un cubo
"retorcido". Para conseguirlo, vamos a aadir el
campo orientation de la siguiente manera:
orientation [
0 1 0 0, 0 1 0 0.875 ]

El argumento del campo orientation est formado por un grupo


de 4 parmetros. Los tres primeros indican el eje alrededor del
cual se va a girar la seccin transversal. Y el cuarto parmetro
indica el ngulo girado, expresado en radianes (esto ya se vi
para el campo rotation ). Esto hay que especificarlo por cada
punto de la espina dorsal.
En el ejemplo anterior, en el primer punto de la espina dorsal
expresamos que la rotacin alrededor del eje Y (parmetros 0 1
0) sea nula (cuarto parmetro 0). En cambio, en el segundo
punto de la espina dorsal, queremos que la rotacin alrededor
del eje Y (parmetros 0 1 0) sea de 45 (cuarto parmetro, que
es 3.14/4=0.875)
Puede verse el resultado en la figura siguiente a la izquierda. A la
derecha puede verse el resultado de combinar ambos campos a
la vez (scale y orientation). Pulsarlos para cargar los
escenarios:

Ejercicio prctico
Como

ejercicio prctico se propone crear una


espiral de seccin transversal cuadrada.
Las dimensiones de la seccin transversal
deben ser 2x2. Por tanto, los cuatro puntos
que definen a la seccin transversal en el
plano XZ sern (1,1), (-1,1), (-1,-1) y (1,-1).
La espina dorsal va a estar definida por 17
puntos.

A la

derecha puede
verse el resultado.

#VRML V2.0 utf8

Transform {
children
Shape{ appearance Appearance
{ material Material {} }
geometry Extrusion{
crossSection [ -1 -1, -1 1, 1
1, 1 -1, -1 -1]
spine [0 -1 0 , 0 1 0 ]
orientation[0 1 0 0, 0 1 0 3.14]
}
}
}

Transform {
children
Shape { appearance
Appearance {material
Material {}}
geometry
Extrusion
{

crossSection [ -1 -1, -1 1, 1 1,
1 -1, -1 -1]
spine [0 -1 0 , 0 1 0 ]
scale [1 1, 0 0]
}
}
}

#VRML V2.0 utf8


Transform {
children
Shape{ appearance
Appearance { material
Material {}}
geometry Extrusion{
crossSection [ -1 -1, -1
1, 1 1, 1 -1, -1 -1]
spine [0 -1 0 , 0 1 0 ]
orientation[0 1 0 0, 0 1 0 3.14]
}
}
}

Das könnte Ihnen auch gefallen