Vous êtes sur la page 1sur 49

Virtual Reality Modeling Languaje

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Desarrollo y edición.
Ing. Gerardo Nava Hernández
gerexo@hotmail.com
2009-2010

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

ÍNDICE
1 ALGO DE HISTORIA
2 VRML
INSTALACION
PAQUETES
WHITEDUNE
3 INTRODUCCIÓN BÁSICA DEL LENGUAJE
FORMATO Y CODIGO FUENTE
CUERPO DE PROGRAMA
4 DESCRIPCION
PRIMITIVAS GEOMÉTRICAS
SHAPE
SIZE
5 MATERIALES - MATERIAL
APPEARANCE
DIFFUSECOLOR
EMISSIVECOLOR
SPECULARCOLOR
AMBIENTINTENSITY
SHININESS
TRANSPARENCY
IMAGETEXTURE
6 TRANFORMACIONES - TRANSFORM
TRANSLATION
ROTATION
SCALE
7 ILUMINACIÓN
POINTLINGHT
DIRECTIONALLIGHT
SPOTLIGHT
8 GEOMETRIAS ALBITRARIAS

INDEXEDFACESET
INDEXEDLINESET
POINTSET
9 PUNTOS DE VISTA
VIEWPOINTS
COLISIONES
10 ENLACES
ANCHOR
INLINE
11 TEXTO
FONTSTYLE
12 DEF-USE
PROTO
13 PROYECTOS EN WHITEDUNE
14 IMPORTANDO EN VRML

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

En la búsqueda de software libre para diseñar modelos 3D a través de Internet, he probado con
varias herramientas, y entre ellas encontré una distribución libre algo vieja basada en dos componentes
(visor – plugin y editor) el cual, a través de código basado en campos y nodos podías construir un
modelo 3D de gran nivel , lo use por algún tiempo en plataformaaaaaaa Windows – Explorer, al final
decidí probar con software libre; GNU/Linux 9.04 – Fire fox pero lamentablemenencontréééntre un
plugin para este naveasíír asi que use el visor lookat y me apoye en un editor llamado Whitedune, te
invito a probarlo.

ALGO DE HISTORIA

1965 Surge el concepto de Realidad Virtual, cuando Ivan Sutherland (hoy miembro de Sun
Microsystems Laboratories ) publicó un artículo titulado "The Ultimate Display", en el cual describía el
concepto básico de la Realidad Virtual. El trabajo inicial del doctor Sutherland fue básico para
investigaciones subsecuentes en este terreno.

1966 Sutherland creó el primer casco visor de Realidad Virtual al montar tubos de rayos catódicos en
un armazón de alambre. Este instrumento fue llamado "Espada de Damocles", debido a que el
estorboso aparato requería de un sistema de apoyo que pendía del techo. Sutherland también inventó
casi toda la tecnología.

1968 Ivan Sutherland y David Evans crean el primer generador de escenarios con imágenes
tridimensionales, datos almacenados y aceleradores. En este año se funda también la sociedad Evans &
Sutherland.

1971 Redifon Ldt en el Reino Unido comienza a fabricar simuladores de vuelo con displays gráficos.
Henri Gouraud presenta su tesis de doctorado "Despliegue por computadora de Superficies Curvas".

1972 General Electric, bajo comisión de la Armada norteamericana, desarrolla el primer simulador
computarizado de vuelo. Los simuladores de vuelo serán un importante renglón de desarrollo para la
Realidad Virtual.

1973 Bui-Tuong Phong presenta su tesis de doctorado "Iluminación de imágenes generadas por
computadora".

1976 P. J. Kilpatrick publica su tesis de doctorado "El uso de la Cinemática en un Sistema Interactivo
Gráfico".
1977 Dan Sandin y Richard Sayre inventan un guante sensitivo a la flexión.

1979 Eric Howlett (LEEP Systems, Inc.) diseñan la Perspectiva Óptica Mejorada de Extensión Larga
(Large Expanse Enhanced Perspective Optics, LEEP). . A principios de los 80´s la Realidad Virtual es
reconocida como una tecnología viable. Jaron Lanier es uno de los primeros generadores de aparatos de
interfaz sensorial, acuñó la expresión "Realidad Artificial", también colabora en el desarrollo de
aparatos de interface VR, como guantes y visores.

1980 Andy Lippman desarrolla un videodisco interactivo para conducir en las afueras de Aspen.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

1981 Tom Furness desarrolló la "Cabina Virtual". G. J. Grimes, asignado a Bell Telephone
Laboratories, patentó un guante para introducir datos.

1982 Ocurre uno de los acontecimientos históricos en el desarrollo de los simuladores de vuelo,
cuando Thomas Furness presentó el simulador más avanzado que existe, contenido en su totalidad en
un casco parecido al del personaje Darth Vader y creado para la U.S. Army AirForce. Thomas
Zimmerman patentó un guante para introducir datos basado en sensores ópticos, de modo que la
refracción interna puede ser correlacionada con la flexión y extensión de un dedo.

1983 Mark Callahan construyo un HMD en el Instituto Tecnológico de Massachusetts (MIT).

1984 William Gibson publica su novela de ciencia ficción, Neuromancer en el que se utiliza por
primera vez el término "Ciberespacio" refiriéndose a un mundo alternativo al de las computadoras; con
lo que algunos aficionados empiezan a utilizarlo para referirse a la Realidad Virtual. Mike Mc Greevy y
Jim Humphries desarrollaron el sistema VIVED (Representación de un Ambiente Virtual, Virtual
Visual Environment Display) para los futuros astronautas en la NASA.

