Presentación Asignaturas Investigación Publicaciones Servicios Blogs Investigación  
Inicio HTCA logo
escuela técnica superior de arquitectura universidad de sevilla  

Texturas y luces

Marzo 4th, 2010 by rvg3

La incorporación de texturas es un gran inconveniente en archivos pesados. Las texturas ralentizan la navegación en la aplicación y hemos optado por aplicar textura sólo en el plano de suelo para facilitar la visualización de la escena.

Esta textura ha sido aplicada directamente sobre el modelo de Rhino, y sólo ha sido necesario graduar los parámetros de brillo de la imagen.

El fondo de cielo ha sido insertado de varias maneras.

Probamos a insertar una esfera de gran radio y texturizarla en Rhino, pero no conseguimos que esta textura fuera visible desde el interior, sólo desde el exterior.

También tratamos de describir los parámetros manualmente en .wrl asignando colores por intervalos de ángulo, y queda una transición de colores en cúpula y un plano bajo  el horizonte. Pero el código de los colores no se corresponde con el código RGB.

cielo-colores.JPG

nhue2.gif

Finalmente decidimos que se visualiza mejor escribiendo en .wrl la siguiente secuencia de comandos:

# Fondo

Background {
frontUrl “cielo.jpg”
backUrl “cielo.jpg”
topUrl “cielo.jpg”
bottomUrl “cielo.jpg”
rightUrl “cielo.jpg”
leftUrl “cielo.jpg”
}

donde “cielo.jpg” es la imagen que asociamos.

fondo-definitivo.JPG

Introducir parámetros de movimiento en objetos de la escena

Marzo 4th, 2010 by rvg3

A lo largo del curso hemos investigado diferentes formas de interactuar con los objetos. Al principio estudiamos un movimiento programado directamente en 3DStudio. Conseguimos mover objetos aparentemente de manera aleatoria, pero que respondían a un bucle cerrado.

(IMAGEN AJEDREZ)

Sin embargo los movimientos introducidos en nuestro modelo de trabajo actual han sido escritos en lenguaje VRML.

Podemos interactuar con objetos, por ejemplo, empujándolos a voluntad sobre un plano. Para ello restringimos su movimiento coartando ejes.

En el objeto del avión hemos coartado dos ejes por lo que sólo tenemos permitido desplazarlo en una dirección. El pato puede moverse en el plano x,z  correspondiente al plano del suelo. Además se deben definir unas coordenadas límite para no perder de vista el objeto.

