Nodos, Campos y Eventos.

Tutorial de VRML97

Los conceptos que se dan a continuación sirven para introducir al lector y en ningún caso se pretende que sean totalmente entendidos sin la práctica que se da en los capítulos siguientes. Aquí se introducen para que el lector tenga una noción cuando los encuentre más adelante y pueda volver aquí como referencia.

Nodos (Nodes)

En un mundo de VRML97 lo que se define es simplemente un grupo de objetos (en el sentido de orientación a objeto). Estos objetos pueden contener geometría 3D, imágenes, colores, etc. y en VRML97 reciben el nombre de nodes (nodos).

Estos nodes tienen algunas características variables que se pueden definir en cada caso mediante unos fields (campos), los cuales funcionan a modo de parámetros.

Ejemplo: Un node (objeto) podría ser un cubo genérico, pero si nosotros deseamos definir un cubo, seguramente lo querremos de un tamaño concreto. Así, si el cubo que queremos ha de ser de 1 unidad por lado (es decir, 1 de ancho, 1 de alto y 1 de fondo), lo que haremos será definir un node Box (caja) y definir el field size (tamaño) especificando que queremos 1 de ancho, 1 de alto y 1 de fondo de la siguient manera:

        Box{
                size 1 1 1  # Dimensiones en X, Y y Z
        }

Campos (Fields)

Los fields son univaluados cuando solo se necesita un valor o bien multivaluados cuando se requiere una lista de valores.

Los fields tienen un tipo de datos asociado, es decir, cada field puede tener datos de tan solo un cierto tipo concreto de datos. Por ejemplo, el field size es de tipo vector 3D en coma flotante y por tanto se dice que es de tipo SFVec3f (Single-valued Field Vector 3D floating point). (Nota: Es importante no caer en el error de pensar que es un field multivaluado, ya que no es una lista de tres valores en coma flotante, si no que es un vector de tres dimensiones). Para ver la lista de todos los tipos de datos, acceder a: Field and Event Reference.

Un node puede ser un parámetro de otro node y por lo tanto puede ser un field. Esto se da cuando un node es un agrupador de nodes. Un node agrupador sirve para que varios objetos tengan unas mismas propiedades, por ejemplo: mismas transformaciones geométricas, mismo comportamiento, etc.

Eventos (Events)

Los eventos (events) pueden ser pensados como mensajes que van circulando entre los nodes y que hacen que se puedan variar los parámetros de un objeto durante el tiempo de navegación y ejecución del entorno virtual. En realidad los events son unos fields especiales.

Por ejemplo, supongamos que queremos tener un molino de viento en nuestro entorno y las aspas deben girar. Lo que hace falta es poder generar rotaciones incrementales de las aspas del molino cada cierto tiempo. Con un field esto no es posible ya que el valor que se da al field queda fijado de forma estática para siempre (a menos que se edite el archivo de código VRML). Por esta razón, el VRML define que el valor de una rotación de una transformación en lugar de ser un field sea un event y así su valor puede variar a lo largo del tiempo.

Los events pueden ser de entrada, eventIn, de salida, eventOut o de entrada y salida, exposedField.

Los eventIn son fields que aceptan eventos dirigidos a ellos.

Los eventOut son fields que pueden enviar eventos a eventIn y a exposedField de otros nodes.

Los exposedField son fields que pueden enviar eventos a eventIn y exposedField de otros nodes y también aceptan eventos dirigidos a ellos.

Nombres

El VRML97 es sensible al cambio de mayúsculas a minúsculas y por eso se debe ir con cuidado al escribir el código y al definir los nombres de los objetos y campos.

Por convención se acostumbra a respetar las siguientes reglas en los nombres de nodes, fields y events, y por lo tanto se espera que los usuarios también lo respeten al definir los suyos.





| Siguiente >|