1985 Jaron Lanier funda la institución VPL Research. Los investigadores del laboratorio Ames de la
NASA construyen el primer sistema práctico de visores estereoscopios. Mike Mc Greevy y Jim
Humphries construyen un HMD con un LCD monocromo del tamaño de una televisión de bolsillo.

1986 En el centro de investigaciones de Schlumberger, en Palo Alto, California, Michael Deering


(científico en computación) y Howard Davidson (físico) trabajaron en estrecha relación con Sun
Microsystems para desarrollar el primer visor de color basado en una estación de trabajo, utilizando la
tecnología de Sun. Existen ya laboratorios como el de la NASA, Universidad de Tokio, Boeing, Sun
Microsystems, Intel, IBM y Fujitsu dedicados al desarrollo de la tecnología VR.

1987 La NASA utilizando algunos productos comerciales, perfecciona la primera realidad sintetizada
por computadora mediante la combinación de imágenes estéreo, sonido 3-D, guantes, etc. Jonathan
Waldern forma las Industrias W (W Industries). Tom Zimmerman et al. desarrolla un guante
interactivo.

1988 Michael Deering y Howard Davidson se incorporan a la planta de científicos de Sun. Una vez
allí, el Dr. Deering diseñó características VR dentro del sistema de gráficos GT de la empresa, mientras
que el Dr. Davidson trabajaba en la producción de visores de bajo costo.

1989 VPL, y después Autodesk, hacen demostraciones de sus completos sistemas VR. El de VPL es
muy caro (225,000 dólares), mientras que el de Autodesk no lo es tanto (25,000 dólares). Jaron Lanier,
CEO of VPL, creó el término "Realidad Virtual". Robert Stone forma el Grupo de Factores Humanos y
Realidad Virtual. Eric Howlett construyo el Sistema I de HMD de vídeo LEEP. VPL Research, Inc.
comenzó a vender los lentes con audífonos que usaban despliegues ópticos LCD y LEEP. Autodesk,
Inc. Hizo una demostración de su PC basada en un sistema CAD de Realidad Virtual, Ciberespacio, en
SIGGRAPH’89. Robert Stone y Jim Hennequin coinventaron el guante Teletact I. Las Tecnologías de
Reflexión producen el visor personal.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

1990 Surge la primera compañía comercial de software VR, Sense8, fundada por Pat Gelband. Ofrece
las primeras herramientas de software para VR, portables a los sistemas SUN. ARRL ordena el primer
sistema de realidad virtual de División. J. R. Hennequin y R. Stone, asignados por ARRL, patentaron
un guante de retroalimentación tangible.

1991 Industrias W venden su primer sistema virtual. Richard Holmes, asignado por Industrias W,
patento un guante de retroalimentación tangible.

1992 SUN hace la primera demostración de su Portal Visual, el ambiente VR de mayor resolución
hasta el momento. Al Gore, vicepresidente de Estados Unidos y promotor de la Realidad Virtual, dictó
seminarios sobre la importancia de esta tecnología para la competitividad norteamericana. T.G.
Zimmerman, asignado por VPL Research, patentó un guante usando sensores ópticos. Division hace
una demostración de un sistema de Realidad Virtual multiusuario. Thomas De Fanti et al. Hizo una
demostración del sistema CAVE en SIGGRAPH.

1993 SGI anunció un motor de Realidad Virtual.

1994 La Sociedad de Realidad Virtual fue fundada. IBM y Virtuality anunciaron el sistema V-Space.
Virtuality anunció su sistema serie 2000. División hizo una demostración de un sistema integrado de
Realidad Virtual multiplataformas en IITSEC, Orlando.
http://www.dei.uc.edu.py

VRML (Virtual Reality Modeling Language).

"Lenguaje para Modelado de Realidad Virtual" - formato de archivo normalizado que tiene como
objetivo la representación de gráficos interactivos tridimensionales; diseñado particularmente para su
empleo en la web. Consiste en un formato de fichero de texto en el que se especifican los vértices y las
aristas de cada polígono tridimensional, además del color de su superficie. Es posible asociar
direcciones web a los componentes gráficos así definidos, de manera que el usuario pueda acceder a
una página web o a otro fichero VRML de Internet cada vez que pique en el componente gráfico en
cuestión.
El Consorcio Web3D ha sido creado para desarrollar este formato. Su primera especificación fue
publicada en 1995; la versión actual funcionalmente completa es la VRML 97 (ISO/IEC DIS 14772-1).
VRML, es la base en la que se ha desarrollado X3D - Extensible 3D.
http://es.wikipedia.org

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

INSTALACIÓN
Lo primero es descargar los paquetes necesarios para visualizar y editar, comencemos con el
visualizador.

Nombre de paquete:
1.-libopenvrml5c2a_0.15.10-5ubuntu2_i386.deb
2.-openvrml-lookat_0.15.10-9ubuntu1_i386.deb

Ahora el editor.
Nombre del paquete:
Whitedune es desarrollado por: Copyrigth (c)2001 Stephen F. GNU (GPL)
3.-whitedune_0.28.13-1_i386.deb

El orden de instalación obedece a la numeración anterior, estos son para un equipo de 32 bit, 386 y
Ubuntu 9.04. - Jaunty Jackalope - distribuido en Abril de 2009. Si tienes otro equipo visitar los
repositorios:

http://mx.archive.ubuntu.com/ubuntu/pool/universe/
O a través del gestor de paquetes Synaptic.

WHITEDUNE

Es un editor VRML, el cual genera el código a través de la construcción directa de las fomas,
prácticamente está compuesto por las barras de herramientas indicadas debajo y bloques descritos a
continuación.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

INTRODUCCIÓN BÁSICA VRML

