Sei sulla pagina 1di 50

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

CUARTA UNIDAD

NODOS AVANZADOS
EXTRUIR, ILUMINACION
OBJETIVOS

Ensear conceptos generales del nodo extruir

Aplicar deformaciones a los objetos que forman parte del mundo virtual

Describir el uso de luces a los objetos virtuales

78

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

LECCIN VI

NODOS AVANZADOS: EXTRUIR, ILUMINACIN

6.1. Qu entendemos por Extruir?

Definicin 1: En VRML extruir, es obtener un objeto 3D, al desplazar el


dibujo de un polgono 2D normalmente cerrado (seccin) en una direccin
determinada en el espacio (direccin).

Definicin 2: Es obtener una figura 3D a partir de una figura 2D, teniendo una
direccin en el espacio.

6.2. Cmo podemos extruir en VRML?

Para poder realizar una extrusin en VRML se tiene que utilizar el nodo
Extrusin. En una forma extruida se obtiene de la siguiente manera:

Se visualiza el plano XZ (horizontal) y se define, mediante un conjunto de


puntos, un polgono cerrado: la seccin transversal o crossSection.

Esta rea es, por tanto, plana. A travs de otra serie de puntos, se define un
recorrido en el espacio tridimensional: Que se define como la espina dorsal o
spine.

Luego el objeto extruido se obtiene desplazando la seccin transversal a lo


largo de la espina dorsal. A lo largo de este desplazamiento, la seccin
transversal puede ser invariable, o bien se pueden ir modificando tanto su
escala (tamao), como su orientacin. Este nodo permite definir un objeto al
desplazar su seccin por una trayectoria.

79

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

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

Si el observador desea mostrar el modelo como una caja, debe desactivar la


tapa, con el campo endCap y activar el valor FALSE (la que corresponda a la
segunda coordenada del campo spine), y si desea colocar las dos tapas,
entonces tanto endCap como beginCap, en FALSE.

Se pueden observar los campos:

crossSection, Es un argumento que est formado por una serie de puntos


que definen la seccin transversal. Estos puntos estn definidos por dos
coordenadas, y no por tres, que es lo habitual.

spine, Es un argumento que est formado por una serie de puntos que
definen la espina dorsal del objeto extruido. En donde cada uno de estos
puntos estn definido por tres coordenadas, como no poda ser menos,
puesto que la espina dorsal es un recorrido en el espacio tridimensional.

solid, Es un campo tiene dos opciones: TRUE (la opcin por defecto) con la
que se ven slo un lado de las caras. Si colocamos el campo FALSE: se
vern ambos lados.

80

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Ejemplo 6.2.1

Ahora vamos a cambiar la direccin (espina). Se observa a continuacin con


ms detalle cmo se har la definicin de la seccin transversal. Como se ha
mencionado antes, se encuentra en el plano XZ, es decir, en el plano
horizontal formado por los ejes coordenados X y Z.

La seccin transversal es una superficie plana, definida en el el plano XZ. Por


tanto, se van a utilizar slo dos coordenadas (x,z).

Para comprender mejor este concepto veamos un ejemplo: un cubo.


(Recurdese que existe el nodo Box para conseguirlo directamente)

(-20,-20)

(20,-20)

(-20,20)

(20,20)
Z
Figura 23. Cubo

Entonces lo que se debe definir la seccin transversal, para ello se tiene que
sealar un polgono cerrado, es decir, se comienza desde un vrtice
cualquiera (p. ej. 20,20), y se sigue el sentido de las agujas del reloj, el
siguiente ser:

(-20,20), luego (-20,-20), a continuacin (20,-20) y finalmente (20,20) de


nuevo, con lo que el polgono se ha cerrado.

81

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

crossSection [
20 20,
-20 20,
-20 -20,
20 -20,
20 20
]

Ahora se tiene que definir la espina dorsal. La espina dorsal define el


recorrido que la seccin transversal deber efectuar para crear le forma
extruida.
Lo que vamos a hacer que la seccin transversal comience en el punto (0,20,0) y se mueva hasta el punto (0,20,0).

A continuacin 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 (negro
mas remarcado):

(0,20,0)
X

(0,-20,0)
Z

Figura 24. Espina Dorsal

(0, 20,0)

(0,-20,0)

82

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Figura 25. Espina Dorsal(camino recorrido por la seccin transversal)


El campo spine queda de la siguiente manera:
spine [
0 -10 0,
0 10 0
]
Nota :
Como ya se ha mencionado varias veces, para que un nodo defina una forma
(como es el caso del nodo Extrusin) es decir que sea visible, lo que se debe
hacer es incluir el cdigo dentro del nodo Shape.

Por tanto, el documento VRML de este ejemplo quedar de esta forma:


Shape {
appearance Appearance {
material Material {}
}
geometry Extrusion {
crossSection [
20 20,
-20 20,
-20 -20,
20 -20,
20 20
]
spine [
0 -20 0,
0 20 0
]
solid FALSE
}
}

83

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Figura 26. Cubo

En la figura puede observarse que se han aadido unos ejes coordenados y


modificado el punto de vista inicial.

