49
Virtual Reality Modeling Languaje ING. GERARDO NAVA HERNÁNDEZ

Libro Vrml

Embed Size (px)

Citation preview

Page 1: Libro Vrml

Virtual Reality Modeling Languaje

ING. GERARDO NAVA HERNÁNDEZ

Page 2: Libro Vrml

Virtual Reality Modeling Languaje

Desarrollo y edición.Ing. Gerardo Nava Herná[email protected]

ING. GERARDO NAVA HERNÁNDEZ

Page 3: Libro Vrml

Virtual Reality Modeling Languaje

ÍNDICE1 ALGO DE HISTORIA2 VRML INSTALACION

PAQUETESWHITEDUNE

3 INTRODUCCIÓN BÁSICA DEL LENGUAJEFORMATO Y CODIGO FUENTECUERPO DE PROGRAMA

4 DESCRIPCIONPRIMITIVAS GEOMÉTRICASSHAPESIZE

5 MATERIALES - MATERIALAPPEARANCEDIFFUSECOLOREMISSIVECOLORSPECULARCOLORAMBIENTINTENSITYSHININESSTRANSPARENCYIMAGETEXTURE

6 TRANFORMACIONES - TRANSFORM TRANSLATIONROTATIONSCALE

7 ILUMINACIÓNPOINTLINGHTDIRECTIONALLIGHTSPOTLIGHT

8 GEOMETRIAS ALBITRARIAS

INDEXEDFACESET INDEXEDLINESET POINTSET

9 PUNTOS DE VISTAVIEWPOINTSCOLISIONES

10 ENLACESANCHORINLINE

11 TEXTOFONTSTYLE

12 DEF-USEPROTO

13 PROYECTOS EN WHITEDUNE14 IMPORTANDO EN VRML

ING. GERARDO NAVA HERNÁNDEZ

Page 4: Libro Vrml

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

Page 5: Libro Vrml

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

Page 6: Libro Vrml

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

Page 7: Libro Vrml

Virtual Reality Modeling Languaje

INSTALACIÓNLo 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

Page 8: Libro Vrml

Virtual Reality Modeling Languaje

INTRODUCCIÓN BÁSICA VRML

FORMATO Y CÓDIGO FUENTELos 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 }

DESCRIPCIONENCABEZADO

#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.

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

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

• CAJA• ESFERA• CONO• CILINDRO

ING. GERARDO NAVA HERNÁNDEZ

Page 9: Libro Vrml

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:

SHAPEEs 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.

SIZEEs 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

Page 10: Libro Vrml

Virtual Reality Modeling Languaje

Ejm 1.ESFERA#VRML V2.0 utf8Shape {

geometry Sphere { radius 4 } # Define el tamaño de radio. }

CONO#VRML V2.0 utf8 Shape {

geometry Cone { bottomRadius 4 # Base del radioheight 3 # Altura

} }

CILINDRO#VRML V2.0 utf8Shape {

geometry Cylinder { radius 4 # Radioheight 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

Page 11: Libro Vrml

Virtual Reality Modeling Languaje

WHITEDUNEAhora 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

Page 12: Libro Vrml

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

APPEARANCEEn 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:

emissiveColorFijar 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.

specularColorProporciona luz de color reflejada en el objeto. ambientIntensityProporciona luz ambiental a través de focos.

shininessControla el brillo que puede tener un objeto, su máximo valor es 1.0. transparencyAgrega la tranparencia a un objeto, siendo la máxima transparencia 1.0

ING. GERARDO NAVA HERNÁNDEZ

Page 13: Libro Vrml

Virtual Reality Modeling Languaje

Realicemos 2 ejemplos, con distintos Campos del nodo Material:Ejm2.

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

Shape (Nodo)

appearence (Campo)

Appearence (Nodo)

material (Campo)

Material (Nodo)

diffusecolor (Campo)

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

shininess(Campo) transparency(Campo)

Page 14: Libro Vrml

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

Page 15: Libro Vrml

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.

TranslationNos 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.

rotationGirar 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

Page 16: Libro Vrml

Virtual Reality Modeling Languaje

Ejm 3.

#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

Transform (Nodo)

Children (Campo)

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

Page 17: Libro Vrml

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

Page 18: Libro Vrml

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 coloremissiveColor 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

Page 19: Libro Vrml

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

Page 20: Libro Vrml

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

Page 21: Libro Vrml

Virtual Reality Modeling Languaje

WHITEDUNECreamos 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

Page 22: Libro Vrml

Virtual Reality Modeling Languaje

Ejm 4.

Intensidad del en el ambiente.

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 abajoradius 0.2 #Radio de la luzambientIntensity 1 #Intensidad de la luz se ignora con intensidad de materiacolor 1 0 0 #Color rojo arriba intensity 1 #Potencia con la que la luz iluminaattenuation 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

material (Campo)

Material (Nodo)

ambientIntensity (Campo)

PointLigth (Node)

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

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

Page 23: Libro Vrml

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.2diffuseColor 1 1 1

} } geometry Box { size 2 1 2 }

} }

