• No se han encontrado resultados

UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS

N/A
N/A
Protected

Academic year: 2021

Share "UNIVERSIDAD NACIONAL MAYOR DE SAN MARCOS"

Copied!
11
0
0

Texto completo

(1)

Facultad de Ciencias Matem´aticas

Escuela Profesional de Computaci´on Cient´ıfica

Computaci´

on Cient´ıfica

T´ıtulo:

Computaci´

on Gr´

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

(2)

¿Qu´e es VRML?

El Virtual Reality Modeling Language (VRML) es un formato de archivo para describir mundos 3D interactivos y objetos. El mundo en 3D descrito por el archivo VRML define un escenario gr´afico, permite al usuario interactuar y asumir m´ultiples puntos de vista.

PROYECTOS

1. Mesita

Colocamos 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.80 children [ Shape { appearance Appearance { material Material { diffuseColor 0.45 0.86 0.66 emissiveColor 0.17 0.760.13 specularColor 1 1 1 ambientIntensity 0.80 transparency 0.00 shininess 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 ]

(3)

0.0 1.0 0.0 3.14, 0.0 1.0 0.0 6.28 ]

}

DEF tiempo TimeSensor { cycleInterval 2.0

loop TRUE }

ROUTE tiempo.fractionchanged TO mueve.setfraction ROUTE mueve.valuechanged TO mesa.rotation

En el campo Key se indica que no girar´a en el eje x, en el eje y solo la mitad para que los objetos giren y en el eje z para que a la vista del observador al dar toda la vuelta se repita la imagen 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 continuaci´on la imagen:

2. Avioneta

Elaboramos con el Nodo Group:

Group { children [

(4)

Se definir´a 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 utilizar´a la siguiente estructura con las primitivas:

T ransf orm { translation , rotation children[ Shape { appearance Appearance{ material M aterial{ dif f useColor f loat transparency f loat}} geometry}

]}

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

(5)

3. Sistema Solar

Hemos 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 url utilizando la estructura anterior de Nodo Transform, solo modificamos el siguiente campo:

appearance Appearance { texture ImageT exture {

url ”http : //www.trucospc.inf o/public/espacio/Estrellas.jpg”} }

Realizamos la animaci´on el cual consiste en que los planetas giren alrededor del Sol y sobre su eje para ello utilizamos DEF ZEIT TimeSensor y DEF Giro OrientationInterpola-tor, para controlar la rapidez y la orientaci´on respectivamente de la siguiente forma:

DEF Zeit TimeSensor {

cycleInterval 10.0 loop TRUE }

DEF Giro OrientationInterpolator { key [intervalodetiempo]

keyValue [ ] }

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

(6)

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

De igual manera se definir´an los dem´as planetas con la palabra reservada DEF, s´olo que su giro lo controlaremos con el interpolador PositionInterpolator que posee la misma estructura que OrientationInterpolator, con la misma palabras reservadas ROUTE, TO.

4. Colores primarios

Introducimos un Nodo de entorno NavigationInfo con el campo type que elimina todo tipo de controladores. Su estructura es:

NavigationInfo { type ”NONE”}

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

Text {

string [C¸ ombinacion de Colores Primarios”] fontStyle FontStyle { family ”SERIF”, style ¨ITALIC”, size 0.5 spacing 1 } }

(7)

Con la palabra reservada DEF definimos TransformR donde formaremos nuestro mezcla de colores, 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 combinaci´on de colores en forma gradual utilizaremos el nodo Script que dota a los mundos virtuales de vida. Si bien como se ha visto con los sensores e interpoladores se consegu´ıa cierto dinamismo, cuando se necesitan tomar decisiones, realizar repeticiones o guar-dar informaci´on, la ´unica opci´on es aprovechar las bondades que ofrece el nodo Script.Tiene la siguiente estructura:

Se definir´a los eventos que ocurrir´a al interactuar con cada esfera de la siguiente manera:

eventIn SFFloat color eventIn SFTime redTime eventIn SFTime greenTime eventIn SFTime blueTime eventIn SFTime centralTime

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

Con javascript provee las bibliotecas para controlar la transferencia de color y volver al estado 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 la siguiente funci´on:

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

(8)

localCentral.diffuseColor[0] = 0; localCentral.diffuseColor[1] = 0; localCentral.diffuseColor[2] = 0;

/*tambi´en pone en false todas las variables de control:*/ red = false;

green = false, blue = false; }

(9)

5. Barrera

Utilizando la estructura ya indicada anteriormente del Nodo Transform construiremos nuestra barrera, aqu´ı utilizaremos el sensor TimeSensor de la siguiente manera:

DEF Rampa TimeSensor { cycleInterval 10

loop FALSE }

El cual indica que en 10 segundos no bajar´a la barrera.

Tambi´en utilizaremos el sensor TouchSensor para detectar cuando el usuario sit´ua el mouse en el bot´on verde lo cual indicar´a el ascenso de la barrera.

Se muestra a continuaci´on la figura:

6. Aprendiendo ejes

Primero definimos con la palabra reservada PROTO los cambios de valores que tendremos para mover los ejes(0 a 1)presenta la siguiente estructura:

PROTO SliderPot [

eventOut SFFloat valuechanged field SFFloat scaleFactor 1.0 field SFFloat centerDetent 0.05 field SFFloat initialValue 0.0

] Ahora formaremos nuestras figuras por puntos y fijaremos la orientaci´on de la uniones de los v´ertices con el nodo IndexedFaceSet en el campo geometry de la siguiente manera:

(10)

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 PlaneSensor maxPosition 0 4 minPosition 0 -4 }

Se ubicar´a donde se ver´a los cambio de valor de la siguiente manera:

Transform {

translation -0.045 -0.045 0 children [

DEF Xpot SliderPot {} ]

}}

Con IndexedLineSet se formar´a 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 nodos Script cambiaremos los n´umeros al movilizar la caja y rotaremos. A continuaci´on las figuras:

(11)

Referencias

Documento similar

Proporcione esta nota de seguridad y las copias de la versión para pacientes junto con el documento Preguntas frecuentes sobre contraindicaciones y

Entre nosotros anda un escritor de cosas de filología, paisano de Costa, que no deja de tener ingenio y garbo; pero cuyas obras tienen de todo menos de ciencia, y aun

Por lo tanto, en base a su perfil de eficacia y seguridad, ofatumumab debe considerarse una alternativa de tratamiento para pacientes con EMRR o EMSP con enfermedad activa

The part I assessment is coordinated involving all MSCs and led by the RMS who prepares a draft assessment report, sends the request for information (RFI) with considerations,

o Si dispone en su establecimiento de alguna silla de ruedas Jazz S50 o 708D cuyo nº de serie figura en el anexo 1 de esta nota informativa, consulte la nota de aviso de la

Teniendo en cuenta su mayor exposición a renta variable, y que su gestión fija un objetivo de volatilidad más alto que el Conservador FI, podemos afirmar que se

Las manifestaciones musicales y su organización institucional a lo largo de los siglos XVI al XVIII son aspectos poco conocidos de la cultura alicantina. Analizar el alcance y

López de la Vieja, Catedrática de la Universidad de Salamanca, nos invita a reflexionar sobre diversos temas en el ámbito de la bioética: el pensar en el final de