FORMATO Y CÓDIGO FUENTE


Los programasssss Vestánnnnn diseñados como archivos de texto (ASCII), por lo tanto cualquier editor
de texto puede ser utilizado, al escribirlo solo bastará con guardarlo conexención *.wrl
“Nombredelarchivo.wrl”, word es el significado de la extención wrl, en mi caso usaré el editor de
textos de GNU/Linux gedit.

CUERPO SIMPLE DE VRML

Un mundo esta compuesto por las siguientes partes:

#VRML V2.0 utf8

Nodo{
Campo #Comentarios
}
DESCRIPCION
ENCABEZADO

#VRML V2.0 utf8 - #VRML Describe el tipo, la primera versiónnnn V1.0 se desarrollo en 1994-95,
V2.0 se desarrolla en 1997 bajo la norma ISO/IEC 14772-1:1997 , Utf8 (8-bit Unicode Transformation
Format) nos indica el tipo de codificación UTF-8 en donde se describen todos los tipos de caracteres
especiales, el cual está basado en estándardar ISO 10646.

NODO (node)
Nodo{...},un mundo esta definido por uno o muchos nodos, los cuales pueden ser comparados con
objetos, estos puede contener diferentes Formas, colores, imágenes, sonidos ect..

CAMPOS (fields)
El campo funciona como parámetro de los objetos, ya que el nodo construye el objeto completo y el
campo lo detallará como por ejemplo en tamaño.

COMENTARIOS
Un comentario tiene la funcionalidad de // que utilizamos en el lenguaje C, solo bastará con agregar el
símbolo de # para definirlo.

PRIMITIVAS GEOMÉTRICAS
Un mundo contiene una serie de objetos denominados primitivas geométricas.

• CAJA
• ESFERA
• CONO
• CILINDRO

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Entremos en materia.

Ejm1.

Escriba el código fuente haciendo uso


del editor de texto gedit que nos
proporciona Ubuntu, “Puedes usar
cualquier editor de texto”.

Guardamos el archivo como “caja.wrl”.

Verifiquemos en nuestro visor Lookat lo que hemos


construido, bastará con posicionarse encima del archivo
oprimir botón derecho y elegir la opción
Abrir con -> lookat.
Para poder manipular nuestro cubo debemos de mantener
oprimido con botón izquierdo, pero si deseo alejarme o
acercarme lo realizaremos mediante las flechas del teclado.

Del código anterior podemos apreciar que carece de color, mas adelante enseñare como agregar colores
y texturas.
En el código existen dos nodos llamado shape y otro size, expliquemos:s:

SHAPE
Es un nodo principal que contiene 2 campos llamados geometry y appearance; geometry el cual
usamos es necesario para poder construir cualquier tipo de geometría en nuestro mundo virtual.

SIZE
Es el campo de la primitiva box y es el encargado de construir el tamaño del objeto en sus tres ejes:

4 (Ancho -X- ) 4 (Alto -Y- ) 4 (Fondo -Z- )

Los números usados no están definidos por algún sistema métrico solo establece una unidad que puede
ser considerada en metros, milímetros, pulgadas, ect..
Ahora hagamos las demás figuras geométricas

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Ejm 1.
ESFERA
#VRML V2.0 utf8
Shape {
geometry Sphere {
radius 4 } # Define el tamaño de radio.
}

CONO
#VRML V2.0 utf8
Shape {
geometry Cone {
bottomRadius 4 # Base del radio
height 3 # Altura
}
}

CILINDRO
#VRML V2.0 utf8
Shape {
geometry Cylinder {
radius 4 # Radio
height 5 # Base
}
}

MEZCLANDO FIGURAS
#VRML V2.0 utf8
Shape {
geometry Sphere {
radius 4
}
}

#Respetando las coordenadas xyz puedes acomodar de manera


#muy sencilla ambas formas geométricas.
Shape {
geometry Cylinder {
radius 5 # Radio
height 2 # Base
}
}

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

WHITEDUNE
Ahora hagamos en whitedune uno de los 3 ejemplos:

Para la construcción de una primitiva básica únicamente necesitamos oprimir el botón de sphere y
automáticamente se creará una nueva esfera de color grisáceo pues carece de color.
Podemos apreciar de lado izquierdo la ramificación de escenas con la construcción de nodos
correspondientes a la nueva esfera., además del lado derecho podemos apreciar los campos
correspondientes al nodo seleccionado del lado izquierdo.
El código que genera es el siguiente:
#VRML V2.0 utf8
Transform
{
children [
Shape { appearance
Appearance {
material Material {
}
}
geometry Sphere { }
}
]
}
No te preocupes por la complejidad de este código, capítulos posteriores te explicarán mas acerca de
estos nodos y campos.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Ahora vamos a ver en el visor lookat lo que hemos


construido!, pero para eso hay que configurarlo
como predeterminado:
Options -> Preview Settings (Shift + F12)

Ahora si puedes usar para poder visualizar por


medio del visor la nueva esfera.

MATERIALES

APPEARANCE
En los ejemplos anteriores nuestras figuras carecían de color, ahora mediante el campo apparence que
forma parte del nodo Shape, podremos agregar colores y texturas.

Como podemos apreciar en la figura anterior el campo appearece posee un nuevo nodo llamado
Appearance, esta es la filosofía principal de VRML nodos y campos anidados, por lo tanto un campo
puede contener varios nodos y así sucesivamente.

El campo que utilizaremos para poder agregar color a nuestra figura se llama diffusecolor que forma
parte (junto con otros que veremos mas adelante) del nodo Materia, algo que podemos apreciar es que
todos los campos comienzan con letras minúsculas mientras que los nodos con mayúsculas.