Nota: Hay que Verificar que el campo solid debe estar en FALSE para que se
pueda ver las caras del volumen sin problemas. Tambin Cambiar el valor a
TRUE y vera la diferencia

6.3 Cmo podemos lograr aberturas en la superficie extruida?

Para poder tener un cubo por ejemplo sin caras, hay que usar dos campos
que determinan si la forma extruida est abierta o cerrada en los extremos:

beginCap: En este campo, si se establece como FALSE, no existir la seccin


transversal inicial (en el ejemplo del cubo, la cara inferior).

endCap: En este campo si se establece como FALSE, no existir la seccin


transversal final (en el ejemplo del cubo, la cara superior).
El resultado al aplicar estos campos es:
Solo se obtiene, aadiendo estos dos campos al nodo Extrusin, al ejemplo
anterior:

84

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

85

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Ejemplo 6.3.1

VRML V2.0 utf8


#Ejemplo de extrusin: cubo
Shape {
appearance Appearance {
material Material {}
}
geometry Extrusion {
crossSection [
20 20,
-20 20,
-20 -20,
20 -20,
20 20
]
spine [
0 -20 0,
0 20 0
]
beginCap FALSE
endCap FALSE
solid FALSE
}
}

Figura 27. Cubo sin caras

86

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Existen otras maneras para obtener un objeto sin cerrar, se puede dejar
deliberadamente sin cerrar el polgono que determina la superficie transversal.
Por ejemplo de la seccin transversal del cubo, si se comienza por el vrtice
inferior izquierdo (-20,10), y siguiendo segn el sentido de las agujas del reloj
obtenemos:

Figura 28. Cubo sin cerrar

crossSection [
-20 10,
-20 -10,
20 -10,
20 20
]

Entonces, revisemos el resultado:

El cubo queda sin cerrar, con lo que el cubo se ha extruido carece de la cara
frontal, como se puede ver en la imagen.

87

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Ejemplo 6.3.2
VRML V2.0 utf8
#Ejemplo de extrusin: cubo
Shape {
appearance Appearance {
material Material {}
}
geometry Extrusion {
crossSection [
20 20,
-20 20,
-20 -20,
20 -20,
]
spine [
0 -20 0,
0 20 0
]

solid FALSE
}
}

Figura 28. Cubo sin cerrar en VRML

88

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

6.4 Vamos a complicar la espina dorsal


Se puede entender que despus de revisar los ejemplos vistos anteriormente,
la espina dorsal siempre es perpendicular a la seccin transversal y adems
justa en su centro. Pero esto no quiere decir que siempre tiene qu ser as
necesariamente. Al crear la espina dorsal se le puede situar en cualquier sitio,
formar una recta inclinada, o estar formada por ms de dos puntos o tener
cualquier forma espacial que el observador desee.

Entonces ahora veamos una espina dorsal que sea una recta inclinada con
respecto a la seccin transversal. Se ha representado en el ejemplo a la espina
dorsal en negro remarcado y la seccin transversal es la seccin plana ubicada
en el centro de los ejes xz.

Ejemplo 6.4.1 Cubo inclinado


Shape {
appearance Appearance {
material Material {}
}
geometry Extrusion {
crossSection [
2 2,
-2 2,
-2 -2,
2 -2,
22
]
spine [
-10 0 0,
10 20 0
]
solid FALSE
}
}

89

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Figura 29. Cubo inclinado en el plano


Y

X
Z

Figura 30. Cubo inclinado

Ejemplo 6.4.2 : Uve invertida: espina dorsal de tres puntos.


Shape {
appearance Appearance {
material Material {}
}
geometry Extrusion {
crossSection [
2 2,
-2 2,
-2 -2,
2 -2,
22
]
spine [
-20 0 0,
0 20 0,
20 0 0
]
solid FALSE
}
}

90

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Figura 31. Uve invertida

X
Z
Y

Figura 32. Uve invertida.wrl

6.5 Vamos a complicar ms: veamos si la espina dorsal es un crculo

Tomando en cuenta construir una espina dorsal en forma de un crculo,


entonces el cuerpo engendrado es una superficie de revolucin. Entonces
Veamos un ejemplo: un dona definida por 8 puntos.

En el lado derecho podemos ver la imagen que representa la seccin


transversal (crculo central pequeo) y que est situada, como debe ser, en
plano horizontal XZ. Como podemos darnos cuenta esta seccin transversal es
un crculo de radio 5 y est representada por 8 puntos.

Tambin podemos observar que est representada (en blanco) una espina
dorsal formada por otros ocho puntos que forman un crculo de radio 10, y que

91

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

tambin est situada en el plano XZ, porque as lo hemos lo estamos


planteando.
El campo crossSection es el siguiente:
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
]

Figura. 33. Dona de 8 puntos

Hay que tomar en cuenta que en el campo crossSection los puntos se


expresan con dos coordenadas (xz), y que hay que repetir al final el primer
punto, para cerrar la seccin transversal.

92

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

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
]

Entonces, los puntos vienen expresados por tres coordenadas (x,y,z). Y


tambin tenemos que repitir el ltimo para cerrar la dona.

Figura 34. Dona.wrl

93

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Ejemplo 6.5.1
Background

{skyColor 1 1 1}