Group {
children [
Transform {
children [
DEF SENSOR2 PlaneSensor {
maxPosition       1     0
minPosition     -40    0

}
DEF SLIDER2 Transform {
children [

Shape { # AVION

(AQUÍ VA EL CÓDIGO DEL MODELO)

]
}
]
}
Transform {
rotation   0   0   0   1.57
children [

]
}
]
}

ROUTE SENSOR2.translation_changed TO SLIDER2.translation
Si comparamos con el código del pato:

DEF SENSOR PlaneSensor {
maxPosition   200   100   200
minPosition  -400   -10   400

}
DEF SLIDER Transform {
children [

Hemos investigado el movimiento de un objeto asociado a la geometría de otro, consiguiendo desplazar el pato sobre una cinta de moebius siguiendo el puntero del ratón.

moebius2.JPG

El único movimiento automático en nuestro modelo es el que llevan a cabo los dos globos aerostáticos situados en el exterior.

Describen este movimiento como un bucle en el que  definimos las coordenadas de un punto inicial, uno intermedio y uno final, en este caso coincidiendo con el inicial. El comando de interpolación de posición se encarga de definir los puntos intermedios. La velocidad se define asignando  el número de vueltas que se desean en un intervalo de tiempo  estándar.

En nuestro modelo cada globo describe trayectorias verticales a distinta velocidad.

Los comandos de tiempo van al inicio, pero la descripción del movimiento está  asociada a cada modelo.

#Tiempo G2
DEF TIMER TimeSensor {
cycleInterval   10
loop TRUE
}

#Tiempo G1
DEF TIMER1 TimeSensor {
cycleInterval   8
loop TRUE
}

#Interpolación de posición para GLOBO2

Transform {
rotation    0   1   0   4.18
children [
# DirectionalLight {
# ambientIntensity 0.75
# }
DEF POSINT PositionInterpolator {
key [  0,   0.5,   1]
keyValue [   1   20   -10,
1     2    -10,
1   20   -10 ]
}

DEF POSTGT Transform {
translation    0   3   -10
children [

Shape { # GLOBO2
(AQUÍ VA EL CÓDIGO DEL MODELO)

]
}
]
}

ROUTE TIMER.fraction_changed TO POSINT.set_fraction
ROUTE POSINT.value_changed TO POSTGT.set_translation

#FIN Interpolación de posición para GLOBO2

#INICIO Interpolación de posición para GLOBO1

Transform {
rotation  0   1   0   4.18
children [
#DirectionalLight {
#ambientIntensity 0.75
#}
DEF POSINT1 PositionInterpolator {
key [0,   0.5,   1]
keyValue [   1   20   -10,
1    2    -10,
1   20   -10 ]
}

DEF POSTGT1 Transform {
translation   0   3   -10
children [

Shape { # GLOBO1
(AQUÍ VA EL CÓDIGO DEL MODELO)

]
}
]
}

ROUTE TIMER1.fraction_changed TO POSINT1.set_fraction
ROUTE POSINT1.value_changed TO POSTGT1.set_translation

#FIN Interpolación de posición para GLOBO1

Sonidos

Marzo 4th, 2010 by rvg3

Hemos introducido un sonido ambiental y otros asociados a algunos objetos.

El principal inconveniente es localizar una coordenada en concreto donde asignar el foco de sonido.

Hemos ubicado el sonido ambiente en un punto central de la plaza con un radio amplio de difusión. Cuando el avatar se aleja del foco, el sonido pierde intensidad.

 #sonido AMBIENTE

AudioClip {   url          “voegel_auf_der_strasse.wav”
description  “voegel_auf_der_strasse.wav”
loop         1
pitch        1.0
}


Sound {
source AudioClip { url “voegel_auf_der_strasse.wav”loop TRUE startTime 1
}
intensity        1
location          3   8   7
direction       -20.0  -8.0  1.0
minFront     5.0
minBack      5.0
maxFront     100.0
maxBack      100.0
spatialize   TRUE
priority     0
}

El sonido puede ser omnidireccional o dirigido.

Hay puntos donde los distintos sonidos se superponen y podríamos dar prioridad a uno frente a otro , pero no es nuestro caso y pueden escucharse los dos a la vez según la situación (priority  0).

Hay que destacar que el archivo de audio debe estar en la misma carpeta que el archivo .wrl, para que lo reconozca. Si esto no fuera así, deberá copiarse la ruta completa del archivo de audio asociado.

Los audio son .wav, .mid o .mp3

Limitación de la escena

Marzo 4th, 2010 by rvg3

Nuestro modelo de plaza no dispone de límites físicos, por lo que cuando se camina hasta el borde del modelo el avatar cae fuera (hasta el plano virtual de suelo del .wrl) y no puede regresar arriba sin reiniciar la navegación.

Para evitar eso hemos construido unas paredes transparentes que rodean el perímetro de la plaza. Estas han sido modeladas en Rhino en el archivo original, exportadas a .wrl independientemente y combinadas con la escena mediante el comando “inline”

limites.JPG

Modificación del punto de vista inicial

Marzo 4th, 2010 by rvg3

Hay varios tipos de modos de navegación por la escena (examinar, volar, caminar….). Hemos definido como modo por defecto el de “caminar”, para facilitar al usuario la exploración del edificio. Este comando se escribe al principio del archivo .wrl

 NavigationInfo { type “WALK” }

Con la exportación el avatar aparece fuera de la escena. Para modificar su posición de inicio (la vista al abrir el .wrl) hemos probado coordenadas hasta dar con la posición real de los ejes en .wrl y después escrito manualmente en el código las coordenadas que deseábamos.

Además, esta secuencia de código permite la orientación de la vista, de la forma:     x, y, z, φ   donde φ se mide en radianes.

En nuestro caso:

DEF Camera01 Viewpoint {
position         3    6.6    7
orientation   0    1    0   1.2
fieldOfView   1

description “Camera01″
}

En “fieldOfView” se distorsiona el ángulo de perspectiva de la imagen. El valor 1 da una vista bastante real.

Introducir objetos externos a la escena

Marzo 4th, 2010 by rvg3

Para la introducción de los objetos modelados de forma externa a la escena principal, hemos tenido que aprender a utilizar el código interno de los archivos VRML siendo una técnica muy laboriosa, tediosa y que produce multitud de errores.

En primer lugar hemos generados archivos .wrl desde los programas de modelado de la escena y de los objetos por separado, para finalmente combinar los archivos por medio del comando “Inline” generando un archivo “base” y varias referencias a otros archivos. Con esto se construye la escena al completo y se facilita la accesibilidad a cada objeto para su modificación.

#  Nodo Inline para visualización conjunta:

# Plaza
Inline { url “plaza_derCOD.wrl” },

# Avion
Inline { url “avion_derMOV6.wrl” },

# Pato
Inline { url “pato_derMOV2.wrl” },

# Globos
Inline { url “globos_derMOV1.wrl” },

# Superficie patos
Inline { url “superficiepatos_derCOD.wrl” },

# Límites
Inline { url “limites_der.wrl” },

# Sonidos
Inline { url “sonido pato_der.WRL” },

Modelado y exportación de la escena y objetos con Rhino y Sketchup

Marzo 4th, 2010 by rvg3

Para generar el mundo donde se desarrolla todo nuestro trabajo, hemos utilizado la herramienta Rhinoceros, modelando a partir de planos importados desde Autocad.

Hemos optado por un gran edificio donde predomina una amplia plaza cubierta para poder llevar a cabo en su interior multitud de actividades y recorridos. A su vez el pabellón dispone de una compleja arquitectura que invita al visitante a descubrir su interior.

Para otros objetos de menor complejidad hemos utilizado el programa Sketchup y Rhino. Estos objetos son los que luego dentro del mundo interactuarán con los usuarios.

globo.JPG

avion.jpg

patito.JPG

Al exportar a VRML hay que tener en cuenta que los ejes que se reconocen no coinciden con los de Rhino, por lo que se ha tenido que girar el modelo previo a la exportación. Si no, el modelo se inicia al revés y el avatar camina por superficies que no son el suelo.

plaza-al-reves.JPG

Para que los objetos se sitúen en las coordenadas donde deben al importarlos desde el .wrl, ha sido necesario meterlos en el archivo Rhino de la plaza y, una vez situados y orientados correctamente, exportados individualmente a otro archivo Rhino, de donde obtenemos los códigos a modificar. Estos objetos deben estar terminados (con colores y texturas,…) para no repetir este paso innecesariamente.

Presentación objetivos RVg3

Noviembre 26th, 2009 by rvg3

Grupo 3.  Silvia García-Estrada Mateo, Mª Jesus Sevilla Padrón, Francisco Torres Moreno, Katja Christina Wolf

Objetivo del curso: Crear eventos animados en una plaza pública

Comenzamos por probar animaciones básicas en 3D studio, y ver cómo se comportan al exportarlas a VRML