Otros campos de el nodo Material son:

emissiveColor
Fijar el color del brillo, es un campo importante cuando deseamos ver algún objeto en la oscuridad, esta
parece generar desde dentro la luz , por defecto es negro ya que los objetos no brillan.

specularColor
Proporciona luz de color reflejada en el objeto.

ambientIntensity
Proporciona luz ambiental a través de focos.

shininess
Controla el brillo que puede tener un objeto, su máximo valor es 1.0.

transparency
Agrega la tranparencia a un objeto, siendo la máxima transparencia 1.0

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Realicemos 2 ejemplos, con distintos Campos del nodo Material:


Ejm2.

Shape (Nodo)
appearence (Campo)

Appearence (Nodo)

material (Campo)

Material (Nodo)

diffusecolor (Campo)

ambientIntensity(Campo) specularColor(Campo) emissiveColor(Campo)

shininess(Campo) transparency(Campo)

DIFFUSECOLOR

Agregemos color al ejemplo anterior.

#VRML V2.0 utf8

Shape {
geometry Box { size 4 4 4 }
appearance Appearance {
material Material {
diffuseColor 1 0 0 # Color

}
}
}

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

EMISSIVECOLOR

#VRML V2.0 utf8


Shape {
appearance Appearance { # Genera su propia luz de color azul.

material Material { emissiveColor 0 0 1 # Color. } }

geometry Box { size 4 4 4 }


}

WHITEDUNE

Creamos nuestra figura y damos clic en


Appereance del lado derecho aparecerán los
campos de ese nodo , escojamos material.

Podemos cambiar los valores con solo dar 1 clic encima de cada número, escojamos color rojo, es la
secuencia 1 0 0.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

La figura nos queda así.

Los colores
proporcionados son RGB
(RED,GREEN end
BLUE), están asignados
por valores flotantes,
representando cada uno
los colores primarios. El
valor 1.0 es la mayor
intensidad de color
mientras el 0.0 ausencia
de color.
Podemos apreciar en esta ventana los demás campos a utilizar para la fabricación de nuestros mundos.

TRANFORMACIONES

TRANSFORM
Este nodo nos ayudara a situar nuestro objeto en nuestro mundo a través de traslación, rotación y
escalado.

Translation
Nos indicará la nueva posición de nuestro objeto gobernado por las coordenadas XYZ. Considerando
que la parte central de nuestro mundo es 0.0.0.

rotation
Girar al rededor de uno de los ejes de nuestro mundo, la inclinación de dicho giro se da en Radianes.
360º -> 2π
scale

Aumenta o disminuye el tamaño de los ejes, básicamente reduce o incrementa una figura.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Ejm 3.

Transform (Nodo)

translation (Campo) rotation (Campo) scale (Campo)

Children (Campo)
#VRML V2.0 utf8

Shape { # Esfera en el centro del mundo, color azul


geometry Sphere { radius 3 }
appearance Appearance { material Material
{ diffuseColor 0 0 1 }
}
}

Transform {
translation 0 5 0 # Objeto trasladado
children [
Shape {
geometry Sphere { radius 3 }
appearance Appearance { material Material { diffuseColor 0 1 0 } }
} #Podemos apreciar una esfera que se ha movido 5 posiciones sobre el eje Y.
]
}

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Ahora hagamos los tres movimientos:

#VRML V2.0 utf8

Shape { # Referencia de origen


geometry Sphere { radius 3 }
appearance Appearance { material Material
{ diffuseColor 0 0 1 }

}
}
Transform {
translation 0 5 0
rotation 1 0 0 1.39626 # 90 grados en el eje X (90º*PI)/180º
scale 0.5 0.5 0.5 # Reducido a la mitad en todos sus ejes
children [
Shape {
geometry Sphere { radius 3 }
appearance Appearance { material Material { diffuseColor 0 1 0 }

}
}
]
}

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

USEMOS VARIOS CAMPOS

#VRML V2.0 utf8


Transform {
translation 0 0 -2
scale 5 0.5 1
children[
Shape {
geometry Box { size 1 1 1 }
appearance Appearance {
material Material {
diffuseColor 0.5 0 1 #Caja de color de fondo

}
}
}]
}
Transform {
translation -2 0 0
children [
Shape {
geometry Box { size 1 1 1 }
appearance Appearance {
material Material {
diffuseColor 0.5 0.5 1 #Caja de color
emissiveColor 0 0 0
transparency 0
}
}
}
]
}
Transform {
translation 0 0 0
children [
Shape {
geometry Box { size 1 1 1 }
appearance Appearance {
material Material {
diffuseColor 0.5 0.5 1
emissiveColor 1 1 0 #Objeto auto iluminado

}
}
}]

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

}
Transform {
translation 2 0 0
children [
Shape {
geometry Box { size 1 1 1 }
appearance Appearance {
material Material {
diffuseColor 0.5 0.5 1
transparency 0.8 #Objeto transparente
} } }] }

APLIQUEMOS TODO LO QUE HEMOS VISTO.


Hagamos 3 cubos de diferentes colores que tengan cierta rotación, translación y escalado.
#VRML V2.0 utf8
Transform {
translation -1 0 0 # Es movimiento en una unidad de lado izquierdo
rotation 1 0 0 1
scale 0.5 1 1# Reducido a la mitad en todos sus ejes
children [
Shape {
geometry Box { size 1 1.12 1 }
appearance Appearance { material Material { diffuseColor 1 0.6 0 }
}
}

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

] }
Transform {
translation 0 0 0
rotation 1 0 0 1
scale 0.5 1 1# Reducido a la mitad en todos sus ejes
children [
Shape {
geometry Box { size 1 0.7 1 }
appearance Appearance { material Material { diffuseColor 0 0.6 1 }
}
} ] }
Transform {
translation 1 0 0
rotation 1 0 0 1
scale 0.5 1 1# Reducido a la mitad en todos sus ejes
children [
Shape {
geometry Box { size 1 0.2 1 }
appearance Appearance { material Material { diffuseColor 0 0.6 0 }
} } ] }

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

WHITEDUNE
Creamos un cilindro de color rosa damos clic en el icono ,para poder modificar la posición
de nuestra figura.

Bastará con arrastrar desde la flecha de la coordenada (usando el mouse) cualquiera de los ejes XYZ
(Rojo,Verde y Azul), para generar una translación,rotación o escalado de la nueva figura.

ILUMINACIÓN
Solo tres nodos definen el tipo de iluminación de un mundo.
PointLinght Luz puntual
DirectionalLight Luz direccional
SpotLight Espot de luz
La iluminación se define por cada objeto al que se va a iluminar, controlando la intensidad de cada uno
de ellos, no es solo un foco que ilumina a todo el mundo con reflexiones entre los objetos, sino que
podemos cambiar las características de la luz que incide en un objeto,además la vista que tenemos
frontal ya es iluminada para poder ver las figuras que carecen de luz, esto puede confundirnos al
iluminar nuestros mundos.

Pointligth
Es el tipo mas real de luz ya que como la conocemos se distribuye en todos lados y se va atenuando,
perdiendo así energía conforme nos alejamos del objeto.
Por lo anterior habrá que aumentar el valor de su atenuación si no quiero un Pointligth muy elevado a
través del campo attenuation, además cuenta con ses parámetros que explicaremos a través de un
ejemplo.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Ejm 4.

material (Campo)

Material (Nodo)

ambientIntensity (Campo)

Intensidad del en el ambiente.

PointLigth (Node)

location (Campo) radius (Campo) ambientIntensity (Campo)

color (Campo) intensity(Campo) attenuation(Campo)

Características de la luz por objeto.

#VRML V2.0 utf8

PointLight { # Luz azul sin atenuación


location -5 5 0 #Ubicación del foco , la imagen se ve mas abajo
radius 0.2 #Radio de la luz
ambientIntensity 1 #Intensidad de la luz se ignora con intensidad de materia
color 1 0 0 #Color rojo arriba
intensity 1 #Potencia con la que la luz ilumina
attenuation 1 0 0 # Sin presenta atenuación
}

Transform {
translation -3 0 0
children Shape {
appearance Appearance {
material Material {
ambientIntensity 0.2 #Control de la intensidad, mas pequeño mas luz
diffuseColor 1 1 1
}
}

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

geometry Box { size 2 1 2 }


}
}

PointLight {
location 5 -5 0
radius 0.2
ambientIntensity 1
color 0 1 0 #Color verde abajo
intensity 1
attenuation 1 0 0
}
Transform {
translation 3 0 0
children Shape {
appearance Appearance {
material Material {
ambientIntensity 0.2
diffuseColor 1 1 1
}
}
geometry Box { size 2 1 2 }
}
}

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

DirectionalLight
Luz paralela - son líneas de luz que carecen de ángulos incidiendo de manera directa sobre la
superficie de un objeto, no es solamente un foco sino rayos de luz que pasan sobre la dirección que
nosotros le configuremos.
Ejm 5.
PointLigth (Node)

ambientIntensity (Campo) color (Campo)

intensity(Campo) direction (Campo)


#VRML V2.0 utf8
DirectionalLight {
ambientIntensity 1
color 1 0 0
intensity 1
direction -3 3 0 # Dirección de la luz
}
Transform {
translation -3 0 0
children Shape {
appearance Appearance {
material Material {
ambientIntensity 0.2 # Intensifica la luz que inside en este cubo
diffuseColor 1 1 1
}}
geometry Box { size 2 1 2 }
}
}
Transform {
translation 3 0 0
children Shape {
appearance Appearance {
material Material {
ambientIntensity 0.2
diffuseColor 1 1 1
}}
geometry Box { size 2 1 2 }
}
} ]
}
Ejm 5.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

