10
PRA2-Realitat Virtual 1 / 10 Grau de Multimèdia REALITAT VIRTUAL PRA2 (Desembre 2012) Alumne: JOAN SOLER ABELLÓ ENUNCIAT Opció B, prototip: 1. A partir de l'autòmat finit dels comportaments que ja vàreu elaborar per a la Pràctica 1, identifiqueu els estats de l'aplicació més rellevants. 2. Identifiqueu les funcionalitats bàsiques de l'aplicació i els seus requeriments tècnics. 3. En funció del comentari rebut per part del consultor de l'assignatura a la Pràctica 1, replantejeu alguns aspectes del guió de l'aplicació o no, abans de continuar. 4. Si al punt 3 ha estat necessari replantejar el guió de l'aplicació, refeu el punt 1 i 2, en cas contrari passar al punt 5. 5. Un cop identificats els estats principals de l'aplicació, i definides les seves funcionalitats bàsiques i els seus requeriments tècnics, elaboreu un o diversos prototips per experimentar i posar a prova algunes funcionalitats de l'aplicació. REMARCA: no es pretén desenvolupar l'aplicació sencera, només prototipar-la de forma parcial 6. Les tecnologies recomanades per a prototipar són les següents, tenint en compte que des del Laboratori de programació creativa us proporcionaran suport a la programació en Processing: Si disposeu d'Arduino i hi esteu familiaritzats: o Processing + Arduino o Processing + OpenCV + Webcam Si NO disposeu d'Arduino o no hi esteu familiaritzats: o Processing + OpenCV + Webcam 7. Altres tecnologies que poden ser usades, tot i que no es podrà garantir el suport: OpenFrameworks, Unity, Lego Mindstorm, Scratch, etc... 8. Enregistreu un vídeo dels prototips en funcionament, pujeu-lo a Youtube o Vimeo i enllaceu-lo des d'un document PDF que inclogui comentaris del funcionament. Aquest document PDF és el que entregareu a l'aula. REMARCA: limiteu-vos a comentar el funcionament dels prototips i no expliqueu el procés de treball que heu seguit, atès que això ja formarà part de la PAC2.

PRA2 Realitat Virtual (Joan Soler)

Embed Size (px)

DESCRIPTION

PRA1 Realitat Virtual en UOC por Joan Soler

Citation preview

PRA2-Realitat Virtual 1 / 10

Grau de Multimèdia

REALITAT VIRTUAL PRA2 (Desembre 2012) Alumne: JOAN SOLER ABELLÓ

ENUNCIAT Opció B, prototip:

1. A partir de l'autòmat finit dels comportaments que ja vàreu elaborar per a la Pràctica 1, identifiqueu els estats de l'aplicació més rellevants.

2. Identifiqueu les funcionalitats bàsiques de l'aplicació i els seus requeriments tècnics.

3. En funció del comentari rebut per part del consultor de l'assignatura a la Pràctica 1, replantejeu alguns aspectes del guió de l'aplicació o no, abans de continuar.

4. Si al punt 3 ha estat necessari replantejar el guió de l'aplicació, refeu el punt 1 i 2, en cas contrari passar al punt 5.

5. Un cop identificats els estats principals de l'aplicació, i definides les seves funcionalitats bàsiques i els seus requeriments tècnics, elaboreu un o diversos prototips per experimentar i posar a prova algunes funcionalitats de l'aplicació.

REMARCA: no es pretén desenvolupar l'aplicació sencera, només prototipar-la de forma parcial

6. Les tecnologies recomanades per a prototipar són les següents, tenint en compte que des del Laboratori de programació creativa us proporcionaran suport a la programació en Processing:

• Si disposeu d'Arduino i hi esteu familiaritzats:

o Processing + Arduino

o Processing + OpenCV + Webcam

• Si NO disposeu d'Arduino o no hi esteu familiaritzats:

o Processing + OpenCV + Webcam

7. Altres tecnologies que poden ser usades, tot i que no es podrà garantir el suport: OpenFrameworks, Unity, Lego Mindstorm, Scratch, etc...

8. Enregistreu un vídeo dels prototips en funcionament, pujeu-lo a Youtube o Vimeo i enllaceu-lo des d'un document PDF que inclogui comentaris del funcionament. Aquest document PDF és el que entregareu a l'aula.

REMARCA: limiteu-vos a comentar el funcionament dels prototips i no expliqueu el procés de treball que heu seguit, atès que això ja formarà part de la PAC2.

PRA2-Realitat Virtual 2 / 10

RESOLUCIÓN PRA2

Aplicación que se proponía en la PRA1. Funcionamiento del PROTOTIPO

Se denomina: VIRTUAL BALANCE.

Se trata de una aplicación de Realidad Mixta.

Loa archivos de Processing utilizados (ficheros .pde), se encuentran en el fichero zip que se inserta a continuación:

Link a YouTube donde se muestra el prototipo en funcionamiento:

http://youtu.be/ddxl0-dbBfo

Fotos del montaje y pantalla del prototipo:

PRA2-Realitat Virtual 3 / 10