Shape {
appearance Appearance {
material Material {}
}
geometry Extrusion {
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
]
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
]

solid FALSE
}
}

94

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Es obvio que los ocho puntos que se han trazado 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. Se tiene que considerar que haran falta
muchos ms puntos para conseguir una dona mas real.

6.6 Vamos a variar la escala de la seccin transversal

Hasta el momento lo que hemos hecho hasta ahora, en todos los ejemplos, la
seccin transversal permaneca inalterable en su forma y tamao a lo largo de
la espina dorsal.

Hay un el campo que es el scale que permite modificar la escala de la seccin


transversal en cada uno de los puntos a lo largo de toda la espina dorsal.

En el caso del primer ejemplo del cubo, la espina dorsal estaba formada por
dos puntos. Se puede hacer que en el segundo punto, la escala de la seccin
transversal sea la mitad, con lo que lograramos una figura resultante que sera
una estructura de un prisma. Solo hay que aadir el campo scale de la
siguiente forma:

scale [
1 1,
0.5 0.5
]
Los valores del campo scale hay par de parmetros (que varan de 0 a 1) y
que son la variacin de las coordenadas x z. Hay que mencionarlo por cada
punto que hay en la espina dorsal. Quiere decir que en el ejemplo anterior en
el primer punto de la espina dorsal, se quiere que permanezcan inalterables
las medidas de las x (factor 1), as como de las z (factor 1). En el caso del
segundo punto de la espina dorsal, se quiere que las x se reduzcan a la
mitad (factor 0.5), as como las z (factor 0.5). Entonces lo que se poda haber
modificado slo uno, pasando en vez de a un cuadrado menor, a un rectngulo.

95

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Ejemplo 6.6.1

Background

{skyColor 1 1 1}

#Ejemplo de extrusin: cubo


Shape {
appearance Appearance {
material Material {}
}
geometry Extrusion {
crossSection [
20 20,
-20 20,
-20 -20,
20 -20,
20 20
]
spine [
0 -20 0,
0 20 0
]
scale [
1 1,
0.5 0.5
]

solid FALSE
}
}

96

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Figura 35. Cubo escalado.wrl

6.7 Vamos a variar la orientacin de la seccin transversal

Lo que se ha hecho en los todos los casos vistos es considerar que la seccin
transversal se traslade paralelamente a s misma (variando o no su tamao).

Hay un campo orientation que hace que gire la seccin transversal en cada
punto de la espina dorsal un ngulo determinado. Entonces ahora veamos un
ejemplo: en el caso del cubo vamos a hacer que la seccin transversal gire 45
en el segundo punto de la espina dorsal, con lo que tendremos un cubo
"retorcido". Para lograrlo, vamos a aadir el campo orientation de la siguiente
manera:

orientation [
0 1 0 0,
0 1 0 0.875 ]

En los valores del campo orientation se est formando un grupo de 4


parmetros. Entonces logramos que los tres primeros indiquen el eje alrededor
del cual se va a girar la seccin transversal. Finalmente el cuarto parmetro
indica el ngulo girado, expresado en radianes hay que especificarlo por cada
punto de la espina dorsal. En el caso del ejemplo anterior en el primer punto
de la espina dorsal se hizo que la rotacin alrededor del eje Y (parmetros 0 1

97

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

0) sea nula (cuarto parmetro 0). En el caso del segundo punto de la espina
dorsal, se quiere que la rotacin alrededor del eje Y (parmetros 0 1 0) sea de
45 (cuarto parmetro, que es 3.14/4=0.875)

