Professional Documents
Culture Documents
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
Cabecera
Para que un navegador pueda identificar que un archivo
contiene código VRML, este debe contener en la primera línea:
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:
Shape
{
geometry Cone {
bottomRadius 3
height 2
}
}
Shape
{
geometry Sphere {radius 5}
}
Shape
{
geometry Cylinder{
radius 5
height 5
}
}
TRANSFORMACIONES
Transform
●
translation
●
rotation
●
scale
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
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
Shape
{
geometry Box {size 4 3 5}
appearance Appearance
{
material Material{ diffuseColor 1 0 0}
texture ImageTexture {url “imagen.jpg"}
}
}
Textura con Videos
Shape {
appearance Appearance {
texture MovieTexture {
url "ejemplo.mpg"
speed 1
loop FALSE
}
}
geometry ...
}
Comportamiento en Mundos Virtuales
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