You are on page 1of 32

Realidad Virtual

"Una combinación de diversas tecnologías e interfaces


que permite a uno o más usuarios interactuar, en
tiempo real, con un entorno o mundo dinámico
tridimensional generado por computadora."

Tridimensionalidad Interacción

Navegación Inmersión
VRML es un lenguaje para describir objetos y
mundos 3D interactivos. Puede decirse que más
que un lenguaje de programación es un lenguaje de
modelamiento de escenas tridimensionales
interactivas. VRML permite implementar escenas
estáticas o dinámicas en 3D con posibilidad de
encadenamiento de texto, sonido, imágenes y vídeo.
Nació en 1994 en laboratorios de Sillicon Graphics y
su popularidad creció en los últimos años.
Está diseñado para usarse
sobre Internet, intranets, y
sistemas locales. Los mundos
VRML pueden transmitirse e
inter-relacionarse a través del
WWW y visualizarse mediante
algún navegador o browser
VRML.
VRML ha sido diseñado para satisfacer los siguientes
requerimientos:

Autoría

Composición

Extensión

Capacidad de Implementación

Desempeño

Escalabilidad
• Arquitectura
• Urbanismo
• Biomedicina
• Genética
Aplicaciones • Anatomía
• Geología
• Arte
• Investigación
• Simulación
Requisitos para trabajar con VRML

Un navegador web (con el plugin necesario) o un visualizador


VRML.
Para editar el código un editor de texto plano cualquiera, los
archivos VRML tienen la extensión .wrl y .wrz (código VRML
comprimido con GZIP).

Cabecera
Para que un navegador pueda identificar que un archivo
contiene código VRML, este debe contener en la primera línea:

#VRML v1.0 ascii Para la primera versión


#VRML v2.0 utf8. Para la segunda versión
CONCEPTOS
BASICOS
Nodos
Son los objetos en nuestro mundo virtual. También pueden
contener otros nodos (se anidan).

Campos
Contenidos dentro de los nodos (propiedades de los objetos).
Tienen un tipo de dato asociado.

Eventos
Pensados como mensajes que circulan entre nodos permitiendo
la variación de sus parámetros.

Nombres
Sensible al cambio de mayúsculas a minúsculas. Los nodos
comienzan con MAYUSCULA y los campos con minúscula.
Medidas
Se utilizan los metros para un mundo VRML, en lo que a
ángulos se refiere, se utilizan los radianes. El tiempo se mide en
segundos y los colores con RGB.

Primitivas
Son objetos predefinidos. Utilizamos el nodo Shape.
Encontramos cubos, esferas, cilindros y conos. Varían su
definición según los valores asignados a sus respectivos
campos. Ejemplo 1: un cubo

Shape
{
geometry Box {size 4 3 5}
}
La definición de un nodo primitivo no implica su visualización.
Para definir la apariencia de la primitiva se debe definir un color
y/o una textura.

Color
Lo definimos con el campo material, utilizando un nodo Material.
Este último posee campos como:

diffuseColor: Es el color del objeto (RGB)


emissiveColor: Color de brillo emitido por el objeto (RGB)
specularColor: Es el color que refleja un objeto (RGB)
ambientIntensity: Cantidad de luz ambiental que reflejará el
objeto (1 solo valor)
transparency: Nivel de transparencia del objeto (1 solo
valor)
shininess: Intensidad del brillo del objeto (1 solo valor)
Shape{
appearance Appearance{
material Material{
diffuseColor color_RGB
emissiveColor color_RGB
specularColor color_RGB
ambientIntensity valor
transparency valor
shininess valor
}
}
geometry ...
}
PRIMITIVAS
Son objetos predefinidos. Debemos utilizar el nodo
Shape:
Shape
{
geometry Box {size 4 4 4}
}

Shape
{
geometry Cone {
bottomRadius 3
height 2
}
}
Shape
{
geometry Sphere {radius 5}
}

Shape
{
geometry Cylinder{
radius 5
height 5
}
}
TRANSFORMACIONES
Transform

Nodo que permite situar, rotar y escalar los objetos. Para


ello emplea los campos (fields):


translation

rotation

scale

Todas las transformaciones pueden realizarse en el mismo


nodo.
Traslación
Este campo permite desplazar el objeto respecto a los
ejes X, Y y Z.

Transform
{
translation 10 0 0
children
[
Shape
{
geometry Box {size 4 3 5}
appearance Appearance
{
material Material{ diffuseColor 1 0 0}
}
}
]
}
Rotación
Field que permite rotar el objeto respecto a los 3 ejes en
radianes