PointLight

Este tipo de luz debemos de indicar su origen y destino, es comparada con la luz de una lámpara que
iluminan una obra de arte o una escultura, es a forma de iluminación mas elaborada.
Ejm 6.
PointLigth (Node)

location (Campo) radius (Campo) ambientIntensity (Campo)

color (Campo) intensity(Campo) attenuation(Campo)

direction (Campo) cutOffAngle (Campo) beamWidth (Campo)

#VRML V2.0 utf8


SpotLight {
location -3 3 0 #Origen de la lámpara
radius 3
ambientIntensity 0.6
color 0 0.5 1
intensity 1
attenuation 1 0 0 # No presenta atenuación
direction 3 -3 0 # Destino de la lámpara
cutOffAngle 0.1745 # 10 grados de apertura de la luz
beamWidth 0.785398 # 45 grados donde la intensidad de la luz es máxima
}
Transform {
translation -3 0 0
children Shape {
appearance Appearance {
material Material {
ambientIntensity 0.2 # Intensifica la luz que inside en este cubo
diffuseColor 1 1 1
}
}
geometry Box { size 2 1 2 }
}
}
Transform {
translation 3 0 0
children Shape {
appearance Appearance {
material Material {
ambientIntensity 0.2

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

diffuseColor 1 1 1
}
}
geometry Box { size 2 1 2 }
}
} ]
}

En esta figura podemos