ING. GERARDO NAVA HERNÁNDEZ

Page 24: Libro Vrml

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.

#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

PointLigth (Node)

ambientIntensity (Campo) color (Campo)

intensity(Campo) direction (Campo)

Page 25: Libro Vrml

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.

#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

PointLigth (Node)

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

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

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

Page 26: Libro Vrml

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.

WHITEDUNESeleccionamos 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

Page 27: Libro Vrml

Virtual Reality Modeling Languaje

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

GEOMETRIAS ALBITRARIASNo 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

Page 28: Libro Vrml

Virtual Reality Modeling Languaje

Ejm 7.

#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

geometry(Campo)

IndexedFaceSet (Nodo)

coord (Campo)

Coordinate (Nodo)

point (Campo)

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

IndexedLineSet (Nodo)

PointSet (Nodo)

Page 29: Libro Vrml

Virtual Reality Modeling Languaje

#VRML V2.0 utf8

Shape { #Vamos a retirarle una cara e introducimos un cubo pequeño dentro de la mismaappearance 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

Page 30: Libro Vrml

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

Page 31: Libro Vrml

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

Page 32: Libro Vrml

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 regrese0, 4, 5, 1, -1, #a su origen1, 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

Page 33: Libro Vrml

Virtual Reality Modeling Languaje

Nodo PointSetEs 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

] } } }

WHITEDUNEConstruyamos 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

Page 34: Libro Vrml

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.

ING. GERARDO NAVA HERNÁNDEZ

Viewpoint(Nodo)

position (Campo)

orientation (Campo)

description (Campo)

Page 35: Libro Vrml

Virtual Reality Modeling Languaje

#VRML V2.0 utf8Viewpoint {

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

Page 36: Libro Vrml

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.

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

COLISIONESEste 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.

#VRML V2.0 utf8

Collision { #Nodo que genera las colisionescollide TRUE # Activamos las colisiones false o desactivachildren [

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

Collision(Nodo)

collide (Campo)

Page 37: Libro Vrml

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.

ANCHORSLa 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.

#VRML V2.0 utf8 Anchor { children

Transform { translation 0 0 -5children [

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

Anchor(Nodo)

url (Campo)

Page 38: Libro Vrml

Virtual Reality Modeling Languaje

ANTES DESPUÉS

INLINEEs 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

Page 39: Libro Vrml

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

Page 40: Libro Vrml

Virtual Reality Modeling Languaje

TEXTEs 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.

#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

geometry (Campo)

FontStyle (Nodo)

Text (Nodo)

string (Campo)

fontStyle (Campo)

Page 41: Libro Vrml

Virtual Reality Modeling Languaje

WHITEDUNEPara 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

Page 42: Libro Vrml

Virtual Reality Modeling Languaje

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

#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 ubicarchildren 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 originalesSFColor (single-valued field color, campo de color univaluado)

ING. GERARDO NAVA HERNÁNDEZ

PROTO (nodo)

fielmSFcolor (Campo) fielmSFvec3f (Campo)

Page 43: Libro Vrml

Virtual Reality Modeling Languaje

DEF – USESi 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.

#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

DEF (nodo nombre)

USE (nodo)

Page 44: Libro Vrml

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

Page 45: Libro Vrml

Virtual Reality Modeling Languaje

ING. GERARDO NAVA HERNÁNDEZ

Page 46: Libro Vrml

Virtual Reality Modeling Languaje

Importando en VRMLWings 3DSoftware 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

Page 47: Libro Vrml

Virtual Reality Modeling Languaje

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

ING. GERARDO NAVA HERNÁNDEZ

Page 48: Libro Vrml

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

Page 49: Libro Vrml

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