Uso la descripción que hice en la Práctica 1 y añado en rojo algunos comentarios y tacho lo que no se ha desarrollado en el prototipo y queda pendiente para la aplicación final.

(Aunque la presentación de este texto, con tachaduras podría parecer un borrador creo que es una forma que contrariamente a su aspecto, puede clarificar la descripción del prototipo visualizando claramente los cambios con respecto a la aplicación considerada final).

Tenemos una representación de una balanza en el escenario. La balanza es virtual.

Disponemos de varias piezas reales (trozos de cartulina o piezas) de distintas formas y medidas. Suponemos que el peso de cada pieza es directamente proporcional a su área. Dicha área/peso queda representada por el número de pixeles de la figura

También disponemos de algunas piezas virtuales también de varias formas y tamaños colocadas en el almacén de piezas virtuales.. El máximo número de piezas a aportar es de dos y que quepan en el área de reconocimiento (almacén de piezas reales).

El reconocimiento de piezas reales puede hacerse también directamente en el platillo. El tiempo de proceso de reconocimiento no es imputable a ninguno de los jugadores ya que el contador de tiempo se parará durante dicho proceso. El reconocimiento de las piezas o cálculo de su area/peros (número de pixeles) se hace al colocar las piezas en la parte de los platillos y teniendo en cuenta en qué lado se coloca para computar en un platillo u otro.

El número de jugadores puede ser de 1 (jugar contra la máquina) hasta 3.

Si jugamos contra la máquina, ésta estará en desventaja ya que no puede aportar piezas nuevas lo cual sí podrá hacerlo el usuario aunque sea en un número limitado. Pero sí que se le permitirá usar las piezas aportadas por el usuario.

Al empezar un juego, un display nos dará un número al azar entre 2 y 10 de la cantidad de piezas que puede usar cada jugador en su turno.

Una vez hecha su propuesta el display nos dará el “unbalancing” o desequilibrio obtenido. El objetivo es obtener un 0. Al acabar su turno (al finalizar tiempo) el jugador sacará sus piezas y las piezas virtuales volverán a su sitio, para que no sirvan de ayuda al jugador contrario. Cuando se juega contra la máquina mantendrá en memoria las piezas usadas por el jugador.

Lógicamente gana quien equilibre mejor la balanza.

Al empezar el juego el jugador que empieza define la duración de éste en segundos. El juego empieza justo al entrar el tiempo de juego y presionar el botón de empezar a jugar. El tiempo puede ser acordado entre jugadores y no así cuando jugamos contra la máquina siendo en dicho caso el usuario quien define el tiempo o indica “NO” cuando se solicite dicho valor para indicar que el tiempo no será tenido en cuenta. En el prototipo no se ha implementado ni la función del tiempo no la de número de jugadores

No colocar ninguna pieza no se acepta como desequilibrio 0. No se ha implementado la función de que si no hay piezas no marque ni calcule.

Descripción gráfica de la aplicación

Dejo esta parte de descripción a título de recordatorio aunque funciones como tiempo, limitación de piezas y número de jugadores no se hayan implementado en el PROTOTIPO

En primer lugar se muestra lo que debemos ver en la pantalla del ordenador donde se mezcla el entorno real y el entorno virtual:

PRA2-Realitat Virtual 4 / 10

Donde la parte real y la virtual quedarían diferenciadas de la siguiente forma:

Virtual Real

El montaje de la aplicación se puede ver en el gráfico siguiente:

PRA2-Realitat Virtual 5 / 10

Explicación de la aplicación

El comportamiento de los brazos de la báscula y la de su indicador (fiel) sobre la escala, se basa en un cálculo de la diferencia entre las áreas/peso de las piezas colocado en cada plato. Se trata de un comportamiento por fórmulas. También tenemos algunos comportamientos por reglas como que dependiendo de la posición de las piezas computará o no en el “peso” y dependiendo si está posicionada en uno u otro plato computará en un sentido o el contrario. Otro comportamiento por reglas será el de adquisición de una pieza real traduciéndola en una forma virtual y además siendo su “adquisición” limitada en el número de piezas y en tamaño.

En el apartado en el que se ha descrito gráficamente la aplicación se han descrito los objetos físicos (piezas reales) y los objetos virtuales (báscula, marcadores, piezas virtuales, …)

Con referencia al bucle principal de la aplicación que se propone habrá que tener en cuenta algunos puntos importantes:

- La aplicación debe leer los datos de entrada tales como nº de jugadores, nombres de estos y el tiempo de juego que se aplicará.

- La webcam debe leer datos en cuanto detecte movimiento de las piezas reales o de nuestra mano (o puntero que definamos). Uno de los movimientos detectados en el almacén de piezas virtuales” o en los platos, deberá propiciar la lectura adquisitiva de la forma. En el caso del prototipo, la aplicación lee continuamente.

- La aplicación debe calcular las áreas de las piezas reales que el usuario “propone”

