CURSO VRML |
|
entrega 14
-------------------------------------------------------------------------
5.12- NODOS DE CAMARA- CONSIDERACIONES
Nodos: OrthographicCamera, PerspectiveCamera
-------------------------------------------------------------------------
--> Nodo PERSPECTIVE CAMERA
Este nodo simula la forma en que vemos el mundo real utilizando el
principio de perspectiva que hace que los objetos mas cercanos aparezcan
de mayor tamano que los que se encuentran mas lejanos.
PUNTOS DE VISTA
A los efectos del presente curso, un PUNTO DE VISTA es aquella posicion
exacta desde la que se contempla un mumdo VRML y que ha sido definida en
el grafo de ESCENA de dicho mundo. Hasta ahora nos hemos apoyado en la
opcion de defecto provista por el VRML 1.0. Opcion que generalmente se
define como "Vista de Entrada". La vista de entrada es la posicion desde
la cual contemplamos al mundo cuando este es visualizado graficamente
por el browser si no se ha definido previamente un punto de vista. Sin
embargo es posible, y a menudo deseable, incorporar otros puntos de vista
que auxilien al visitante de un mundo virtual en la compleja tarea (y el
subsecuente consumo de tiempo de recorrer y visualizar un mundo virtual).
Para ello nos referiremos al presente nodo.
Para visualizar un mundo virtual que dependa solo de su opcion de
defecto, desde una dterminada posicion es necesario navegar manualmente
hasta alcanzar la misma. Esto significa un procedimiento que puede
resultar lento y complejo. Lo que nos permite la insercion del nodo
PERSPECTIVE CAMARA es la posibilidad de "saltar" a un punto de vista
predeterminado y convenientemente dispuesto sin tener que apoyarnos en un
engorroso procedimiento manual.
Para resolver esta situacion, el VRML utiliza los denominados nodos de
camara OrthographicCamera y PerspectiveCamera que en cierto sentido
podrian considerarse nodos de propiedad dado que 1) aparentan transformar
las formas que intervienen en una escena y 2) algunos de sus parametros
se comportan como un lente de efectos especiales creando la ilusion de
distorsion de la imagen aun despues que el participante ha navegado mas
alla de la posicion adoptada para la camara.
En la practica, de los dos nodos mencionados, solo el nodo PERSPECTIVE
CAMARA es comunmente soportado por los visualizadores (browsers)
disponibles para el VRML 1.0.
La sintaxis general del PerspectiveCamera es la siguiente:
#VRML V1.0 ascii
Separator {
PerspectiveCamera {
position 0 0 1
orientation 0 0 1 0
focalDistance 5
heightAngle 0.785398
}
}
PROPIEDADES
El nodo PerspectiveCamera posee tres campos basicos Los primeros dos
resultan obvios: La POSCION y la ORIENTACION de la camara. La posicion
esta representada por un conjunto de tres coordenadas, mientras que la
orientacion se logra a traves de un angulo vertical expresado en
radianes. El tercer campo es aquel correspon diente a DISTANCIA FOCAL
("focalDistance"), y el cual esta representado por la distancia que
existe entre la camara, siguiendo la directriz del punto de enfoque,
hasta encontrar el denominado "punto focal" empleado por muchos
browsers para proveer un punto con respecto al cual la camara puede
rotar.
Mediante este nodo podemos especificar nuevas ubicaciones para la camara
que pueden ser interpretadas por ciertos browsers. Si utilizamos una sola
posicion estaremos especificando unicamente el punto en el cual el
participante inicia su recorrido.Por ejemplo, imaginemos que posicionamos
la camara en el sitio (0, 30, 240) y mirando en la direccion -z (Es
decir, mirando hacia la pantalla del computador) con una distancia focal
de 5 y un angulo de altura equivalente a .785 radianes. En ese caso el
programa que utilizaremos como ejemplo para describir un determinado
mundo virtual sera, refiriendonos a aplicaciones anteriormente vistas:
#VRML V1.0 ascii
Separator {
PerspectiveCamera {
position 0 30 240
orientation 0 0 -1 0
focalDistance 5
heightAngle .785
} #PerspectiveCamera
Info {
string "Este es un mundo chevere!!"
} #Info
Material {
diffuseColor 1 0 1
shininess 0.2
transparency 0
} #Material
MaterialBinding {
value DEFAULT
} #MaterialBinding
FontStyle {
size 15
family TYPEWRITER
style NONE
} #FontStyle
AsciiText {
string "Este es un mundo chevere!"
spacing 1
justification CENTER
width 0
} #AsciiText
DEF Cone1 Separator {
Translation {
translation 0 30 0
} #Translation
Cone {
parts ALL
bottomRadius 15
height 30
} #Cone
} #Cone1 Separator
DEF Cube1 Separator {
Transform {
rotation 0 1 0 .7
} #Transform
Translation {
translation -45 30 0
} #Translation
Cube {
width 30
height 30
depth 30
} #Cube
} #Cube1 Separator
DEF Cylinder1 Separator {
Translation {
translation 45 30 0
} #Translation
Cylinder {
parts ALL
radius 15
height 30
} #Cylinder
} #Cylinder1 Separator
DEF Sphere1 Separator {
Texture2 {
filename "wood4.jpg"
}
Translation {
translation 0 75 0
} #Translation
Sphere {
radius 15
}#Sphere
} #Sphere1 Separator
DEF FaceDiamond Separator {
DEF DiamondCoords Coordinate3 {
point [
0 75 25,
12.5 62.5 12.5,
12.5 62.5 37.5,
-12.5 62.5 37.5,
-12.5 62.5 12.5,
0 50 25,
]
} #DiamondCoords Coordinate3
USE DiamondCoords
IndexedFaceSet {
coordIndex [
0, 1, 2, -1,
0, 1, 4, -1,
0, 4, 3, -1,
0, 3, 2, -1,
5, 1, 2, -1,
5, 1, 4, -1,
5, 4, 3, -1,
5, 3, 2, -1,
]
} #IndexedFaceSet
} #FaceDiamond Separator
DEF LineDiamond Separator {
Translation {
translation 0 75 0
} #Translation
USE DiamondCoords
IndexedLineSet {
coordIndex [
0, 1, -1,
0, 2, -1,
0, 3, -1,
0, 4, -1,
4, 1, -1,
1, 2, -1,
2, 3, -1,
3, 4, -1,
5, 1, -1,
5, 2, -1,
5, 3, -1,
5, 4, -1
]
} #IndexedLineSet
} #DiamondLine Separator
} #Separator
Aquellos participantes del curso que deseen profundizar en el uso de esta
opcion deberan exlorar el empleo conjunto de los nodos SWITCH y LOD
(Level of Detail) no contemplados en el presente curso introductorio y
que permitiran la concatenacion de primitivas para producir el efecto de
diferentas niveles de detalle para una determinada escena.
...sigue
|
|