Ejemplo 6.7.1
[Background {skyColor 1 1 1}
Viewpoint {
position 20 10 50
orientation 0 1 0 0.35
}
Shape {
appearance Appearance {
material Material {}
}
geometry Extrusion {
crossSection [
10.0 10.0,
-10.0 10.0,
-10.0 -10.0,
10.0 -10.0,
10.0 10.0
]
spine [
0.0 -10.0 0.0,
0.0 10.0 0.0
]
solid FALSE
orientation [
0.0 1.0 0.0 0.0,
0.0 1.0 0.0 0.875
]
}
}

98

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Figura 36. Cubo girado.wrl

Background

{skyColor 1 1 1}

Viewpoint {
position 20 10 50
orientation 0 1 0 0.35
}
Shape {
appearance Appearance {
material Material {}
}
geometry Extrusion {
crossSection [
10.0 10.0,
-10.0 10.0,
-10.0 -10.0,
10.0 -10.0,
10.0 10.0
]
spine [
0.0 -10.0 0.0,
0.0 10.0 0.0
]
solid FALSE
scale [
1.0 1.0,

99

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

0.5 0.5
]
orientation [
0.0 1.0 0.0 0.0,
0.0 1.0 0.0 0.875
]
}
}

Figura 37. Cubo girado y escalado.wrl

Ejercicio 6.7.2 En este ejercicio prctico mostramos un espiral de seccin


transversal cuadrada.

Hay que considerar las dimensiones de la seccin transversal deben ser 2x2.
En tonces , los cuatro puntos que definen a la seccin transversal en el plano
XZ sern (1,1), (-1,1), (-1,-1) y (1,-1).

Ahora la espina dorsal va a estar definida por 17 puntos.

100

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Figura 38. Espiral.wrl

Background

{skyColor 1 1 1}

Viewpoint {
position 20 10 50
orientation 0 1 0 0.35
}
Shape {
appearance Appearance {
material Material {}
}
geometry Extrusion {
crossSection [
1.0 1.0,
-1.0 1.0,
-1.0 -1.0,
1.0 -1.0,
1.0 1.0
]

spine [
10.0 0.0 0.0,
7.07 1.0 7.07,
0.0 2.0 10.0,

101

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

-7.07 3.0 7.07,


-10.0 4.0 0.0,
-7.07 5.0 -7.07,
0.0 6.0 -10.0,
7.07 7.0 -7.07,
10.0 8.0 0.0,
7.07 9.0 7.07,
0.0 10.0 10.0,
-7.07 11.0 7.07,
-10.0 12.0 0.0,
-7.07 13.0 -7.07,
0.0 14.0 -10.0,
7.07 15.0 -7.07,
10.0 16.0 0.0
]
solid FALSE
}
}

6.8 Es posible saltar a otro lugar en un escenario virtual o hacia otro


mundo virtual almacenado en otro archivo?

En VRML hay nodo llamado Anchor que sirve para crear un grupo ya que si se
selecciona cualquier objeto que pertenece a dicho grupo se salta hacia otro
lugar del escenario virtual o hacia otro mundo virtual almacenado en un fichero
VRML (al cual accedemos a travs de su direccin URL). Existe la posibilidad
de que cualquier objeto o grupo de objetos se puede convertir en un enlace.

As mismo estos enlaces son los equivalentes en el mundo tridimensional a los


enlaces existentes en las pginas Web realizadas mediante HTML.Es decir
para entenede mejor este nodo nos permite establecer un nexo o link para
acceder a otro fichero por ejemplo si tenemos una puerta al darle clic a la
manija nos llevara a otro objeto que esta en otro fichero a travs del URL.

102

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

El nodo Anchor posee un campo denominado description en el que mediante


una cadena de texto se describe brevemente el objeto.

Sintaxis:

Anchor{
url"direccin_URL"
description "descripcin_del_enlace"
children[...]
}

Ejemplo 6.8.1

Anchor {
children Shape {
geometry Sphere { radius 2 }
appearance Appearance { material Material { diffuseColor 0.8 0.5
0}}
}
url "http://www.uigv.edu.pe
}

Nota:
Este enlace nos llevar hasta la pgina de la UIGV

Group {
children [

# escalones

DEF escalon Shape {


appearance Appearance {

103

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

material Material {
diffuseColor 1.0 1.0 1.0
}
}
geometry Box {
size 4.0 0.25 1.0
}
},
Transform {
translation 0.0 0.5 -1.0
children USE escalon
},
Transform {
translation 0.0 1.0 -2.0
children USE escalon
},

Ejemplo 6.8.2 Puerta

Transform {
translation 0.0 4.125 -2.6
children [
Anchor {
url "cilindro.wrl"
description "cilindro"
children [

# puerta
Shape {
appearance Appearance {
material Material {
diffuseColor 0.6 0.4 0.0
}

104

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

}
geometry Box {
size 3.0 6.0 0.2
}
},

#manija de la puerta
Transform {
translation 1.18 -0.0 0.2
children [
Shape {
appearance Appearance {
material Material {
diffuseColor 0.3 0.3 0.3
}
}
geometry Sphere {
radius 0.15
}
}
]
}
]
}
]
}
]
}

105

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Figura 40. Enlace


cilindro.wrl

Figura 39. Enlace puerta.wrl

El ejemplo anterior, nos enlaza a un fichero llamado cilindro.wrl que ya sido


creado antes, para que el enlace funcione se deber hacer clic en la manija de
la puerta, y automticamente nos llevara al otro fichero (cilindro), considerando
que ambos fichero debern estar en una misma carpeta.

106

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

LECCIN VII

CONSTRUCCIONES BSICAS: CONCEPTOS

7.1 Es posible iluminar nuestro escenario virtual?

Cuando se crea una escena virtual hay que considerar la colocacin de luces
en un mundo para permitir obtener un mayor grado de realismo, pudiendo
convertir una misma escena virtual en un lugar clido, en un lugar tenebroso y
sombro, en un paisaje, poder darle efectos de la cada de los rayos del sol etc.
A si como tambin hay que tomar en cuenta la ambientacin, que juega un
importante papel a la hora de determinar que objetos visualizar el visitante con
mayor claridad.
Hay tres clases de fuentes de iluminacin, a cada una de las cuales se les
asocia un nodo:

7.1.1. Vamos a definir la posicin exacta de la luz

El nodo pointlight es el nodo que define la posicin de una luz que ilumina por
igual en todas direcciones.

Sintaxis:

PointLight{
color

color_RGB

location

Eje_X Eje_Y Eje_Z

radius

valor_real

attenuation

coeficiente1 coeficiente2 coeficiente3

on

valor_lgico

intensity

valor_real

ambientIntensity

valor_real

107

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Descripcin de los campos y argumentos:

Color: Indica el color de luz.

Location: Determina la posicin que va a ocupar el foco de luz dentro del


escenario tridimensional.

Radius:

Attenuation: Almacena tres valores que se utilizan para calcular la

Limita la zona (en metros) que va a ser iluminada.

atenuacin de la luz conforme nos alejamos del foco. El factor de


atenuacin viene dado por la siguiente ecuacin:
1/(coef1+(coef2*radio)+ (coef3*radio*radio))

On:

Indica si los campos intensity y ambientIntensity estn activos

(TRUE) o no (FALSE).

Intensity:

Establece la intensidad con la que la luz brilla, siendo el valor 1

la mxima intensidad y 0 la mnima.

ambientIntensity:

Determina la luminosidad del entorno del foco.

Ejemplo 7.7.1: Luz Azul Sin Atenuacin


PointLight
{
# luz azul sin atenuacion
location 8 -3 -10
radius 15
ambientIntensity 0.5
color 0 0 1
intensity 1
attenuation 1 0 0 # sin atenuacin
}
Transform {
translation
0 -5 -10
children Shape
{
appearance Appearance {
material Material {
ambientIntensity 1
diffuseColor 1 1 1
}
}
geometry Box { size 20 1 10 }
}
}

108

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Figura 41. Enlace luz sin atenuacin

Ejemplo 7.1.2: Luz Azul Con Atenuacin

PointLight

# luz azul con atenuacion

location 8 -3 -10
radius 15
ambientIntensity 0.5
color 0 0 1
intensity 1
attenuation 1 0.5 0 # posee algo de atenuacion
}
Transform {
translation

0 -5 -10

children Shape

appearance Appearance {
material Material {
ambientIntensity 1
diffuseColor 1 1 1
}
}
geometry Box { size 20 1 10 }
}
}

