CURSO VRML |
|
entrega 17
------------------------------------------------------------------------
6.7- Nodos de AGRUPACION ("Nodos Padres"). Consideraciones / Ejemplos
------------------------------------------------------------------------
Se denomina asi a aquellos nodos que permiten agrupar nodos"hijos" y otros
originando comportamientos especiales de conjunto basados en la dependen-
cia establecida entre componentes y nodo agrupador.
Los ejemplos que se presentan a continuacion y todos aquellos subsecuen-
temente utilizados para ilustrar utilizacion de nodos provienen del libro
"VRML 2.0 Sourcebook" (Ames / Nadeau / Moreland, Wiley 1997) accesible
directamente en la Internet a través de
http://inet1.smat-mtc.com/vrml/vrmlsrbk/toc/toc.html
Los nodos de agrupación son utilizados para la creación de grafos de
transformación jerárquica. Los nodos de agrupación poseen un campo "hijo"
que contiene una lista de nodos que constituyen los descendientes de
transformación del grupo. Cada nodo de agrupación define un "espacio de
coordenadas" para sus "hijos". Dicho espacio de coordenadas se encuentra
subordinado al espacio de coordenadas del nodo "padre". Dicho de otra
maneralas transformaciones se acumulan siguiendo un orden descendente
en cuanto a la jerarquía del grafo de escena.
Todos los nodos de agrupación poseen definiciones eventIn del tipo
addChildren y RemoveChildren. El evento addChildren añade el o los nodos
transferidos al nodo de agrupación que posee campos "hijos". Cualquier
nodo o nodos transferido(s) al evento AddChildren que se encuentre ya en
lista de hios de agrupación será ignorado. El evento removeChildren
elimina el nodo transferido del nodo de agrupación que
posee campos "hijos". Cualquier Cualquier nodo o nodos transferido al
evento removeChildren que no se encuentre en lista de "hijos"de los nodos
de agrupación será(n) ignorado.
Mencionaremos aquí los siguientes nodos de AGRUPACION:
--> Nodo ANCHOR
--> Nodo BILLBOARD
--> Nodo COLLISION
--> Nodo GROUP
--> Nodo TRANSFORM
--> Nodo ANCHOR
-----------
Los nodos Anchor (nodos "ancla") permiten "amarrar" dos o mas "mundos" de
diferente origen entre si a objeto de que el usuario pueda navegarlos de
forma continua. Uitlizando estos vinculos uno puede conectar una "puerta"
en su mundo a un mundo de "destino" ubicado en otra region de la Red. Una
de las puertas en dicho mundo puede a su vez estar vinculada a nuestro
propio "mundo" o a otros mundos y asi sucesivamente.
El eslabonamiento o encadenamiento de mundos coloca la Red en la punta de
nuestros dedos permitiendo la exploracion continua de la red, al despla-
zarse de mundo en mundo a traves de las "puertas" abiertas en ellas.
Los vinculos de "mundos" en VRML se anclan con respecto a formas especi-
cas en otro mundo. Cuando el participante hace un clic en una forma
"anclada" el browser sigue el vinculo señalado y trae el mundo al cual se
halla anclada a su monitor.
Las anclas VRML se especifican utilizando el nodo Anchor y un URL que
contiene la direccion de referencia del mundo al cual se hace referencia.
Ejemplo 1. Acceder a:
http://holodeck.st.usm.edu/classes/vrml20/unix/ch28/28fig01.htm
Ejemplo 2. Acceder a:
http://holodeck.st.usm.edu/classes/vrml20/unix/ch28/28fig02.htm
--> Nodo BILLBOARD
--------------
El nodo Billboard es un nodo de agrupacion que modifica su sistema de
coordenadas de forma tal que, a nivel local, el eje Z apunta hacia el
observador. De esta forma se origina un sistema de coordenadas local re-
lativo al sistema "padre" de coordenadas. Las formas creadas como "hijas"
del nodo de agrupacion Billboard estan construidas en funcion del nuevo
origen de coordenadas del sistema de representacion.
Para rotar el Billboard de forma tal que aparezca frente al observador,
debe determinarse la linea entre el origen del nodo Billboard y la posi-
cion del observador. En funcion de esto, el axisOfRotation y la linea
anteriormente descrita dan origen a un plano en el cual puede ubicarse
entonces el eje Z local pivotando alrededor del axisOfRotation.
ser pivotado el eje Z
A un nodo Billboard se le puede asignar un nombre definido, utilizando
para ello DEF. Tambien puede ser instanciado multiples veces utilizando
USE. Cada instancia actua independiente de las demas. En otras palabras,
cada instancia busca el eje apropiado alrededor del eje de rotacion de
forma tal que el Billboard se mantenga de frente al observador.
Ejemplo 1. Acceder a:
http://holodeck.st.usm.edu/classes/vrml20/unix/ch11/11fig02.htm
--> Nodo COLLISION
--------------
Informa al "browser" si determinados objetos geométricos pueden ser
navegados o no.A la barrera impuesta a los objetos no navegables se la
denomina "barrera de colisión". Su forma sintactica es:
Collision {
children []
collide TRUE
bboxCenter 0 0 0
bboxSize -1 -1 -1
proxy NULL
--> Nodo GROUP
----------
Concierne aquel tipo de nodo que se caracteriza por permitir agrupar
cualquier cantidad de nodos a traves del uso del campo Group. El grupo,
como un todo puede asumir un nombre asignado utilizando DEF y luego ser
repetidamente instanciado dentro del fichero VRML utilizando USE.
Un nodo Group es el equivalente de un nodo Transform pero sin campos
de transformacion.
--> Nodo TRANSFORM
--------------
El nodo de agrupacion Transform permite extender las habilidades basicas
de agrupacion del nodo Group a traves de la creacion de un nuevo sistema
de coordenadas para el grupo. Este nuevo sistema de coordenadas puede ser
transladado,rotado y escalado utilizando los campos translation,rotation,
scale, center y scaleOrientation. Esto permite al participante ubicar el
grupo de objetos en cualquier lugar de su mundo, orientandolo y redimen-
sionandolo dependendo del uso que se deseee darle.
Concierne a aquellos grupos de nodos identificados bajo un mismo y único
sistema de coordenadas o "marco de referencia"; incorpora aquellos campos
del viejo nodo separador de la versión VRML 1.0.
EJEMPLOS DE NODOS DE AGRUPACION APLICADOS A MODELOS: Existen varias
formas de aplicación de este tipo de módulos...
1- Agrupando FORMAS y PROPIEDADES mediante GRUPOS.
Modelo PISO
http://inet1.smat-mtc.com/vrml/vrmlsrbk/ch11/11fig01.html
2- Agrupando FORMAS y PROPIEDADES mediante SEPARADORES.
Modelo CERCA
http://inet1.smat-mtc.com/vrml/vrmlsrbk/ch11/11fig03.html
3- Agrupando FORMAS y PROPIEDADES mediante INTERRUPTORES (Switches).
Modelo LOLLIPOP (Chupeta)
http://inet1.smat-mtc.com/vrml/vrmlsrbk/ch11/11fig04.html
4- Combinando FORMAS mediante el uso de SEPARADORES
Modelo CERCA
http://inet1.smat-mtc.com/vrml/vrmlsrbk/ch11/11fig25.html
5- Utilizando SEPARADRES dentro de SEPARADORES.
Modelo LAMPARA DE MESA
http://inet1.smat-mtc.com/vrml/vrmlsrbk/ch11/11fig37.html
-------------------------------------------------------------------------
6.8- Nodos "HIJOS VINCULANTES". Consideraciones.
-------------------------------------------------------------------------
Son denominados en el idioma ingles "Bindable Children Nodes".
Uno de los mejores ejemplos de padres /"hijos vinculantes" lo constituyen
los nodos de agrupacion de formas. Estos nodos están constituídos por
formas de menor grado de complejidad, las cuales, a su vez, pueden con-
formar agrupacionesde formas de un menor grado de complejidad y así suce-
sivamente. En cada nivel de complejidad se denomina nodo "padre" al nodo
que engloba un grupo de nodos de menor grado de complejidad a los cuales
se los denomina nodos "hijos vinculantes". A su vez, y de existir grados
inferiores de complejidad, cada nodo "hijo" pasa a ser "padre"de aquellos
que se encuentran por debajo de el, etc.
Utilizando un ejemplo arquitectónico podemos decir:
Pueblo --> Barrios --> Edificios --> Apartamentos --> Cuartos
donde el pueblo, siendo máximo nivel de agragación se constituye en
"padre" de los barrios que lo conforman en calidad de "hijos".Los barrios
a su vez son "padres" de los edificios que los conforman, los cuales son,
por su parte, "hijos" de los barrios y "padres" de los edificios y así
sucesivamente.
Un nodo "padre" puede tener cualquier número de "hijos". Cuando un grupo
se encuentra alojado dentro de un grupo de mayor tamaño, se dice que
este primer grupo está "anidado" ("nested") dentro del otro. Utilizando
una vez más el ejemplo arquitectónico anteriormente descrito podemos
decir que los barrios se encuentran anidados en el pueblo, los edificios
anidados en los barrios y así sucesivamente.
-------------------------------------------------------------------------
6.9- Nodos COMUNES. Consideraciones / Ejemplos.
-------------------------------------------------------------------------
Seguidamente se comentan aqui los siguientes nodos:
--> Nodos AUDIOCLIP, MOVIETEXTURE y TIMESENSOR
--> Nodo SOUND
--> Nodos DIRECTIONALLIGHT, POINTLIGHT, SPOTLIGHT
--> Nodo SCRIPT
--> Nodo SHAPE
--> Nodo WORLDINFO
--> NODOS AUDIOCLIP, MOVIETEXTURE y TIMESENSOR
------------------------------------------
AudioClip($url, $description, $loop, $pitch, $startTime, $stopTime)
Los nodos AudioClip, MovieTexture y TimeSensor son nodos dependientes de
tiempo que poseen la capacidad de activarse y desactivarse en momentos
predeterminados.Cada uno de estos nodos contiene los campos exposeFields,
startTime, stopTime y loop y el eventOut isActive. Los valores de
exposedFields son utilizados para determinar cuanto el nodo contenedor se
hallara activo o inactivo. Tambien, bajo ciertas condiciones, estos nodos
pueden dejar de sumonistrar eventos a algunos de sus exposedFields.
- El nodo AudioClip describe una fuente de sonido y y puede ser espe-
cificado como el valor del campo fuente en un nodo Sound.
- El nodo MovieTexture los atributos de mapeo de texturas y puede ser
utilizado como el valor del campo texture de un nodo Appearance. Cuando
un fichero de cine conteniendo audio es utilizado, el nodo MovieTexture
especifica sonido que puede ser que puede ser reproducido cuando el nodo
es utilizado como valor del campo source del nodo Sound.
- El nodo TimeSensor puede ser iniciado y detenido en una fecha y
tiempo especifico al suministrar tiempos absolutos a sus campos
StartTime y StopTime. Utilizando estos campos uno puede activar y apagar
el sensor de tiempo iniciando y deteniendo cualquier animacion a la que
el sensor se encuentre conectado.
--> NODO SOUND (Nodo para "Sonido")
-------------------------------
Sound($source, $location, $direction, $intensity, $maxFront,
$maxBack, $minFront, $minBack, $priority, $spatialize)
El nodo Sound describe el posicionamiento y la representacion espacial de
un sonido en una escena VRML. El sonido puede hallarse ubicado en un
punto determinado y emitir sonido segun patrones esfericos o
elipsoidales. Tambien puede ser utilizado como un sonido ambiental que
se extingue a una determinada distancia del nodo de sonido.
Adicionalmente, el nodo Sound tambien permite la creacion de un sonido
ambiental de fondo a traves del manejo de sus campos.
Ejemplo 1. Acceder a:
http://holodeck.st.usm.edu/classes/vrml20/unix/ch24/24fig04.htm
Ejemplo 2. Acceder a:
http://holodeck.st.usm.edu/classes/vrml20/unix/ch24/24fig06.htm
Ejemplo 3. Acceder a:
http://holodeck.st.usm.edu/classes/vrml20/unix/ch24/24fig07.htm
--> NODOS DIRECTIONALLIGHT, POINTLIGHT, SPOTLIGHT (Nodos de Iluminación)
--------------------------------------------------------------------
En general, los nodos de forma son iluminados por la suma de todas las
luces del mundo virtual que puedan afectarlos. Esto incluye la contribu-
cion de, ambas, la iluminación proveniente de fuentes directas y aquella
que procede del ambiente. La iluminacion ambiental resulta de la disper-
sion y la reflexion de luz proveniente de iluminacion directa.La cantidad
de luz ambiental es asociada con las luces individuales en la escena.
Esto constituye una aproximacion gruesa de como realmente ocurre la
reflexion ambiental en la naturaleza.
Todo nodo de iluminacion contiene una intensidad, un color y un campo
denominado ambientIntensity. El campo de intensidad especifica la lumino-
sidad de la emision directa de luz mientras que el campo ambientIntensity
especifica la intensidad de la emision ambiental de luz. La intensidad de
luz puede variar de 0.0 (cero intensidad) a 1.0 (full intensidad). El
campo de color especifica las propiedades de color espectral de la
emision de luz, como valor RBG en el rango de 0.0 a 1.0.
La LUZ DIRECCIONAL (DirectionalLight) ilumina solo los objetos descen-
dientes del nodo de agrupacion "padre".
DirectionalLight($direction, $intensity, $ambientIntensity, $color, $on)
La LUZ PUNTUAL (PointLight) y la LUZ DE REFLECTOR (SpotLight) iluminan
todos aquellos objetos que caen dentro de su volumen de influencia. Asi,
mientras PointLight define su volumen de influencia como la esfera
centrada en el punto emisor (definida por un radio), SpotLight define este
volumen de influencia como un angulo solido definido mediante un radio y
un angulo de corte ("cutoff angle")..
PointLight($location, $intensity, $ambientIntensity, $color, $on)
SpotLight($location, $direction, $intensity, $color, $on)
Ejemplo 1.PointLight. Acceder a :
http://holodeck.st.usm.edu/classes/vrml20/unix/ch20/20fig06a.htm
Ejemplo 2.DirectionalLight. Acceder a :
http://holodeck.st.usm.edu/classes/vrml20/unix/ch20/20fig11b.htm
Ejemplo 3. SpotLight. Acceder a:
http://holodeck.st.usm.edu/classes/vrml20/unix/ch20/20fig15a.htm
Ejemplo 4. iluminacion avanzada. Acceder a:
http://inet1.smat-mtc.com/vrml/vrmlsrbk/toc/ch19.html
--> NODO SCRIPT (Nodo para "Guión")
-------------------------------
El nodo Sript es utilizado para programar el comportamiento de una escena.
Tipicamente, recibe eventos que significan un cambio o una accion del
usuario y contiene un modulo de programa que ejecuta cierto calculo, y
puede originar cambios en otras partes de la escena mediante el envio de
eventos de salida ("output events"). Cada nodo script tiene asociada una
programacion referida mediante el campo url, la cual es ejecutada para
ejecutar la funcion del nodo. Este codigo se identifica bajo el nombre de
"script".
Un nodo Script es activado cuando recibe un evento. En ese momento, el
"browser" ejecuta el programa contenido en el campo url, pasando el
programa a a un interpretador externo si fuera necesario. El programa
puede ejecutar una amplia variedad de acciones:
- enviar eventos que cambien la escena,
- realizacion de calculos,
- comunicacion con servidores en otros puntos de la Internet,
- otras.
Cuando el guion (script) ha sido creado, cualquier inicializacion depen-
diente de lenguaje o definida por el usuario es ejecutada. Cada evento que
puede ser recibido debe ser declarado en el nodo "script" utilizando la
misma sintaxis empleada en una definicion de prototipo.
Los nodos Script permiten tambien al creador de "mundos" insertar logica
en medio de una cascada de eventos.
Ejemplo 1. Acceder a:
http://holodeck.st.usm.edu/classes/vrml20/unix/ch30/30fig01.htm
Ejemplo 2. Acceder a:
http://holodeck.st.usm.edu/classes/vrml20/unix/ch30/30fig05.htm
--> NODO SHAPE (Nodo para "Forma")
------------------------------
Shape($geometry, $appearance)
Se define asi al nodo cuyos campos especifican un conjunto de nodos geo-
metricos y un conjuntos de nodos de propiedad para aplicarlos a la
geometria del mundo.
El nodo Shape posee dos campos: apariencia y geometria, los cuales son
empleados para representacion de objetos en el "mundo" que esta siendo
creado. El campo apariencia ("appearance") especifica un nodo Apariencia
que establece los atributos visuales (p.ej. materiales y texturas) a ser
aplicados a la geometria. De esta forma, un nodo geometrico especificado
es representado mediante la aplicacion de la especificacion contenida en
el nodo de apariencia.
Los nodos geometricos deben ser contenidos por un nodo Shape para poder
aparecer a los ojos del usuario. El nodo Shape contiene exactamente un
nodo geometrico alojado en su campo geometrico.
Ejemplo 1. Acceder a:
http://holodeck.st.usm.edu/classes/vrml20/unix/ch03/03fig02.htm
--> NODO WORLDINFO
-------------
WorldInfo($title, $info)
El nodo WorldInfo contiene informacion acerca del "mundo". Este nodo no
posee efecto sobre la apariencia visual o el comportamiento del mundo. Es
estrictamente destinado a propositos de documentacion. El campo "titulo"
esta destinado a almacenar el nombre o titulo del mundo de forma que el
"browser" pueda presentarlo al usuario en algun lugar de la ventana.
Cualquier otra informacion acerca del mundo puede ser almacenada en el
campo "infofield" (p.ej. autor, copyright e informacion de dominio
publico.
...sigue
|
|