Free Web Hosting Provider - Web Hosting - E-commerce - High Speed Internet - Free Web Page
Search the Web








CURSO VRML
por el arquitecto y profesor
Gonzalo Vélez Jahn
(ARQUITECTURA-L)



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


Siguiente entrega.
Indice del CURSO VRML.