109

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Figura 12. Enlace luz con atenuacin

7.1.2 Vamos a orientar nuestra luz ahora

El nodo DirectionalLight es el que hace posible definir una de luz orientable que
ilumina con rayos paralelos a un determinado vector tridimensional.
Permite desplazar el dibujo de un polgono 2D normalmente cerrado en una
direccin determinada en el espacio.

Sintaxis:
DirectionalLight{
color

color_RGB

on

valor_lgico

intensity

valor_real

ambientIntensity

valor_real

direction

Eje_X Eje_Y Eje_Z

Descripcin de los campos:

Tenemos el campo direction contiene el vector que determina la orientacin de


la luz emitida dentro del espacio virtual. El resto de campos tienen la misma
misin que en el nodo PointLight.

110

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Ejemplo 7.1.2.1: DirectionalLight

Background {skyColor 1 1 1}
DirectionalLight

ambientIntensity 0.5
color 1 1 1
intensity 1
direction -0.5 -0.5 0
}
Shape {
appearance Appearance {
material Material {
ambientIntensity 1
diffuseColor 0 0 1
}
}
geometry Sphere

{radius

2}

Transform {
translation

2 5 -5

children [
Shape {
appearance Appearance {
material Material {
ambientIntensity 1
diffuseColor 1 1 0
}
}
geometry Cone {bottomRadius 2 height 3 }
}
]
}

111

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Figura 43. DirectionalLight

Ejemplo 7.1.2.2
Definicin de tres luces paralelas con tres colores diferentes sobre una esfera
blanca
DirectionalLight

# luz roja

ambientIntensity 0.5
color 1 0 0
intensity 1
direction -0.5 -0.5 -0.1
}
DirectionalLight

# luz azul

# luz roja

ambientIntensity 0.5
color 0 0 1
intensity 1
direction 0 -0.5 -0.1
}
DirectionalLight
ambientIntensity 0.5
color 1 0 0
intensity 1
direction 0 0.5 -0.1

