Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
CUARTA UNIDAD
NODOS AVANZADOS
EXTRUIR, ILUMINACION
OBJETIVOS
Aplicar deformaciones a los objetos que forman parte del mundo virtual
78
Sistema a Distancia
LECCIN VI
Definicin 2: Es obtener una figura 3D a partir de una figura 2D, teniendo una
direccin en el espacio.
Para poder realizar una extrusin en VRML se tiene que utilizar el nodo
Extrusin. En una forma extruida se obtiene de la siguiente manera:
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.
79
Sistema a Distancia
Extrusion {
crossSection [
1 0,
0 6.5,
.......
]
spine [
10 0 3,
15 1 5,
............
]
solid FALSE
}
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
Ejemplo 6.2.1
(-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:
81
Sistema a Distancia
crossSection [
20 20,
-20 20,
-20 -20,
20 -20,
20 20
]
(0,20,0)
X
(0,-20,0)
Z
(0, 20,0)
(0,-20,0)
82
Sistema a Distancia
83
Sistema a Distancia
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
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:
84
Sistema a Distancia
85
Sistema a Distancia
Ejemplo 6.3.1
86
Sistema a Distancia
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:
crossSection [
-20 10,
-20 -10,
20 -10,
20 20
]
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
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
}
}
88
Sistema a Distancia
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.
89
Sistema a Distancia
X
Z
90
Sistema a Distancia
X
Z
Y
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
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
]
92
Sistema a Distancia
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
]
93
Sistema a Distancia
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
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.
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.
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
Ejemplo 6.6.1
Background
{skyColor 1 1 1}
solid FALSE
}
}
96
Sistema a Distancia
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 ]
97
Sistema a Distancia
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
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
0.5 0.5
]
orientation [
0.0 1.0 0.0 0.0,
0.0 1.0 0.0 0.875
]
}
}
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).
100
Sistema a Distancia
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
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.
102
Sistema a Distancia
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
103
Sistema a Distancia
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
},
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
}
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
106
Sistema a Distancia
LECCIN VII
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:
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
radius
valor_real
attenuation
on
valor_lgico
intensity
valor_real
ambientIntensity
valor_real
107
Sistema a Distancia
Radius:
On:
(TRUE) o no (FALSE).
Intensity:
ambientIntensity:
108
Sistema a Distancia
PointLight
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
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
110
Sistema a Distancia
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
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
}
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
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.
113
Sistema a Distancia
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.
-10 -4 -15
children Shape
{appearance Appearance {
material Material{
ambientIntensity 1
diffuseColor 1 1 1
}}
geometry ElevationGrid {
colorPerVertex FALSE
114
Sistema a Distancia
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.
115
Sistema a Distancia
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:
Nodo Coordinate:
Sintaxis:
Coordinate {
point [
Eje_x Eje_Y Eje_Z,
Eje_x Eje_Y Eje_Z,
...
Eje Eje_Y Eje_Z
]
}
Coordinate {
point [
12.0 11.0 17.1,
20.5 13.8 5.3,
14.0 6.1 22.9
]
}
116
Sistema a Distancia
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:
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
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
]
}
118
Sistema a Distancia
#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
Descripcin de campos:
coord toma como valor un nodo de tipo Coordinate, el cual define los puntos
que sirven como esqueleto de la figura.
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:
Sintaxis:
IndexedFaceSet{
coord Coordinate {
point [ . . . ]
}
coordIndex [...]
colorPerVertex
valor_lgico
color Color {
color [ . . . ]
}
colorIndex [...]
}
120
Sistema a Distancia
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
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).
RESUMEN
122
Sistema a Distancia
AUTOEVALUACIN
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
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.
PointLight: Define la posicin de una luz que ilumina por igual en todas
direcciones.
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
124
Sistema a Distancia
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
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
BIBLIOGRAFA
http://wwwdi.ujaen.es/~rsegura/igai/web3d/web3d/docs/apend-c.html
127
Sistema a Distancia