- Dependiendo de las formas colocadas en cada plato la aplicación debe hacer rotar el brazo de la balanza y el fiel. También deberá hacer ascender/descender los platos y las piezas tanto virtuales. En el prototipo no se ha desarrollado esta parte y los platos se desplazan quedando las piezas estática en el sitio que las colocamos.

PRA2-Realitat Virtual 6 / 10

- Si en el movimiento de las piezas, las piezas virtuales “colisionan” en posición con las virtuales, la aplicación deberá desplazar la pieza virtual evitando que queden superpuestas. Tampoco deben superponerse platos y piezas. No se ha desarrollado este detalle aunque si se solapan, ambas computan en peso tal como debe ser.

- Gestionar los cálculos de áreas, diferencia de “peso”, turno de jugadores y marcadores

- Gestionar el “contador del tiempo restante de juego” teniendo en cuenta de descontar el tiempo interno empleado en el reconocimiento y adquisición de formas.

Diagrama de autómata finito de la aplicación

Los diagramas de autómata finito ayudan a la definición de los comportamientos que reaccionan ante el entorno.

Dado que la descripción por reglas y la de los autómatas finitos son equivalentes ello nos indica que debemos prever diagramas de autómatas finitos en los mismos objetos en que aplicamos el comportamiento por reglas y que en el apartado anterior hemos empezado a mencionar al hablar de comportamientos.

Por ello debemos definir diagramas para cada uno de los sujetos virtuales tales como los platos de la balanza, brazo y fiel de la balanza, y las piezas virtuales y reales.

Seguidamente se presentan algunos de los diagramas de autómatas finitos para los sujetos virtuales (No se han modificado los diagramas de autómata finito aunque se ha eliminado el de la recolocación de las piezas cuando los platos se mueven).:

PRA2-Realitat Virtual 7 / 10

PRA2-Realitat Virtual 8 / 10

PRA2-Realitat Virtual 9 / 10

Identificación de los estados de la aplicación

El estado de la aplicación más importante y debido a que en el prototipo la webcam registra continuamente, es el giro de los platos, brazo y fiel de la balanza dependiendo de la diferencia de “peso” computado mediante el cálculo del número de pixeles de las piezas virtuales y las de las piezas reales.

Para el cálculo del número de pixeles que conforman la pieza real se procede a traducir la imagen de cada frame (registrada por la webcam) a blanco y negro (aplicando un umbral/threshold) y leyendo el número de pixeles negros sobre el área de cada plato.

Se aplica una constante (max ángulo giro/ max nº pixels que llenan un plato) para el cálculo del ángulo de giro que a su vez denominamos desequilibrio. Dependiendo del signo del valor del ángulo, las piezas móviles giraran en un sentido u otro de las agujas del reloj.

Otro aspecto importante es el relacionado con el arrastre y posición de las piezas virtuales y se ha usado unas funciones de dragging a la vez que se monitoriza su posición para ser computadas o no en un plato de la balanza.

Identificación de las funcionalidades básicas y sus requerimientos técnicos

Las funcionalidades básicas más importantes son:

- Declaración de todas las variables

- Importación de la librerái de video

- Función de setup declarando un tamaño de display de 640 x 480 px

- Dibujar piezas virtuales de forma que se les pueda aplicar las funciones de arrastre (draggable), además de calcular el número de pixeles que las conforman.

- Iniciar el objeto Capture de video

- Dibujar las piezas fijas y móviles de la balanza teniendo en cuenta el traslado de los ejes para posteriormente poder aplicar el giro referido a un punto. El grupo de piezas móviles debe girar con respecto a mismo centro de giro.

- Rastreo del número de pixeles negros de la imagen registrada identificando a qué plato corresponde. Para ello se ha traducido cada frame de la imagen registrada por la webcam a blanco y negro.

- Cálculo del ángulo de giro en función de la diferencia del número de pixeles correspondientes a cada plato de la balanza.

- Dibujo de textos fijos y textos que representan una variable

Con todo ello quedarían representados tanto los componentes fijos y móviles de una balanza en el entorno virtual que mediante el registro de las imágenes reales obtenidas por una webcam y tratadas por la aplicación inciden en el ángulo de giro de platos, brazo y fiel de la balanza virtual.

Funcionalidad del prototipo elaborado

Con excepción del apartado de tiempo, puntuaciones, etc (o sea la parte “burocrática”) el prototipo es totalmente funcional.

PRA2-Realitat Virtual 10 / 10

Tecnologías usadas para el prototipo

Se ha usado Processing v.2.0b6 para la programación.

La interface física está constituida por el ratón (aceptación y movimiento de elementos virtuales) y la parte más importante recae sobre la webcam, mediante la cual interactuamos con el entorno virtual.

La interface lógica la constituye además del propio posicionamiento de las piezas en pantalla y el movimiento de giro de los platos de la balanza según el desequilibrio del “peso” de las piezas colocadas en cada plato.

Para la composición del video se ha usado After Effects CS5. En la composición se incluye video filmado y secuencias de imágenes de la propia aplicación (demo) mediante la adición del comando saveFrame().

El fondo músical pertenece a la canción Crossroad de Eric Clapton. Me ha parecido oportuno por el propio título.

========================================