112

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

}
Shape {
appearance Appearance {
material Material {
ambientIntensity 1
diffuseColor 1 1 1
}
}
geometry Sphere

{radius

2}

Figura 44.
Tres luces paralelas con tres colores diferentes sobre una esfera blanca

7.1.3 Vamos a definir una fuente de luz tipo foco

Para definir una fuente de luz de tipo foco, se coloca en una posicin fija del
espacio tridimensional e ilumina en forma de cono a lo largo de una direccin
determinada. As mismo, la intensidad de la iluminacin desciende de forma
exponencial segn diverge el rayo de luz desde esa direccin hacia los bordes
del cono.Ahora el rgimen de descenso y el ngulo del cono se controlan
mediante los campos beamWidth y cutOffAngle. Podemos lograrlo con el
Nodo SpotLight.

Descripcin de los campos:

Campo: beamWidth almacena el radio (en radianes) de la base de un cono en


donde la luz que emite es uniforme y tiene su mxima intensidad. Este cono

113

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

tendra como base este campo, como altura el campo radius (orientado segn
el campo direction) y como vrtice el punto indicado en el campo location.
Campo cutOffAngle almacena el radio (en radianes) de la base de un cono que
contiene al cono mencionado arriba. Adems pose las mismas caractersticas a
excepcin de su radio, el cual ha de ser mayor. Este radio determina el lugar
donde la luminosidad es nula. Entre el radio almacenado en beamWidth y el
almacenado en este campo, la intensidad de la luz va decreciendo conforme
nos alejamos del primero de los conos.

Ejemplo 7.1.3.1
Definicin de un spot de luz sin atenuacin sobre una superficie blanca.

SpotLight { # Spot rojo


location 0 0 -10
radius 3
ambientIntensity 0.5
color 1 0 0
intensity 1
attenuation 1 0 0
#esta combinacin no presenta atenuacin
direction 0 -1 0 # punta hacia abajo
cutOffAngle 1.0472 #60 grados
beamWidth 0.785398 # 45 grados
}
Transform {
translation

-10 -4 -15

children Shape

{appearance Appearance {

material Material{
ambientIntensity 1
diffuseColor 1 1 1
}}
geometry ElevationGrid {
colorPerVertex FALSE

114

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

xDimension 20
zDimension 10
xSpacing 1
zSpacing 1
height [
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
00000000000000000000
]
}
}
}

Figura 45. Spot de luz sin atenuacin sobre una superficie blanca.

7.2 Es posible crear puntos y lneas en el mundo virtual?

Hemos visto ya en las unidades anteriores como mediante la superposicin y


unin de diferentes nodos geomtricos bsicos es posible construir objetos
ms complejos. As mismo, si la nica manera de generar formas complejas
fuese sta, entonces la construccin de mundos virtuales ser bastante ardua.

115

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Entonces e s por ello por lo que aparecen una serie de nuevos nodos, los
cuales, poseen la facilidad del diseo (al tener ms control sobre ellos y al ser
ms flexibles), generan mundos VRML de una forma ms eficiente.
Lo que se debe hacer a la hora de disear un objeto es describir su geometra
en dos pasos aislados:

Especificacin de las coordenadas:


Aqu vamos el indicar mediante el nodo Coordinate la posicin de los puntos
que se van a utilizar para construir el objeto. Es decir, estos puntos no son
visibles en el escenario virtual.

Nodo Coordinate:
Sintaxis:
Coordinate {
point [
Eje_x Eje_Y Eje_Z,
Eje_x Eje_Y Eje_Z,
...
Eje Eje_Y Eje_Z
]
}

El campo point puede poseer varios puntos, cuyas coordenadas estn


separadas por comas.

Coordinate {
point [
12.0 11.0 17.1,
20.5 13.8 5.3,
14.0 6.1 22.9
]
}

116

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

7.3 Vamos a crear una forma geomtrica:

Primero se define los puntos que forman el esqueleto del objeto, una vez que
se haga ello se han de conectar. Existen tres maneras de unir estos puntos,
cada una de las cuales est asociada a un nodo diferente:

Nodo PointSet

Nodo IndexedLineSet

Nodo IndexedFaceSet

Los tres nodos poseen un campo denominado coord que acepta como valor un
nodo Coordinate.

Nodo PointSet:

Este nodo representa un conjunto de puntos situados en las coordenadas


indicadas dentro del sistema de coordenadas del nodo padre.
PointSet {
coord Coordinate { point [
111
-1 -1 -1
1 -1 1
]

Descripcin de campos:

Coord toma como valor un nodo de tipo Coordinate, el cual define los puntos
que se desean representar.

El campo color sirve para definir el color de cada uno de los puntos. Este
campo toma como valor un nodo Color, que a su vez contiene un campo de
tipo color de nuevo. Este ltimo campo describe una lista de colores RGB, de
forma que el primer color corresponde al primer punto descrito por el nodo

117

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Coordinate del campo coord; el segundo color corresponde al segundo punto y


as sucesivamente.

Ejemplo 7.3.1 PointSet:

PointSet {
coord Coordinate {
point [
12.0 11.0 17.1, #1 punto
20.5 13.8 5.3, #2 punto
14.0 6.1 22.9

#3 punto

]
}
color Color {
color [
1.0 0.0 0.0, # 1 punto rojo
0.0 1.0 1.0, # 2 punto verde
1.0 1.0 0.0 # 3 punto amarillo
]
}

Adems, si se incluyese este cdigo, tal como est, en un documento VRML,


no podramos ver ninguno de estos puntos, ya que como se ha visto
anteriormente, para crear un objeto visible se debe utilizar el nodo Shape.

El observador tiene tomar en cuenta que se ha prescindido del campo


appearance del nodo Shape ya que no es necesario, pues los puntos no van a
tener la apariencia por defecto, sino la que se determina en el campo color.

118

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Ejemplo 7.3.2 PointSet: Ejemplo de un grupo de tres puntos con colores


Shape {
geometry PointSet {
coord Coordinate {
point [
12.0 11.0 17.1, #1 punto
20.5 13.8 5.3, #2 punto
14.0 6.1 22.9

#3 punto

]
}
color Color {
color [
1.0 0.0 0.0, # 1 punto rojo
0.0 1.0 1.0, # 2 punto verde
1.0 1.0 0.0 # 3 punto amarillo
]
}
}

Nodo IndexedLineSet:
Este nodo permite unir los diferentes puntos especificados en su campo coord
mediante lneas poligonales.
Sintaxis:
IndexedLineSet{
coord Coordinate {
point [ . . . ]
}
coordIndex [...]
colorPerVertex

valor_lgico

color Color {
color [ . . . ]
}
colorIndex [...]
}

119

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Descripcin de campos:

coord toma como valor un nodo de tipo Coordinate, el cual define los puntos
que sirven como esqueleto de la figura.

coordIndex se utiliza para especificar entre qu puntos se han de trazar las


lneas. Asimismo si desea una lnea puede ser trazada utilizando ms de dos
puntos, de forma que se dibuja una lnea entre el primer y el segundo punto,
otra entre el segundo y el tercer punto, y as sucesivamente.

Un ndice con valor -1 indica que ha finalizado la lnea actual y que comienza la
siguiente. Para indicar el primer punto definido en el nodo Coordinate se utiliza
el 0, para el segundo el 1 y as sucesivamente. El campo colorPerVertex
indica como se han de aplicar los colores sobre las lneas:

Nodo IndexedFaceSet:

Permite unir los diferentes puntos especificados en su campo coord mediante


caras poligonales.

Sintaxis:
IndexedFaceSet{
coord Coordinate {
point [ . . . ]
}
coordIndex [...]
colorPerVertex

valor_lgico

color Color {
color [ . . . ]
}
colorIndex [...]
}

120

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

El campo coord toma como valor un nodo de tipo Coordinate, el cual define los
puntos que sirven como esqueleto de la figura. Utiliza los ndices de su campo
coorIndex para especificar las caras poligonales. Un ndice con valor -1 indica
que ha finalizado la cara actual y comienza la siguiente. El campo
colorPerVertex indica como se han de aplicar los colores:

121

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

EJERCICIOS PROPUESTOS
Como ejercicio prctico se propone crear una espiral de seccin transversal
circular.

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, que se pueden obtener en


el
Ejemplo anterior del espiral cuadrado, hay que tomar en cuenta los cantidad de
puntos que se le tiene que aadir para logre ser circular el espiral
Guardar el fichero resultante con el nombre de espiral1.wrl

RESUMEN

En la presente unidad se ha visto el desarrollo de objetos ms complejos, lo


que implica el uso del nodo extrusin que nos ha permitido quitarle caras a un
objeto, dando un aspecto de huecos, de torcidos y altorrelieve acercndonos
ms a la realidad.

Por ejemplo, hicimos una dona en la que se aprendi a determinar la cantidad


de puntos que permite darle forma.

As como tambin hemos aprendido a diferenciar cmo se aplica una


determinada luz a la escena, dependiendo de donde se origina, de un punto o
de una determinada direccin, lo que nos ensea darle efectos de los rayos de
sol o mejor an darle la apariencia de una foco de luz que emite luces de un
punto en especial, lo que nos permitir ms adelante crear lmparas o
cualquier objeto que emita luz. Finalmente, no solo se puede armar escenas
con objetos sino tambin con puntos y lneas.

122

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

AUTOEVALUACIN

1. Permite desplazar el dibujo de un polgono 2D normalmente cerrado en


una direccin determinada en el espacio.
a. Directionlight
b. Poincet
c. Extrusion
d. crossection
e. spine

2. Es un argumento que est formado por una serie de puntos que


definen.
a. Espina dorsal
b. Seccin Transversal
c. Spine
d. Crossection
e. a y b

3. Determina si la forma extruida est abierta o cerrada en los extremos.


a. Extrusion-Crossection-Spine
b. Extrusion- beginCap- endCap
c. EndCap
d. BeginCap
e. EndCap-Extrusion

4. Hay un campo que hace que gire la seccin transversal en cada punto
de la espina dorsal un ngulo determinado.
a. Orientation -Type
b. Orientation-scale
c. Orientation
d. Anchor
e. Type

123

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

5. Define la posicin de una luz que ilumina por igual en todas direcciones.
a. Pointlight
b. DirectionalLight
c. Location
d. Spotlight
e. ambientIntensity

CLAVES:
1A. 2D. 3B. 4C. 5A.

GLOSARIO

Solid: Campo que tiene dos opciones: TRUE (la opcin por defecto) con
la que se ven slo un lado de las caras. FALSE: se vern ambos lados.

beginCap: Campo que si se establece como FALSE, no existir la


seccin transversal inicial (en el ejemplo del cubo, la cara inferior).

endCap: Campo que si se establece como FALSE, no existir la seccin


transversal final (en el ejemplo del cubo, la cara superior).

PointLight: Define la posicin de una luz que ilumina por igual en todas
direcciones.

Ambientintensity: Determina la luminosidad del entorno del foco.

Attenuation: Almacena tres valores que se utilizan para calcular la


atenuacin de la luz conforme nos alejamos del foco.

SpotLight: Define una fuente de luz de tipo foco, que se coloca en una
posicin fija del espacio tridimensional e ilumina en forma de cono a lo
largo de una direccin determinada

Coordinate: El cual define los puntos que sirven como esqueleto de la


figura.

124

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

LECTURA
VRLM Mundos Virtuales en Internet
El paradigma de Internet permite adentrarse en uno de los puntos de discusin
que ms se acercan a la ciencia-ficcin a travs de los mundos virtuales .
Navegar e interactuar a travs de una red que no conoce lmites .No hay que
estar muy familiarizado con las nuevas tecnologas para haber odo hablar de
la Realidad Virtual (VR: Virtual Reality ) . De hecho, slo tiene que darse una
vuelta por una sala de juegos recreativos de un centro comercial para encontrar
una mquina con un casco algo extrao que, tras introducir las monedas
correspondientes, le permitir adentrarse en un nuevo mundo . Quiz ya ha
experimentado la realidad virtual a travs de estas mquinas, aunque lo que
realmente importa son las nuevas posibilidades que ofrece esta tecnologa en
relacin con la vida cotidiana. Obviamente desde casa y conectado a la Red, la
experiencia no va a ser la misma que en la mquina recreativa, pero s ms
enriquecedora.
En el mundo de la informtica y ms an en el campo tecnolgico, todo avanza
demasiado rpido . En el caso de VRML, el hardware ha mejorado tanto que
los programas desarrollados no utilizan todas las posibilidades que ofrecen los
nuevos perifricos . Ahora podr disfrutar desde el hogar de un nuevo mundo
con un ordenador a 200 MHz, mucha memoria RAM y una aceleradora 3-D .
Aunque esto no quiera decir que con un Pentium/100, o Mac equivalente, no se
pueda andar por un espacio virtual . Los requisitos indispensables son disponer
de una cantidad generosa de RAM y una aceleradora 2D/3D . Lgicamente,
para navegar en Internet por los mundos virtuales, deber aadir el navegador
preferido, un mdulo de mundos virtuales como Cosmo Player ( otro estndar
de facto creado por Silicom Graphics ) y agradecer el esfuerzo de muchos
individuos que han hecho posible un estndar para la creacin de mundos
virtuales en Internet. Un pilar que ha derivado en el lenguaje VRML ( Virtual
Reality Model Language, Modelo de Lenguaje para Realidad Virtual ) ya en su
versin 2.0.

125

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

Conceptos bsicos
Los archivos de VRML son archivos de texto interpretados por el mdulo de
realidad virtual que se tenga instalado en el navegador . Los archivos VRML
contienen nodos que describen formas geomtricas y sus propiedades (
aspecto, colores, luces, animaciones y otras ) .
Las primitivas son formas geomtricas bsicas y tridimensionales que sirven
para construir cajas, conos, cilindros y esferas. Todas ellas deben ir asociadas
al nodo que indica la construccin de formas ( shape ) .
Cada uno de los nodos de primitivas bsicas tiene sus propias caractersticas,
dadas por su estructura geomtrica ( altura, anchura, radio ) . As, partiendo de
la primitiva box (caja ) se puede construir un cubo o un rectngulo perfecto; y a
partir de la primitiva Cylinder ( cilindro ) se puede obtener un bonito cilindro, un
disco, o una tubera ( simplemente quitando la parte superior e inferior ) .
Las formas bsicas se pueden agrupar para formar estructuras ms complejas
. De esta manera surgen los conceptos de grupo ( group) y los hijos ( children )
. Los hijos conforman una estructura compleja, el grupo, de tal manera que
pueda modificarse su posicin, tamao y otros atributos, como si se tratara de
un nico objeto.
Otra de las formas consideradas como bsicas son los textos ( text ) . En ellos
se definen las familias ( arial, courier ) , los estilos ( cursiva, negrita ) ,
espaciados, justificacin, orientacin, longitud del texto, etc .
Formas y Texturas
Obtener formas complejas como caras o cuerpos es una tarea imposible
cuando se trata de combinar primitivas . Esta es la razn por la que en VRML
se dispone adems de puntos (PointSet) , lneas (IndexedLineSet) y caras

126

Sistema a Distancia

Computacin Grfica - Unidad IV

Jessica Delgado F. / Pedro Carpio F.

(IndexedFaceSet). Las caras (faces) requieren una mencin especial, ya que


son formas planas (cuadrados, crculos, etc.) y que, por poner ejemplos
sencillos, les falta esa tercera dimensin para convertirse en un cubo o una
esfera . Mediante la inclusin de mltiples caras en el nodo (IndexedFaceSet)
se puede recrear un objeto lo ms realista posible . Las caras son reas
poligonales cerradas, que el navegador oscurece por omisin para ofrecer una
apariencia de solidez.
Tambin es posible mejorar el aspecto de una cara y, por tanto, ofrecer una
mayor sensacin de realidad mediante el empleo de tcnicas de sombreado y
construccin de caras cncavas o convexas. Con la tcnica del sombreado se
elimina la necesidad de dibujar muchas lneas, dejando que las sombras
suavicen las formas y aportando continuidad. De esta manera se obtienen unos
mejores resultados estticos, un archivo de menor tamao y, en consecuencia,
un menor tiempo de redibujado.
Tanto los puntos, como las lneas y las caras, se construyen respecto a un eje
imaginario que representa las tres coordenadas espaciales: ancho, alto y
profundidad (x,y,z) y dentro de un centro imaginario (0,0,0).
http://www.idg.es/iworld/impart.asp?id=60699

BIBLIOGRAFA

http://wwwdi.ujaen.es/~rsegura/igai/web3d/web3d/docs/apend-c.html

127

Sistema a Distancia

Potrebbero piacerti anche