Transform
{
translation 10 0 0
rotation 0 1 0 0.5236 # equivalente a 30 grados
children
[
Shape
{
geometry Box {size 4 3 5}
appearance Appearance
{
material Material{ diffuseColor 1 0 0}
}
}
]
Escala
Permite agrandar o reducir el tamaño del objeto según sus
ejes.

Transform
{
scale 2 1 1 # escalado no uniforme
children
[
Shape
{
geometry Box {size 4 3 5}
appearance Appearance
{
material Material{ diffuseColor 1 0 0}
}
}
]
}
TEXTO
Permite posicionar en el mundo virtual una cadena de
texto. Utilizamos el nodo Text que tiene los siguientes
campos: string, fontStyle, maxExtent, lenght.

ENLACES
El nodo Anchor crea un grupo especial ya que
seleccionando cualquier objeto perteneciente a dicho
grupo se salta hacia otro mundo virtual o pagina Web
(equivalentes a los enlaces existentes en las páginas
Web realizadas mediante HTML). Cualquier objeto o
grupo de objetos se puede convertir en un enlace.
FORMAS COMPLEJAS
IndexedFaceSet
Las primitivas son muy restrictivas en cuanto a
formas. Con esta estructura podemos definis
geometrias arbitrariamente. Este modelo permite
definir un objeto 3D apartir de sus vertices y caras.

Restricciones:
(1) Los vértices tiene que ser consecutivos siguiendo el
perímetro de la cara.
(2) Los vértices tiene que ir en orden antihorario
mirando a la cara desde el exterior del objeto.
(3) El último vértice de cada cara se enlaza con el
primero (cerrando el circuito).
COLORES EN FORMAS COMPLEJAS

El field colorPerVertex dice si los colores se asignarán a


los vértices o a las caras del objeto (valor booleano).
En el field color se coloca una lista de colores a través
de un nodo Color.

DEF
Permite definir nodos de un objeto que se utilizarán en
repetidas oportunidades. Le da un nombre al nodo.

USE
Posibilita la utilización de los nodos definidos
anteriormente.
OBJETOS ALMACENADOS EN FICHEROS
En ocasiones conviene almacenar cada objeto en su pripio
fichero. Por ejemplo se deseara modelar una habitación, los
diferentes elementos que van a aparecer dentro de ella:
paredes, puertas, mesas, sillas, cama, etc, son objetos
independientes entre si pero que se engloban dentro de un
mismo espacio y, que además, pueden aparecer varias
veces en el diseño de todo mundo virtual.
Se utiliza el nodo Inline que permitie crear un grupo en
donde los hijos, almacenados en distintos ficheros VRML, son
recuperados indicando su dirección URL.

Inline
{
url "mundo-virtual.wrl"
}
EVENTOS
Mensaje que enviado por un objeto y recibido por
otro.

Routing
ROUTE es el comando que permite enlazar un
eventOut con un eventIn.

Interpoladores
Nodos que nos permiten hacer algo en un intervalo
determinado. Tipos:

ColorInterpolator

CoordinateInterpolator

OrientationInterpolator

PositionInterpolator
SENSORES
Nodo detector que reacciona ante estímulos.

Sensor de Tiempo
TimeSensor es un reloj que podemos utilizar a nuestro
gusto. Se basa en el reloj de tiempo real del sistema.

Sensor de Proximidad
ProximitySensor es un nodo que detecta la proximidad
del usuario respecto a un objeto.

Sensor de Tacto
TouchSensor permite detectar cuando el usuario hace
click sobre algún objeto.
Texturas con Imágenes

Serie de pixeles que se mapean en nuestro objeto


(imagen jpg, jpeg, gif ó png). Esto se hace con el nodo
ImageTexture.

Shape
{
geometry Box {size 4 3 5}
appearance Appearance
{
material Material{ diffuseColor 1 0 0}
texture ImageTexture {url “imagen.jpg"}
}
}
Textura con Videos

El nodo MovieTexture se puede utilizar para que un objeto


tenga un video como textura.

Shape {
appearance Appearance {
texture MovieTexture {
url "ejemplo.mpg"
speed 1
loop FALSE
}
}
geometry ...
}
Comportamiento en Mundos Virtuales

El término comportamiento se refiere a la modificación


del estado de los objetos dentro de un escenario virtual,
en respuesta a alguna acción del usuario o al cambio de
algún otro objeto en la escena. Este cambio de estado
ocurre cuando cambia alguno de los atributos del objeto,
por ejemplo la posición (translación), el tamaño (escala),
la orientación (rotación) o su apariencia.
En VRML, el comportamiento se controla (lleva a cabo)
mediante eventos. Un evento es la generación de un
mensaje y se envía de un nodo a otro. Algunos nodos
VRML generan eventos en respuesta a cambios en el
ambiente o interacción del usuario.
Comportamiento Simple
Es aquel en el cual los cambios en el estado de los objetos
dependen exclusivamente de eventos internos generados por
nodos descritos dentro del programa VRML, sin la
intervención de ningún lenguaje ajeno a VRML.

Comportamiento Complejo
Es aquel en el cual los cambios en el estado de los objetos
dependen de un programa escrito en un lenguaje ajeno a
VRML.
Los cambios dinámicos en la escena pueden ser estimulados
por las acciones programadas en un script, paso de mensajes,
comandos del usuario o protocolos de comportamiento. Esto
brinda la posibilidad de interacción con otros lenguajes
(específicamente los lenguajes Java y Javascript). Para ello se
emplea el nodo Script. De esta manera es posible asignar
Soporte de VRML para Java

Java añade todas las posibilidades de programación, además


de brindar un acceso casi transparente a la red, haciendo a
VRML completamente funcional y portable. La característica
más importante de Java para ser usado como lenguaje de
implementación de los scripts es su independencia de
plataforma, y ello es congruente con la filosofía de VRML y la
de WWW.

Se utiliza el API para este lenguaje, en donde se definen


todas las clases para acceder a los nodos de VRML Las
interfaces entre VRML y Java se llevan a cabo por medio del
nodo Script, un manejador de eventos, convención para
nombres DEF/USE, y ROUTEs, conectando los nodos y los
campos en la escena.
Muchas Gracias !!!

You might also like