VRML

11
UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS Facultad de Ciencias Matem´ aticas Escuela Profesional de Computaci´on Cient´ ıfica Computaci´onCient´ ıfica ıtulo: Computaci´onGr´ afica Alumnos: Reyes Fern´andez Grecia Aranda Camargo Gissella Rojas Pinedo Juan Jos´ e Hern´ andez Maturrano Alex Fernandez Salcedo Antonio 2010-II LIMA-PER ´ U

Transcript of VRML

Page 1: VRML

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

Facultad de Ciencias Matematicas

Escuela Profesional de Computacion Cientıfica

Computacion Cientıfica

Tıtulo:

Computacion Grafica

Alumnos:

Reyes Fernandez Grecia

Aranda Camargo Gissella

Rojas Pinedo Juan Jose

Hernandez Maturrano Alex

Fernandez Salcedo Antonio

2010-IILIMA-PERU

Page 2: VRML

Computacion Grafica

¿Que es VRML?El Virtual Reality Modeling Language (VRML) es un formato de archivo para describir mundos 3Dinteractivos y objetos. El mundo en 3D descrito por el archivo VRML define un escenario grafico,permite al usuario interactuar y asumir multiples puntos de vista.

PROYECTOS

1. MesitaColocamos color de fondo con el Nodo Background con la siguiente estructura:

Background {groundColor [0.05 0.43 0.48,0.26 0.61 0.43]skyColor [0.01 0.36 0.71, 0.58 0.35 0.19]}

Ubicamos la distancia que el usuario observara la imagen con el Nodo Viewpoint con la si-guiente estructura:

Viewpoint {position 0 0 15}

Finalmente con la estructura del Nodo Transform expuesta en clase, por ejemplo:

Transform {translation -5.30 -3.50 2.80children [Shape {appearance Appearance {material Material {diffuseColor 0.45 0.86 0.66emissiveColor 0.17 0.760.13specularColor 1 1 1ambientIntensity 0.80transparency 0.00shininess 1} }geometry Box {size 0.25 3 0.25 }}]}

Finalmente,lo haremos girar con las siguientes definiciones:

DEF mueve OrientationInterpolator {key [ 0.0, 0.5, 1.0 ]keyValue [ 0.0 1.0 0.0 0,

2

Page 3: VRML

Computacion Grafica

0.0 1.0 0.0 3.14,0.0 1.0 0.0 6.28]}

DEF tiempo TimeSensor {cycleInterval 2.0loop TRUE }ROUTE tiempo.fractionchanged TO mueve.setfractionROUTE mueve.valuechanged TO mesa.rotation

En el campo Key se indica que no girara en el eje x, en el eje y solo la mitad para que losobjetos giren y en el eje z para que a la vista del observador al dar toda la vuelta se repita laimagen inicial. El TimeSensor controlaremos la rapidez y finalmente con ROUTE Y TO indi-camos tiempo en que se cambiara los las coordenadas y en que objeto variara las coordenadas.Se muestra a continuacion la imagen:

2. AvionetaElaboramos con el Nodo Group:

Group {children [PartesdelaAvioneta ] }

3

Page 4: VRML

Computacion Grafica

Se definira cada una de sus partes con la palabra reservada DEF :

DEF PLANE

DEF FUSELAGE

DEF WING

DEF LWING

DEF UWING

DEF PILOT

DEF SCARF

DEF HORSTAB

DEF VERSTAB

DEF NOSE

DEF PROP

En cada una de ella se utilizara la siguiente estructura con las primitivas:

Transform {translation , rotationchildren[Shape {appearanceAppearance{materialMaterial{diffuseColor floattransparency float}}geometry}]}

Con el sensor SphereSensor hacemos que el usuario pueda interactuar mediante el cursor con elobjeto haciendo movimientos circulares.

4

Page 5: VRML

Computacion Grafica

3. Sistema SolarHemos realizado es un Sistema Solar para el cual primero hemos creado un cubo con 6 planos(200 de ancho, 200 de altura y 0.1 de grosor), como fondo hemos utilizamos la imagen con urlutilizando la estructura anterior de Nodo Transform, solo modificamos el siguiente campo:

