Información de Navegación y Fondos

Tutorial de VRML97

Este módulo resulta un poco un cajón de sastre para terminar de ver las herramientas más útiles del VRML97.

Información de Navegación

La información de navegación son aquellas características del browser que se pueden modificar desde el VRML97. por ejemplo, qué tipo de interfaz de navegación se desea, si se quiere activar la luz de usuario (headlight), la velocidad de desplazamiento del punto de vista, etc. Esta herramienta es muy útil para poder establecer ciertos parámetros del browser sin que lo tenga que hacer el usuario a través del menú. De esta forma podemos personalizar el entorno a nuestra aplicación.

La forma de definir estos parámetros, es mediante el node NavigationInfo. De todas formas, no todas las opciones de los menús del browser están accessibles desde este nodo. Veamos las más importantes:

La luz de usuario o headlight

Esta luz ya la hemos descrito en el módulo sobre Iluminación y vimos que es como si fuera una luz de casco de minero. Esta luz puede interferir en la iluminación que deseamos dar a nuestro entorno y por eso es importante poder-lo apagar ya de entrada. La forma de hacerlo es:

Ejemplo1: Apagar luz de usuario o headlight.

NavigationInfo { headlight FALSE }

Añadiendo esta línea a un entorno, nos aseguramos que controlamos la iluminación.

Interfaz de Navegación

Cuando se navega con un browser de VRML, se puede escoger entre tres modos que listamos a continuación:

Modo examinar objetos o EXAMINE:
con el cual, el efecto es como si el punto de vista se mantiene fijo y son los objetos los que se mueven respecto al punto de vista. Este modo es muy útil, jústamente, para examinar objetos por todos sus costados.
Modo de caminar o WALK:
con el cual, es cláramente el punto de vista el que se mueve, pero limita el movimiento de forma que se mantiene en un plano o bien siguiendo un "terreno". Este modo es útil para emular el movimiento humano o de un vehículo terrestre.
Modo de vuelo o FLY:
con el cual el punto de vista se mueve en todas direcciones sin ninguna restricción.
Modo ningún interfaz o NONE:
con el cual no aparece ningún tablero de controles de navegación. Esto puede ser muy útil si queremos nosotros proveer las herramientas de navegación al usuario.

Todo lo que hay que hacer es escoger la palabra del navegador que queremos utilizar y escribir el siguiente comando:

Ejemplo2: Escoger el tipo de interfície de navegación.

NavigationInfo { type "WALK" }

Velocidad de movimiento dentro del entorno

También puede ser interesante controlar la velocidad con que se desplaza el punto de vista por el espacio en el entorno que hemos diseñado. La velocidad por defecto es 1 y se puede controlar a través de:

Ejemplo3: Establecer la velocidad de movimiento del punto de vista.

NavigationInfo { speed 1.0 }

Donde la cantidad especificada significa metros por segundo (recordad que las unidades en VRML son entendidas como metros).

Fondos

El control de un color de fondo puede ser muy útil en el diseño de un entorno. En VRML97, no solo podemos controlar el color, sino que además podemos definir degradados de "cielo", de "tierra", o bien poner imágenes como si fueran escenografías.

La Esfera del Cielo y la Tierra

Para definir un color sólido o un degradado de fondo, VRML97 define el concepto de esfera (o semiesfera) de cielo (y tierra). El cielo es como si hubiera una esfera de radio infinito que engloba todo el mundo. La tierra es una semiesfera de radio infinito situada boca arriba, que engloba toda la mitad inferior del mundo. Todo esto se define a través del node Background.

En estas esfera y semiesfera, podemos definir un único color, o bien podemos definir que un cierto color corresponde a un cierto ángulo de elevación. Curiosamente, en la esfera del cielo, el ángulo se calcula a partir del punto superior (el "polonorte") que corresponde al ángulo 0º (cero grados) y se va incrementando hasta el punto inferior ("polo sur") al que corresponde el ángulo 180º. En cambio, la semiesfera de la tierra funcieno al revés. La siguiente figura mustra una sección vertical de la esfera del cielo (la externa) y la semiesfera de la tierra (interna).

No es obligatorio definir los dos fondos, la esfera del cielo y la semiesfera de la tierra, sino que se puede escoger definir una u otra, o las dos o ninguna. A continuación veremos un ejemplo en que definimos un solo color de cielo.

