Realidad
Virtual
información adicional: semestre marzo - julio 2003
jaume ferrer i rosera
Módulo práctico A: Práctica 1 de Evaluación
Continuada (PEC1)
Desarrollo de una pecera virtual
Aplicación de Realidad Virtual elemental con
VRML, JavaScript y HTML
Fechas
Descripción
Criterios de evaluación
Enunciado
Forma de trabajo y de entrega
Fases de trabajo
Recursos
<<< Fechas
Publicación del enunciado: 24 de marzo de 2003
Límite para la entrega final: 5 de mayo de 2003
<<< Descripción
Se plantea el desarrollo mediante VRML de algunos modelos de interacción básicos para comprender de un modo práctico los conceptos que paralelamente se estarán trabajando en los módulos didácticos y en el tutorial de VRML. El objetivo es poner en práctica conceptos de RV y familiarizarse con el scripting de VRML y JavaScript para poder afrontar el módulo Práctico B con una base conceptual y procedimental adecuada.
<<< Criterios de evaluación
Se considera que el desarrollo de algoritmos mediante un lenguaje de programación (en este caso JavaScript en combinación con VRML) es parte fundamental del aprendizaje, por lo que un 20% de la nota de esta Práctica se obtendrá a partir del uso intensivo de scripting. Por ello, aunque la mayor parte del trabajo podrá resolverse mediante el uso de VRML básico y algunos scripts de JavaScript sencillos (versiones de la 1 hasta la 7), para conseguir la nota máxima será necesario demostrar, además, conocimientos de programación más sofisticados (versiones de la 8 hasta la 11).
<<< Enunciado
La propuesta parte de un ejemplo cotidiano de sistema interactivo simple: un pez que se desplaza dentro de una pecera. Pretendemos que seáis capaces de desarrollar una aplicación en la cual un objeto virtual manifieste un comportamiento autónomo que pueda ser modificado por la existencia del propio entorno y por la presencia y acción del propio usuario. Todo ello a tiempo real en un entorno 3D visualizable online.
No se trata de llevar a cabo una simulación. Para esta primera práctica el aspecto de nuestros objetos y de nuestro entorno así como sus comportamientos serán secundarios, por lo que todo el trabajo se centrará en conseguir una interacción fluida que se ajuste al enunciado prescindiendo de geometrías, texturas, iluminaciones o comportamientos sofisticados.
Nuestro 'pez' será en principio un objeto geométrico muy simple al cual únicamente en la fase final podremos añadir mayor complejidad. Será el actor principal de una aplicación que deberéis presentar en diferentes versiones, correspondientes cada una a diferentes niveles de implementación y a diferentes modelos de interacción.
Tal y como se explica en el apartado criterios de evaluación, desarrollar las cuatro últimas versiones (de la 8 hasta la 11) no se considera imprescindible para aprobar esta práctica pero sí necesario para obtener la máxima puntuación.
Recordad que disponéis de una página de FAQs sobre VRML y scripting con abundantes ejemplos así como de resultados similares de la PEC1 obtenidos en ediciones anteriores. Sobre el uso de scripting, la FAQ 15 puede resultar especialmente reveladora puesto que está comentada en detalle.
<<< Forma de trabajo y de entrega
El resultado de la práctica será una serie de 11 versiones distintas de la misma aplicación, de menor a mayor complejidad. Cada versión deberá estar programada en un único archivo de tipo WRL, distinto para cada versión. Deberéis crear una pequeña publicación web divida en dos frames. El primer frame contendrá un doble índice: enlaces a los 11 archivos WRL y a otros tantos 11 archivos de igual contenido pero renombrados a extensión TXT. De este modo podremos acceder a nuestros mundos de RV o bien visualizar su código de programación. El segundo frame se usará para cargar los archivos enlazados.
Dicha publicación web deberá prepararse desde el primer momento y colgarse en el espacio destinado a vuestra página personal (o en cualquier otro espacio web que prefiráis), enviando un mensaje al foro para facilitar su url. A medida que dispongáis de nuevas versiones se tratará de ir actualizando vuestra web. Con ello se pretende que el consultor pueda llevar acabo un seguimiento de vuestro trabajo y al mismo tiempo se facilita la visibilidad al resto del grupo para que todo el mundo tenga acceso a la forma de plantear y de resolver la práctica de los demás.
En el apartado siguiente se indica en qué consiste cada versión. En cuanto a la entrega final, además de publicarse en la web también deberán reunirse todos los archivos en una carpeta zip y enviarse al buzón de evaluación de la asignatura.
<<< Fases de trabajo
Recordad que se trata de versiones distintas de la misma aplicación, però que se guardarán como archivos independientes para poder acceder a todas ellas por separado, y que será necerario generar un archivo con extensión WRL y otro con extensión TXT para cada versión:
Versiones basadas en VRML y scripting básico: de realización obligatoria para aprobar la práctica
Durante las primeras semanas de realización de esta práctica estaréis llevando a cabo el estudio del tutorial de VRML, por lo que todavía os encontraréis en plena fase de introducción y de aprendizaje. Se recomienda realizar los ejercicios propuestos en el propio tutorial según la temporización prevista y paralelamente avanzar algunos capítulos para empezar a realizar pruebas con las primeras versiones de la aplicación propuesta. Recordad que a medida que finalicéis cada versión deberéis publicarla en vuestra página personal.versión 1
objeto que se desplaza por interpolación
Empezaremos con un sistema con el cual el usuario todavía no podrá interaccionar. Se trata desarrollar en VRML una sencilla aplicación que consista en un objeto (nuestro pez) que se desplaza continuamente nada más cargarse el visualizador. Bastará con una primitiva (una caja, una esfera... ) que cambie de posición mediante un PositionInterpolator enrutado a un TimeSensor y con otra primitiva que se mantenga fija en el espacio para que nos sirva de referencia para poder apreciar el movimento. Esto se explica en el capítulo 14 del tutorial.versión 2
uso de PROTO
Algunos objetos pueden crearse como instancias de prototipos. Encontraréis explicaciones en el capítulo 9 del tutorial, así como ejemplos en diversas FAQs de la asignatura.versión 3
objeto que se desplaza y se mueve en relación a sí mismo
En esta versión nuestro sistema dispondrá de un comportamiento un poco más complejo y localizado. Nuestro pez estará formado por varios objetos juntos o cercanos (pueden ser primitivas) en lugar de uno solo. Se tratará de que además de desplazarse según la versión anterior, el pez también agite su propio cuerpo, es decir, de que cada elemento tenga un movimiento propio en relación a los demás. Este movimiento más local también puede conseguirse por el mismo procedimiento que en la versión anterior, usando transformaciones de traslación o de rotación. Tenéis un ejemplo en la FAQ 9.versión 4
uso texturas, billboarding y viewpoints
Se añadirán nuevos puntos de vista al mundo VRML y se dotará a los objetos de algunas texturas. Aquí deberían aplicarse técnicas de billboarding. Encontraréis explicaciones en los capítulos 4, 7, 8, 10 y 12 del tutorial.versión 5
botón de marcha-paro
Añadiremos al sistema una interfaz virtual que permita recoger acciones del usuario para conseguir una interacción reactiva muy básica. Para ello añadiremos a nuestro mundo VRML un nuevo objeto (puede tratarse de otra primitiva) con un TouchSensor, es decir, con un sensor que detecte el clic de nuestro ratón al apuntarlo con el cursor. Este TouchSensor estará enrutado con el mecanismo de movimiento de las versiones anteriores. Con ello conseguiremos parar o poner el marcha el pez a nuestra voluntad. Esto se explica en el capítulo 15 del tutorial y tenéis un ejemplo en la FAQ 19 y la FAQ 10.versión 6
sensores y rutas
Se trataría de añadir objetos que fuese posible modificar mediante el empleo de interpoladores enrutados a distintos sensores (touch sensor, cylinder sensor, sphere sensor). Encontraréis explicaciones en los capítulos 15, 16 y 17 del tutorial.versión 7
detección de límites
Aquí conseguiremos que un objeto que se desplaza rebote al llegar a ciertos límites y no llegue a superarlos. Tenéis un ejemplo en la FAQ 18.Versiones basadas en VRML y scripting avanzado: de realización necesaria para obtener la máxima puntuación
Cuando lleguéis a estas últimas versiones ya estaréis familiarizados con el VRML y habréis finalizado el tutorial por lo que encaminaremos nuestros esfuerzos a ampliar los conocimientos sobre la conexión entre VRML y JavaScript para conseguir comportamientos complejos.versión 8
trayectoria compleja
Trabajaremos con un comportamiento del pez más complejo que pasará por substituir el movimiento simple basado en el PositionInterpolator mediante un script de JavaScript que defina las distintas posiciones a partir de un algoritmo aplicando ciertas reglas para definir la trayectoria y contorsiones del pez. Dicho algoritmo será de creación totalmente libre con la sola limitación de que incluya un factor aleatorio que añada imprevisibilidad a los movimientos del pez. Encontraréis una introducción al scripting en el capítulo 19 del tutorial però podréis ampliar la información en las FAQ20.versión 9
rebote 3D
Vamos ahora a conseguir interacción con el entorno virtual. Para ello construiremos una caja en modo alámbrico, es decir, mostrando sólo las aristas (ver capítulo 6 del tutorial) y limitando los movimientos del pez a dicho espacio que se convertirá así en nuestra pecera. Deberemos modificar el o los scripts para conseguir que el pez sea capaz de detectar los límites de la pecera y de efectuar un cambio de trayectoria coherente con esos límites. También añadiremos objetos alrededor de la pecera (pero no dentro) para hacer visualmente más interesante la experiencia. Tenéis un ejemplo en la FAQ 12.versión 10
puntos de vista dinámicos, geometría compleja y detección de colisiones
Se añadirán nuevos puntos de vista al mundo VRML, uno de ellos en el propio pez (para ver la escena tal como la vería él), y otro a cierta distancia (para seguirlo de cerca). Se dotará a la geometría de los objetos de mayor complejidad (podéis modelar con 3DStudioMax y exportar) y, opcionalmente, se añadirán objetos dentro de la pecera, con lo cual deberá preveerse que el pez sea capaz de detectarlos y esquivarlos. Tenéis un ejemplo en la FAQ 13 y en la FAQ 16.versión 11
paneles de control siempre ante el punto de vista
Finalmente, en la última versión se añadirán elementos de control para interactuar con la aplicación que simpre se mantengan ante el punto de vista. Tenéis un ejemplo en la FAQ 14.Fecha límite entrega final: 5 de mayo de 2003
Para esta fecha deberíais haber terminado y publicado en la web todas las versiones así como haber incluido todos los archivos en una carpeta zip y haberla enviado al buzón evaluación de la asignatura.
<<< Recursos
Tutorial recomendado:
A modo de introducción, como manual de referencia sobre VRML recomendamos el tutorial de VRML del Dr. Narcís Parés.
FAQs:
Encontraréis más detalles en las FAQs de la asignatura.
Tutorial adicional:
Para ampliar detalles sobre VRML podéis consultar este otro tutorial de floppy.
Manual VRML en libro:
Para quien guste de los manuales clásicos en papel podéis echarle una hojeada a:GÁMEZ, Ilde y MARTÍN, Martín. VRML. Curso de iniciación. Aprenda a crear mundos virtuales en 3D para internet. Inforbook's. Barcelona. 2001.
Material didáctico de la asignatura:
Para aprender conceptos básicos de Realidad virtual resulta imprescindible la lectura de los capítulos del material didáctico según la temporización prevista.