appearanceAppearance {texture ImageTexture {url ”http : //www.trucospc.info/public/espacio/Estrellas.jpg”}}

Realizamos la animacion el cual consiste en que los planetas giren alrededor del Sol y sobresu eje para ello utilizamos DEF ZEIT TimeSensor y DEF Giro OrientationInterpola-tor, para controlar la rapidez y la orientacion respectivamente de la siguiente forma:

DEF Zeit TimeSensor{cycleInterval 10.0loop TRUE}

DEF Giro OrientationInterpolator {key [intervalodetiempo]keyValue [ ] }

Definimos el Sol con la estructura de la Nodo Transform y su respectivo url de su textura.Tambien con la palabra reservada ROUTE el cual nos sirve para activar ZEIT TimeSensor y

5

Page 6: VRML

Computacion Grafica

Giro OrientationInterpolator con respecto al objeto Sol.ROUTE Zeit.fractionchanged TO Giro.setfractionROUTE Giro.valuechanged TO Sol.setrotation

De igual manera se definiran los demas planetas con la palabra reservada DEF, solo que sugiro lo controlaremos con el interpolador PositionInterpolator que posee la misma estructuraque OrientationInterpolator, con la misma palabras reservadas ROUTE, TO.

4. Colores primariosIntroducimos un Nodo de entorno NavigationInfo con el campo type que elimina todo tipo decontroladores. Su estructura es:

NavigationInfo { type ”NONE”}

Introducimos texto dentro del mundo virtual con el Nodo Text con la siguiente estructura:

Text {string [Combinacion de Colores Primarios”]fontStyle FontStyle {family ”SERIF”,style ITALIC”,size 0.5spacing 1} }

6

Page 7: VRML

Computacion Grafica

Con la palabra reservada DEF definimos TransformR donde formaremos nuestro mezcla decolores, formaremos tres esferas con sus respectivos sensor definidos de la siguiente manera:

DEF SensorCentral TouchSensor

DEF SensorRed TouchSensor

DEF SensorGreen TouchSensor

DEF SensorBlue TouchSensor

Para lograr la combinacion de colores en forma gradual utilizaremos el nodo Script que dotaa los mundos virtuales de vida. Si bien como se ha visto con los sensores e interpoladores seconseguıa cierto dinamismo, cuando se necesitan tomar decisiones, realizar repeticiones o guar-dar informacion, la unica opcion es aprovechar las bondades que ofrece el nodo Script.Tiene lasiguiente estructura:

Se definira los eventos que ocurrira al interactuar con cada esfera de la siguiente manera:

eventIn SFFloat coloreventIn SFTime redTimeeventIn SFTime greenTimeeventIn SFTime blueTimeeventIn SFTime centralTime

Se definen los campos: red, green, blue las cuales inicializa la transferencia de colores ylocalred, localblue, localgreen, controla directamente la intensidad del color de cada esferaal combinar.

Con javascript provee las bibliotecas para controlar la transferencia de color y volver alestado inicial definiendo las siguientes funciones:

function redTime(v,t)function greenTime(v,t)function blueTime(v,t)function centralTime(v,t)function color(v,t)

Por ejemplo: Si clicamos en la esfera central todos los colores vuelven al estado inicial con lasiguiente funcion:

function centralTime(v,t){localRed.diffuseColor[0] = 1;localGreen.diffuseColor[1] = 1localBlue.diffuseColor[2] = 1;

7

Page 8: VRML

Computacion Grafica

localCentral.diffuseColor[0] = 0;localCentral.diffuseColor[1] = 0;localCentral.diffuseColor[2] = 0;/*tambien pone en false todas las variables de control:*/red = false;green = false,blue = false;}

8

Page 9: VRML

Computacion Grafica

5. BarreraUtilizando la estructura ya indicada anteriormente del Nodo Transform construiremos nuestrabarrera, aquı utilizaremos el sensor TimeSensor de la siguiente manera:

DEF Rampa TimeSensor {cycleInterval 10loop FALSE}El cual indica que en 10 segundos no bajara la barrera.Tambien utilizaremos el sensor TouchSensor para detectar cuando el usuario situa el mouse enel boton verde lo cual indicara el ascenso de la barrera.

Se muestra a continuacion la figura:

6. Aprendiendo ejesPrimero definimos con la palabra reservada PROTO los cambios de valores que tendremos paramover los ejes(0 a 1)presenta la siguiente estructura:

PROTO SliderPot [eventOut SFFloat valuechangedfield SFFloat scaleFactor 1.0field SFFloat centerDetent 0.05field SFFloat initialValue 0.0] Ahora formaremos nuestras figuras por puntos y fijaremos la orientacion de la uniones de losvertices con el nodo IndexedFaceSet en el campo geometry de la siguiente manera:

9

Page 10: VRML

Computacion Grafica

geometry IndexedFaceSet {coord Coordinate {point [-1.5 -5 0, -0.25 -5 0, 0.25 -5 0, 1.5 -5 0,-0.25 -4 0, 0.25 -4 0, -0.25 4 0, 0.25 4 0,-1.5 5 0, -0.25 5 0, 0.25 5 0, 1.5 5 0]coordIndex [0 1 9 8 -1, 2 3 11 10 -1,1 2 5 4 -1, 6 7 10 9 -1]{ }

Luego fijaremos el plano sensor en una caja con la moveremos los valores de la siguiente manera:

DEF PS PlaneSensormaxPosition 0 4minPosition 0 -4}

Se ubicara donde se vera los cambio de valor de la siguiente manera:

Transform {translation -0.045 -0.045 0children [DEF Xpot SliderPot {}]}}

Con IndexedLineSet se formara los ejes coordenados de la siguiente manera:

geometry IndexedLineSet {coord Coordinate {point [ -4 0 0, 4 0 0, 0 -3 0, 0 3 0, 0 0 -4, 0 0 4 ]}coordIndex [ 0 1 -1, 2 3 -1, 4 5 -1]}}

Con IndexedLineSet, IndexedFaceSet formaremos los ejes y las caras del tetraedro res-pectivamente, teniendo la misma estructura que IndexedLineSet. Finalmente con dos nodosScript cambiaremos los numeros al movilizar la caja y rotaremos. A continuacion las figuras:

10

Page 11: VRML

Computacion Grafica

11