Ejemplo4: Definimos un fondo azul uniforme.

Background {
	skyColor [ 0.8 0.8 1 ]
}

Shape { # Objeto de referencia
	geometry Sphere { radius 2 }
	appearance Appearance { material Material { diffuseColor 1 0.8 0 } }
}

En este caso estamos definiendo un solo color de cielo, que aunque no se especifica se asigna al ángulo 0º (cero grados) y el cual el VRML se encarga de distribuir a todo el fondo. El siguiente ejemplo define un degradado de azul obscuro a naranja como si fuese una puesta de sol.

Ejemplo5: Definimos una "puesta de sol".

Background {
	#          0º       22º    45º    60º          75º        85º        90º
	skyAngle [	    0.384, 0.785, 1.047,       1.309,     1.484,     1.5708  ]
	skyColor [ 0 0 0.2, 0 0 1, 0 1 1, 0.75 0.75 1, 0.8 0.8 0, 0.8 0.6 0, 1 0.4 0 ]
	#        azulobscuro azul  cian   azulclaro    amarillo   anaranjado  rojizo
}

Shape { # Objeto de referencia
	geometry Sphere { radius 2 }
	appearance Appearance { material Material { diffuseColor 1 0.8 0 } }
}

Cabe observar que el primer ángulo, el cero (0º), no se incluye en la lista de ángulos. Ya se da por entendido que el primer valor de color corresponde al "polo norte" o ángulo cero.

Como se puede observar, el último color definido (el rojizo), se extiende hasta el polo sur. Esto es debido a que el VRML llena toda la esfera de color y por lo tanto deduce que queremos llenar la parte de la esfera que queda indefinida con el último valor dado.

Debido a estas dos razones, el primer ejemplo de color de fondo uniforme, tan solo define un solo color y ningún ángulo.

Par definir una tierra, se procede de forma análoga, pero en este caso, se empieza por el "polo sur" (que representa cero grados, 0º). Añadamos pues un color de tierra verdoso uniforme a nuestro ejemplo de la puesta de sol:

Ejemplo6: Definimos una "puesta de sol" con tierra verde.

Background {
	#          0º       22º    45º    60º          75º        85º        90º
	skyAngle [	    0.384, 0.785, 1.047,       1.309,     1.484,     1.5708  ]
	skyColor [ 0 0 0.2, 0 0 1, 0 1 1, 0.75 0.75 1, 0.8 0.8 0, 0.8 0.6 0, 1 0.4 0 ]
# azulobscuro azul cian azulclaro amarillo anaranjado rojizo # 0º 90º groundAngle [ 1.5708 ] groundColor [ 0.2 1 0.4, 0.2 1 0.4 ] } Shape { # Objeto de referencia geometry Sphere { radius 2 } appearance Appearance { material Material { diffuseColor 1 0.8 0 } } }

Observad que para la tierra, el funcionamiento es diferente que para el cielo. En este caso, el VRML97 deduce que debe poner el "color transparente" entre el último ángulo definido y el "polo norte". por lo tanto, si solo definimos un color y ningún ángulo, no nos muestra nada, por qué entre el último ángulo que hemos definido (el cero) y el "polo norte" él no pone nada. Por esta razón tenemos que repetir el color verde de la tierra, para la posición cero y para la posición 90º.

Imágenes de Escenografía

Para definir un fondo, el VRML97 también permite definir unas imágenes que se mapean sobre las paredes internas de un cubo de tamaño teóricamente infinito que rodean todo el entorno: Así pues, hemos de definir 6 imágenes para cubrir las paredes: frontal, posterior, derecha, izquierda, superior e inferior del cubo. A continuación podemos ver un ejemplo donde las imágenes no forman un fondo uniforme, pero que permiten distinguir bien las seis superficies.

Ejemplo7: Definimos un fondo con seis imágenes.

Background {
	frontUrl "fons1.gif"
	backUrl "fons2.gif"
	topUrl "fons3.gif"
	bottomUrl "fons4.gif"
	rightUrl "fons5.gif"
	leftUrl "fons6.gif"
}

Shape { # Objeto de referencia
	geometry Sphere { radius 2 }
	appearance Appearance { material Material { diffuseColor 1 0.8 0 } }
}



< Anterior | Menú ^