apreciar que aunque la luz
está sobre el rectángulo de
la izquierda esta solo
altera al de la derecha.

WHITEDUNE
Seleccionamos Scene, vamos a menu create -> ligth y seleccionamos el tipo de luz que deseo agregar ,
en nuestro caso usemos DirectionalLight.

Vemos que ya esta iluminada nuestra esfera pero de color blanco,


cambiemos sus campos para iluminar atrás y adelante.

Para la luz trasera vamos de nueva cuanta a Scene, create -> ligth y
seleccionamos el tipo de luz que deseo agregar , en nuestro caso usemos
DirectionalLight.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Whitedune agrega un botón para habilitar la luz cuando lo deseemos ver.

GEOMETRIAS ALBITRARIAS
No solamente contamos con primitivas para la construcción de nuestros mundos, sería muy complicado
y limitado la elaboración de los mismos si solamente contáramos con ellas, podemos crear diferentes
formas basadas en la definición de caras y vértices controlando la cantidad que necesitemos realmente.

Node IndexedFaceSet

Para poder tener un mejor control de los vértices y


caras se recomienda las siguientes normas para
acomodarlas:

1. Los vértices son consecutivos.

2. Se listan en orden antihorario.

3. El último vértice de cada cara enlaza con el


primero, cerrando el nuevo objeto.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Ejm 7.
geometry(Campo)

IndexedFaceSet (Nodo)

IndexedLineSet (Nodo)

PointSet (Nodo)

coord (Campo)

Coordinate (Nodo)

point (Campo)

colorIndex (Campo) colorPerVertex(Campo) coordIndex (Campo)

#VRML V2.0 utf8


Shape {
appearance Appearance { material Material {
diffuseColor 0 0.5 1
transparency 0.6 # Transparencia del 60%
}}
geometry IndexedFaceSet {
coord Coordinate {
point [ # Vértices
1 1 1,
1 1 -1,
-1 1 -1,
-1 1 1,
1 -1 1,
1 -1 -1,
-1 -1 -1,
-1 -1 1
] }
coordIndex [ # Caras
0, 1, 2, 3, -1,# -1 es usado para separar cada cara
0, 4, 5, 1, -1,
1, 5, 6, 2, -1,
2, 6, 7, 3, -1,
3, 7, 4, 0, -1,
4, 7, 6, 5, -1 ] } }

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

#VRML V2.0 utf8

Shape { #Vamos a retirarle una cara e introducimos un cubo pequeño dentro de la misma
appearance Appearance { material Material { diffuseColor 0 0 1 } }
geometry
IndexedFaceSet {
coord Coordinate {
point [
1 1 1,
1 1 -1,
-1 1 -1,
-1 1 1,
1 -1 1,
1 -1 -1,
-1 -1 -1,
-1 -1 1
]
}
coordIndex [

0, 4, 5, 1, -1,
1, 5, 6, 2, -1,
2, 6, 7, 3, -1,
3, 7, 4, 0, -1,
4, 7, 6, 5, -1
]
}
}

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Shape {
appearance Appearance { material Material { diffuseColor 0.5 0.5 1 } }
geometry Box{size 0.5 0.5 0.5}
}

Ahora vamos agregar color a cada cara que hemos creado.


Campo ColorPerVertex
#VRML V2.0 utf8
Shape {
appearance Appearance { material Material {
diffuseColor 0 0.5 1
transparency 0.9
}}
geometry
IndexedFaceSet {
coord Coordinate {
point [ # Vértices
1 1 1,
1 1 -1,
-1 1 -1,
-1 1 1,
1 -1 1,
1 -1 -1,
-1 -1 -1,
-1 -1 1
]
}
coordIndex [ # 2 Caras
0, 1, 2, 4, -1,# -1 es usado para separar cada cara
0, 1, 2, -3, -1 ]

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

colorPerVertex FALSE#Agrega colores por cara


color Color { #Previamente definida
color [
1 0.5 0.5,
0.5 1 0.5
] }}}

Se diseñan 2 caras, en
donde se les agrega un
color distinto a cada una,
del lado contrario ellas
carecen de color por ese
motivo se ven en negro.

Si cambiamos colorPerVertex FALSE a colorPerVertex TRUE, ahora los colores se mostrarán por
vértices.

Siendo por vértices vemos que el color no es uniforme si no que se mezclan mientras nos aproximamos
y alejamos a cada uno.

En los ejemplos anteriores los colores de las caras son coloreadas una a una pero podemos iluminar
cierta cantidad de caras des mismo color y otras de otro haciendo uso de colorIndex.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Nodo IndexLineSet
Este nos dibujará las lineas que unen los vértices en una especie de malla, dibujemos el ejemplo del
cubo pero ahora con este nodo.
#VRML V2.0 utf8
Shape {
appearance Appearance { material Material { emissiveColor 0 0.8 1 } }
geometry
IndexedLineSet {
coord Coordinate {
point [ # Vértices
1 1 1,
1 1 -1,
-1 1 -1,
-1 1 1,
1 -1 1,
1 -1 -1,
-1 -1 -1,
-1 -1 1
]
}
coordIndex [
0, 1, 2, 3, 0,-1,# Cerramos el circuito para que la linea regrese
0, 4, 5, 1, -1, #a su origen
1, 5, 6, 2, -1,
2, 6, 7, 3, -1,
3, 7, 4, 0, -1,
4, 7, 6, 5, -1,
]
}
}

Se pueden agregar colores diferentes a cada


