39
UNIVERSIDAD INCA GARCILASO DE LA VEGA COMPUTACION GRAFICA ING. JESSICA DELGADO FUENTES

Extrusion

Embed Size (px)

DESCRIPTION

Computacion grafica

Citation preview

  • UNIVERSIDAD INCA GARCILASO DE LA VEGACOMPUTACION GRAFICAING. 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 Extrusion

    La estructura bsica de este nodo es la siguiente: Extrusion { crossSection [ 1 0, 0 6.5, ....... ] spine [ 10 0 3, 15 1 5, ............ ] solid FALSE }

  • Fields PrincipalesSe 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 cuboVeamos 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 extruidaEn 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 dorsalEn 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

  • Y 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, 5 0 ]

  • 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 {childrenShape{ 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 {materialMaterial {}}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 { childrenShape{ 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] }} }