Académique Documents
Professionnel Documents
Culture Documents
Desarrollo y edición.
Ing. Gerardo Nava Hernández
gerexo@hotmail.com
2009-2010
Í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
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.
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.
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.
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.
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.
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
"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
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.
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
Entremos en materia.
Ejm1.
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:
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
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
}
}
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.
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.
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
Shape (Nodo)
appearence (Campo)
Appearence (Nodo)
material (Campo)
Material (Nodo)
diffusecolor (Campo)
shininess(Campo) transparency(Campo)
DIFFUSECOLOR
Shape {
geometry Box { size 4 4 4 }
appearance Appearance {
material Material {
diffuseColor 1 0 0 # Color
}
}
}
EMISSIVECOLOR
WHITEDUNE
Podemos cambiar los valores con solo dar 1 clic encima de cada número, escojamos color rojo, es la
secuencia 1 0 0.
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.
Ejm 3.
Transform (Nodo)
Children (Campo)
#VRML V2.0 utf8
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.
]
}
}
}
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 }
}
}
]
}
}
}
}]
}
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
}
}
}]
}
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
} } }] }
] }
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 }
} } ] }
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.
Ejm 4.
material (Campo)
Material (Nodo)
ambientIntensity (Campo)
PointLigth (Node)
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
}
}
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 }
}
}
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)
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)
diffuseColor 1 1 1
}
}
geometry Box { size 2 1 2 }
}
} ]
}
WHITEDUNE
Seleccionamos Scene, vamos a menu create -> ligth y seleccionamos el tipo de luz que deseo agregar ,
en nuestro caso usemos DirectionalLight.
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.
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
Ejm 7.
geometry(Campo)
IndexedFaceSet (Nodo)
IndexedLineSet (Nodo)
PointSet (Nodo)
coord (Campo)
Coordinate (Nodo)
point (Campo)
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
]
}
}
Shape {
appearance Appearance { material Material { diffuseColor 0.5 0.5 1 } }
geometry Box{size 0.5 0.5 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.
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,
]
}
}
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.
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)
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.
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)
}
}
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)
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}
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.
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"}
]}
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.
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)
Shape{
appearance Appearance{
material Material {}
}
geometry Text {
string ["Bienvenido",
"al mundo VRML"] # Cadena de texto a mostrar
}
}
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.
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)
]
{
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)
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.
USE (nodo)
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.
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.
Blender
Como podemos ver carece de color y texturas, ya que no se lo agregamos previamente en Blender.