linea de la misma manera como lo hicimos
con las caras y vértices.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Nodo PointSet
Es el responsable de dibujar únicamente los vértices de la figura.
#VRML V2.0 utf8
Shape {
appearance Appearance { material Material { emissiveColor 1 1 0 } }
geometry
PointSet { #
coord Coordinate {
point [
1 1 1,
1 1 -1,
-1 1 -1,
-1 1 1,
1 -1 1,
1 -1 -1,
-1 -1 -1,
-1 -1 1
]
} } }

WHITEDUNE
Construyamos una cara de color.
Damos clic al nodo IndexedFaceSet para construir una figura
basada en nodos y vértices.

Ya que hemos agregado nuestro nuevo nodo,


necesitamos llegar hasta coord-Coordinate-point
así que incluimos Coordinate.

Ya tenemos nuestros nodos, ahora hay que definir la cantidad de caras y


vértices, así mismo la ubicación de los vértices en el nuevo mundo que
hemos construido.

Definimos la ubicación de los vértices a través del campo point.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Haciendo uso del campo coordIndex el acomodemoslas caras.

Este es el resultado, una forma de una sola cara plana .

PUNTOS DE VISTA

Position: Aquí proporcionaremos la posición de nuestra cámara en nuestro mundo, recordemos que nos
referimos a los ejes XYZ.

Orientation: Orientación de la cámara, es muy fácil confundirse ya que no es ordenado mediante los
ejes XYZ sino por:

(+ Arriba – Abajo) (+Izquierda – Derecha) (+Jiro Izquierda – Jiro derecha) Grados en radianes.

Description: Aunque en lookat no aparece la descripción a través del navegador en otros visualizadores
si aparece el nombre del punto de vista.
Son posiciones preconfiguradas, para dirigirnos a un lugar de nuestro mundo de manera rápida.

Ejm 8.
Viewpoint(Nodo)

position (Campo)

orientation (Campo)

description (Campo)

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

#VRML V2.0 utf8


Viewpoint {
position 0 0 5#Posición original
orientation 0 0 0 0#Orientación de la cámara
description "centro"
} Viewpoint {
position 0 0 5
orientation 1 0 0 0.1745 # 10 grados radianes sube
description "sube"
} Viewpoint {
position 0 0 5#Posición original
orientation -1 0 0 0.1745#Orientación de la cámara baja
description "baja"
} Viewpoint {
position 0 0 5
orientation 0 1 0 0.1745 # 10 grados en radianes izquierda
description "izquierda"
} Viewpoint {
position 0 0 5#Posición original
orientation 0 -1 0 0.1745#Orientación de la cámara derecha
description "derecha"
} Viewpoint {
position 0 0 5#Posición original
orientation 0 0 0 0#Orientación de la cámara
description "centro"
} Viewpoint {
position 0 0 5
orientation 0 0 1 0.1745 # 10 grados en radianes jiro izquierda
description "izquierda"
} Viewpoint {
position 0 0 5#Posición original
orientation 0 0 -1 0.1745#Orientación de la cámara giro derecha
description "derecha"
}

Shape {
appearance Appearance { material Material { diffuseColor 1 0.4 0 } }
geometry Sphere { radius 2 }
}

Para poder activar a través de lookat los Viewpoint, lo hacemos mediante el teclado usando el botón
avpág para navegar en los puntos de vista.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

La ubicación de la figura origen


cambia al manipular los puntos de
vista ya que debe de partir de una
posición, cero grados la gira como
se muestra en la figura, y así
sucesivamente cada grado.

WHITEDUNE
Para realizar puntos de vista usamos el icono , y escribimos la
ubicación de la cámara
y su posición.

COLISIONES
Este nodo es de suma importancia, debido a que nos proporcionará realismos a las edificaciones que
construyamos, ya que al levantar una pared lo real es no poder atravesar la, esto es producido mediante
las colisiones.
Ejm 8.
Collision(Nodo)

collide (Campo)

#VRML V2.0 utf8

Collision { #Nodo que genera las colisiones


collide TRUE # Activamos las colisiones false o desactiva
children [
Transform {
translation 0 0 10
children Shape {
geometry Box { size 5 5 5 }
appearance Appearance { material Material {
diffuseColor 0.133884 0.866115 1
transparency 0.500000} }

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

}
}
Shape {
geometry Box { size 5 5 5 }
appearance Appearance { material Material {
diffuseColor 0.133884 0.866115 1
} }
}

]
}

En el ejemplo anterior la colisión afecta ambas figuras ya que el children ocasiona este efecto, no
agregamos imágenes ya que no podemos demostrar la opción de colisión, pero al ejecutar este código
podrás notar lo antes escrito.

ANCHORS
La utilización de hiper vínculos es muy común en el ambiente de internet, VRML no podía dejar fuera
la implementación de estos enlaces aunque también en la realidad virtual los enlaces pueden ser
utilizados mediante sitios web, en VRML para Linux es utilizado para mostrar otros mundos virtuales.

Ejm 9.
Anchor(Nodo)

url (Campo)

#VRML V2.0 utf8

