En VRML97 existe la posibilidad de definir puntos de vista diversos de forma que podemos mostrar al usuario aquellas partes que nos parecen importantes del mundo que hemos definido. El usuario podrá continuar navegando con total libertad, poro si definimos una série de puntos de interes, él podrá ir diréctamente a estos sin porderse ni dudar.
La forma de definir estos puntos de vista o puntos de interes, es mediante el node Viewpoint.
|
Ejemplo1: Definición
de dos puntos de vista de un mundo sencillo.
Viewpoint {
position 0 0 10
orientation 0 0 1 0
description "PVpor_Defecto"
}
Viewpoint {
position 10 0 10
orientation 0 1 0 0.7854 # 45 grados en radianes
description "PV_tres_cuartos"
}
Shape {
appearance Appearance { material Material { diffuseColor 1 0.6 0 } }
geometry Sphere { radius 2 }
}
Transform {
translation 0 0 -8
children
Shape {
appearance Appearance { material Material { diffuseColor 0.4 0 1 } }
geometry Sphere { radius 2 }
}
}
|
Para escoger otro punto de vista, se utiliza le utilidad que el browser normalmente tiene disponible. El primer punto de vista que se define en el código, pasa a ser el punto de vista de arranque del mundo cuando se abre en un browser. (También es usual poder pasar de un punto de vista a otro con las teclas de avanzar y retroceder página del teclado).
Ahora si, examinemos las partes. El primer node Viewpoint define un punto de vista idéntico al que ya se establece por defecto al entrar al browser. Esto nos sirve para poder volver a la posición inicial sin tener que volver a cargar el entorno. Los valores por defecto son pués, situar el observador sobre el eje Z positivo a 10 unidades del origen y mirando en dirección del eje Z negativo.
La forma en que funciona el field orientation es bastante incómoda ya que no utiliza el modelo conocido como "look at" ("mira a..") sino que utiliza un vector como eje de rotación y un ángulo de rotación para desviar el vector director por defecto de la cámara: el [0 0 -1]. En el caso del punto de vista por defecto, el eje de rotación definido (los tres primeros valores del field orientation), es el eje Z. pero esto en realidad es indiferente ya que el àngulo de rotación (el último valor del field orientation) es, de hecho, cero grados. Por lo tanto no hay desviación.
En el segundo punto de vista se entenderán mejor los conceptos. Aquí definimos la posición del observador a 10 unidades positivas en el eje X y 10 unidades positivas en el eje Z. Lo que queremos conseguir es una vista tres cuartos de escena y por lo tanto queremos mirar en dirección al origen de coordenadas. Para hacer esto, debemos desviar el vector director por defecto de la cámara, que es el [0 0 -1], es decir, el que mira en la dirección del eje Z negativo. Para desviarlo hacia el origen debemos rotar 45 grados respecto al eje Y (local del punto de vista), tal y com muestra la figura:

Así como en una cámara se puede cambiar la lente para tener un
ángulo de visión más o menos amplio, el modelo de punto
de vista de VRML97 permite variar este ángulo de visión. El ángulo
que se varía es el horitzontal y el vertical se adapta automáticamente
según las proporciones de la ventana del browser. Veamos un ejemplo con
tres puntos de vista simulando tres tipos de lentes:
|
Ejemplo2: Definición
de tres puntos de vista de un mundo sencillo.
Viewpoint {
fieldOfView 2.618
description "Gran_Angular"
}
Viewpoint {
fieldOfView 1.3962667
description "80mm"
}
Viewpoint {
fieldOfView 0.31416
description "Telefoto"
}
Shape {
appearance Appearance { material Material { diffuseColor 1 0.6 0 } }
geometry Box { size 30 10 2 }
}
Shape {
appearance Appearance { material Material { diffuseColor 0.3 0 1 } }
geometry Box { size 8 5 5 }
}
Shape {
appearance Appearance { material Material { diffuseColor 0 1 0.5 } }
geometry Box { size 1 1 8 }
}
|
Hace falta tener claro que al cambiar de punto de vista, la posición del observador no se modifica, es decir, el observador no se mueve ni hacia delante ni atrás, sio que es como si tuviese un zoom el cual utiliza para ampliar o reducir lo que cae en su rango de visión.
Otra propiedad de los puntos de vista es la de pasar de uno a otro de forma
suave o saltando directamente . Trabajando con el Cosmo Player (y en general
con todos los browsers) el paso de uno a otro de manera suave es la forma por
defecto. Si se desea saltar de golpe, debemos modificar el field jump
y ponerlo a TRUE. Si de manera explícita se quiere saltar
de manera suave, debemos modificar el field jump y ponerlo a FALSE.