Documentos de Académico
Documentos de Profesional
Documentos de Cultura
INTRODUCCIÓN:
En este tutorial de VRML mostraremos una introducción al lenguaje VRML, y
daremos un paso más mostrando algunas de las instrucciones básicas para poder
construir mundos en este lenguaje. Al final del tutorial se deberán tener los
conocimientos básicos para para poder crear un mundo más o menos complejo
utilizando el lenguaje modelado VRML.
Un editor de texto: podremos trabajar con un editor de texto cualquiera, que nos
permita guardar ficheros con una determinada extensión. Será en los editores donde
escribiremos el código correspondiente al mundo VRML. Existen, sin embargo
unos editores de texto que facilitan la tarea de crear código en VRML. Existen
versiones comerciales así como versiones de demostración de tales editores. Éste es
el caso del editor VRMLPad (la última versión de este editor es la 2.0).
Un navegador de Internet, como el Netscape o Internet Explorer: será en la ventana
de este explorador donde podremos visualizar nuestro mundo.
Un navegador VRML que, usando Netscape o Internet Explorer, actúa como un
plugin. Sin este navegador VRML no podremos visualizar nuestros objetos en
lenguaje modelado VRML. Se pueden bajar de Internet navegadores VRML como
el CosmoPlayer o Cortona. Se recomienda no instalar los dos navegadores VRML
porque pueden surgir problemas.
La extensión de nuestros ficheros fuente deberá ser una de las siguientes:
2. PRELIMINARES:
Los ángulos en VRML se miden en radianes.
Para convertir de grados a radianes, sólo hay que multiplicar el número de
grados por PI/180.
cantidad de rojo, verde y azul. Cada cantidad va desde 0.0 hasta 1.0.
0 0 0 Negro
0 0 1
Azul
0 1 0 Verde
0 1 1 Cyan
1 0 0 Rojo
1 0 1 Magenta
1 1 0 Amarillo
1 1 1 Blanco
{ nodos }
Cualquier otra línea que lleve '#' delante será ignorada (comentarios).
4. LOS NODOS:
4. Los nodos:
4.1 Nodo Group.
4.2 Nodo WorldInfo.
4.3 Nodo Shape.
4.4 Nodo Transform.
4.5 Nodo NavigationInfo.
Concepto:
Group {
children []
}
El campo children del nodo Group incluye los otros nodos dentro de él.
WorldInfo {
info ["" ... ""] # Esto es un conjunto de cadenas de caracteres
}
Aquí tenemos un mundo sencillo. Tiene únicamente un nodo (Shape) que
define una caja. Esta caja será visible al cargar el código VRML en nuestro
navegador.
Nota: siempre que dejemos algún campo por insertar, VRML tomará los valores
por defecto.
emissiveColor 1 0 0}
}
}
4.4 Nodo transform:
Ahora vamos a definir todos los campos del nodo Transform. Éstos son:
· addChildren: permite anadir un hijo (children).
· removeChildren: elimina un hijo (children). · center: punto que se
toma para realizar las rotaciones y/o escalados.
· children: permite crear un nuevo hijo (children).
· rotation: contiene cuatro parámetros. El primero de ellos es el ángulo
de rotación, y de los tres siguientes, el que tenga un 1 será sobre el
que se aplique la rotación.
Transform {
translation dx dy dz
children [
subnodo1{}
subnodo2{}
... ]
}
Otro de los nodos raíz (es decir,que no dependen de otros) es el NavigationInfo.
El nodo NavigationInfo tiene los siguientes campos:
· headlight: Contiene un valor booleano. Si tiene TRUE quiere decir que miremos
por
donde miremos en nuestro mundo, siempre va a haber una luz que nos permite ver los
objetos. Si está a false esto no ocurre.
· visibilityLimit: Contiene un valor decimal que indica la distancia máxima donde
el
usuario puede dibujar objetos en su mundo. A una distancia superior ningún objeto
podrá
ser dibujado.
· speed: número decimal que indica la velocidad de movimiento del observador
en el
mundo. Por ejemplo, si ponemos un 2.0, el usuario podrá moverse el doble de rápido
que lo normal.
· type: forma de moverse el usuario en el mundo. Este campo puede contener uno
de los
siguientes Strings:
⃗ “WALK”: Caminar normalmente.
⃗ “FLY”: Moverse normalmente, como volando
⃗ “EXAMINE”: El usuario no puede moverse, pero sí rotar sobre sí mismo.
⃗ “NONE”: Sin control de movimiento.
· avatarSize: permite definir el espacio que ocupa el usuario el en mundo, es
decir, su
altura y grosor. Viene determinado por tres campos que definen un cilindro: radio, altura
de los ojos y altura de las rodillas.
Ejemplo:
NavigationInfo {
headlight FALSE
type "WALK"
}
∎ Nota: Reutilización de nodos
Para instanciar nodos utilizamos DEF y USE
...
...