Anchor { children

Transform {
translation 0 0 -5
children [
Shape {
geometry Sphere { radius 3 }
appearance Appearance { material Material {
#ambientIntensity 1
emissiveColor 0 0 0.2 } }
}
]
}
url "nuevo.wrl" #Como el enlace está en la misma carpeta solo escribimos el nombre}

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

ANTES DESPUÉS

INLINE
Es una instrucción importante ya que normalmente creamos diferentes imágenes los cuales las tenemos
almacenadas incluso en lugares diferentes, INLINE ofrece la opción de integrarlas en un solo archivo
con solo mandarlas a llamar las figuras, y tratarlas como si fueran un solo objeto.

Ejm 10.

#VRML V2.0 utf8

Transform{ # Al ser objetos los podemos mover a través de translación para ubicarlos en
#posiciones diferentes dentro del mismo programa.
translation 1 0 0 # Nueva ubicación.

children [
Inline{url"cuborojodune.wrl"}
]}
Transform{
translation -1 0 0 # Ubicación del otro objeto.

children [
Inline{url"mallas.wrl"}
]}

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

WHITEDUNE

Bastará con dar clic en este icono, y aparecerá una ventana en donde escogeremos las figuras
que compartirán el mismo espacio pero de diferente mudos.

Comparten el mismo mundo

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

TEXT
Es común de un mundo virtual la presentación de textos ya sea para referencial algo o simplemente
para construir un cartel, al crearlo se le tratará como una primitiva por lo tanto se le podrá agregar
texturas, translación, rotación y escalado.

Ejm 11.
geometry (Campo)

Text (Nodo)

string (Campo)

fontStyle (Campo)

FontStyle (Nodo)

#VRML V2.0 utf8

Shape{
appearance Appearance{
material Material {}
}
geometry Text {

string ["Bienvenido",
"al mundo VRML"] # Cadena de texto a mostrar

fontStyle FontStyle { #Estilo del texto


family "SERIF", # Nombre de fuente
style "ITALIC", # Estilo de fuente
spacing 1.5 #Espaciado de caracteres
size 0.5 # Tamaño de la fuente
justify "BEGIN" # Justificación del texto
}

}
}

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

WHITEDUNE
Para incorporar texto en nuestro mundo virtual debemos de dar clic en el icono en este podremos
agregar el texto que deseemos.
Para nuestro ejemplo agregaremos un cubo alargado para incorporar encima el texto.

En la figura anterior podemos apreciar como ya se ha agregado el nodo Text ahora habrá que
configurarlo.

Así se ve en el visor.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

PROTO
Es un mecanismos para definir nuevos nodos, los cuales pueden ser utilizados en diferentes sitios del
mundo virtual, veamos un ejemplo:
Ejm 12.
PROTO (nodo)

fielmSFcolor (Campo) fielmSFvec3f (Campo)

#VRML V2.0 utf8

PROTO figura [ # Creamos nuestro nuevo nodo


field SFColor color 1 0 0 # Definición de su campo

]
{
Group { #Creación de la figura
children [
Shape {
geometry Cylinder { height 3 radius 2 } http://start.ubuntu.com/9.04/
appearance Appearance { material Material
{ diffuseColor IS color } }
}
]
}
}
Transform { #Creamos una nueva figura con valores en campos diferentes y el lugar donde lo
translation 5 0 0 # queremos ubicar
children figura { color 0.5 0.5 0}
}
Transform {
translation 0 0 -5
children figura { color 0.5 0.5 0}
}
Transform {
translation -5 0 0
children figura { color 0.5 0.5 0}
}
Transform {
translation 0 0 5
children figura { color 0.5 0.5 0}
}
figura { } #Creamos con los valores originales
SFColor (single-valued field color, campo de color univaluado)

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

DEF – USE
Si por algún motivo queremos repetir figuras dentro de nuestro mundo virtual, implicará que nuestro
archivo se llene de mucho código, para evitar esto usamos DEF y USE, ya que a los nodos les
podemos dar nombre y después referenciarlos. Veamos como:

Ejm 13.

DEF (nodo nombre)

USE (nodo)

#VRML V2.0 utf8

Shape {
appearance Appearance { # Cono central
material Material { diffuseColor 0.5 1 1 }
}
geometry DEF nuevocono Cone {
height 3
bottomRadius 2
}# Definimos la altura del cono y su radio
}

Transform {

translation 1 0 0
children Shape {
appearance Appearance {
material Material { diffuseColor 1 0.5 1 } }
geometry USE nuevocono #Creamos un nuevo cono
}
}
Transform {
translation -1 0 0
children Shape {
appearance Appearance {
material Material { diffuseColor 1 0.5 1 } }
geometry USE nuevocono #Creamos un nuevo cono

}}

En el ejemplo anterior podemos observar el uso de DEF-USE, en donde creamos un nodo principal y
hereda a través de USE la elaboración de otros dos mas.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Proyectos creados mediante Whitedune.


Edificio del Deportivo San Sebastián Tecoloxtitlán.

La construcción de edificios es realizada de manera muy sencilla a través de esta herramienta de


software, lo que vemos es un edificio diseñado para una comunidad la cual a este nivel de desarrollo
carece de texturas y colores, que mas adelante fueron integrados, además no podía faltar su área de
juegos en la siguiente figura podemos ver estos juegos, todo esta es creados solamente con figuras
básicas y herramientas simples que hemos aprendido en este libro.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Importando en VRML
Wings 3D
Software libre con derecho de autor 2001 – 2009 Bjönrn Gustavsson & others, utilizado para modelado
virtual,creamos una figura de 105 polígonos, 228 caras y 125 nodos, simulando un terreno sinuoso.

Ahora vamos a exportarlo a VRML, nos


vamos a Exportar -> VRML 2.0

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Ya que lo hemos importado veamos como se ve nuestro nuevo mundo virtual.

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Blender

Escogemos la opción de exportar VRML,


nos preguntará si solo la selección, le
damos Rotate +Z to + Y

ING. GERARDO NAVA HERNÁNDEZ


Virtual Reality Modeling Languaje

Buscamos el sitio en donde guardaremos nuestro VRML, le damos nombre e importamos.


Ahora veamos nuestra figura en Look at!

Como podemos ver carece de color y texturas, ya que no se lo agregamos previamente en Blender.

ING. GERARDO NAVA HERNÁNDEZ

Vous aimerez peut-être aussi