Diseño e implementación de un juego matemático de disparos en 3d y análisis de los dispositivos interacción de 2d y 3D



Descargar 2.83 Mb.
Página11/15
Fecha de conversión05.09.2018
Tamaño2.83 Mb.
Vistas86
Descargas0
1   ...   7   8   9   10   11   12   13   14   15
Catálogo: bitstream -> 123456789 -> 11190
123456789 -> Departamento de idiomas modernos
123456789 -> Capitulo I. Problema de investigacion 1 antecedentes
123456789 -> Ii. Planteamiento del problema
123456789 -> Declaracion de honor
123456789 -> “manual de herramientas conceptuales, metodologiacas para el desarrollo de los procesos cognitivos basicos”
123456789 -> La Psicología del Placer en el Filebo de Platón
123456789 -> Universidad de los hemisferios
123456789 -> Evaluación del desempeño de la docencia y de la investigación de los profesores de la facultad de medicina de la unam
11190 -> Diseño e implementación de un juego matemático de disparos en 3d y análisis de los dispositivos interacción de 2d y 3D


  1. Clase Archivo


Esta clase forma parte del módulo de datos y se encarga de guardar y de leer los datos del jugador como el nombre y el puntaje de un archivo. Este archivo luego será cargado en la interfaz de altos puntajes o se guardará cuando termina una sesión del juego.

Cuando se carga el archivo, lo hace a través de un arreglo de objetos Jugador.

En el caso que se termine la sesión del juego se llama a la función encargada de verificar si el puntaje es alto, para esto un objeto jugador es pasado a través de esta clase y se verifica que el archivo en cuestión exista. Si el archivo existe, el objeto es convertido a texto y guardado de tal manera que el arreglo de objetos se encuentre ordenado de mayor a menor para minimizar el tiempo de ordenamiento al cargar los objetos. Si no existe el archivo se maneja el error correspondiente y se muestra un mensaje en el juego.

  1. Clase Pickhandler


Esta clase pertenece al módulo de manejador de eventos y carga todas las rutas de las escenas para luego ser vistas dependiendo de la acción. Al inicio, esta clase inicializa todas sus variables y carga la escena raíz de cada ruta.

La función handle recibe un parámetro de EventAdapter que maneja los cambios de ventanas en el escenario y otro parámetro de ActionAdapter que llama al Viewer para cada cambio de escena. Cuando se encuentra el caso de que el manejador de eventos ha sido lanzado, la pantalla actual va a ser asociada con una función que conlleva a cambiar la raíz de la escena y colocar otra ruta de escenas.

La función picker obtiene los datos del EventAdapter y se encarga de cambiar los datos de la escena en el Viewer cuando haya algún cambio en la escena. Este cambio se puede generar por los datos del guante y del tracker.

La función createScene se encarga de crear las escenas correspondientes para cada pantalla. Se crea la raíz y dentro de él los objetos correspondientes incluyendo, la posición, el texto, los objetos, etc.



  1. Clase Tracker


Esta clase forma parte del modulo del tracker y se encarga de realizar la conexión y de interpretar los datos del tracker para que el programa los pueda procesar.

La función ValoresTracker() obtiene los datos del tracker que lee de cada sensor conectado. Esta función los guarda en un arreglo de pfloat que después serán utilizados en la clase pickHandler para que realice los movimientos deseados por el usuario.



  1. Clase Simulator


Esta clase forma parte del modulo de visualización y se encarga de manejar toda la parte grafica del programa. Una de las funciones principales de esta clase es el de manejo del tiempo, ya que con este se pueden realizar las predicciones de las colisiones entre bolas.

Otra función de la clase es de inicializar el viewer del programa en el cual se carga la raíz principal, con los objetos de la escena principal.



  1. Clase PhysicApp


Esta clase forma parte del módulo de datos el cual se encarga de inicializar la clase del guante, del tracker, música y asigna los valores de las variables 3D para que el proyector pueda trabajar de la manera más eficiente. También llama a la clase Simulator para que esta a su vez cargue el viewer del programa.

    1. Calibración


En el juego se usa el tracker para saber la posición del puntero de disparo. Sin embargo su precisión no siempre es buena debido a que este sistema se basa en campos magnéticos que pueden ser fácilmente alterados por muchos factores externos, como por ejemplo: una computadora, un celular, etc. Además de este problema, se debe tener en cuenta que la relación entre el movimiento del tracker y el movimiento del puntero en la proyección sea la más adecuada para poder tener una experiencia de inmersión.

Debido a los problemas presentados se implementó una función que calibre los errores de los datos leídos por el tracker, la función de calibración estática; y otra función que calibre la relación entre los movimientos, la función de calibración de la pantalla.



  1. Calibración estática


Basándose en funciones de calibraciones conocidas por el grupo EVL de la Universidad de Chicago [46], dentro de este proyecto se implementa la función de calibración por interpolación de datos en la que involucra el valor real del tracker, el valor leído del tracker, el cálculo del error y la distancia.

La metodología que se usó para obtener esta función de calibración se basa en la utilizada por Kindratenko [46], en la que se obtienen lecturas del tracker por medio de una tabla estática. Para minimizar el error por el campo magnético, las medidas se tomaron en una mesa de madera tratando de estar aislados de equipos que puedan interferir con los datos (figura 4.4).




Figura 4.4 Obtención de datos para la calibración
Luego que se obtienen los datos, se calcula la distancia al valor real del tracker por medio de la función de distancia euclidiana:

Donde P es el punto ) del valor tomado del tracker, y P’ es el punto ) de la malla graficada en el espacio real. El valor de z no puede ser medido por falta de equipo especializado para hacerlo [46].

Una vez que calculamos la distancia, construimos una tabla de valores con los valores reales del tracker, los valores que obtenemos del programa del tracker, el valor de la distancia, y el valor del error que se obtiene de restar el valor real con el valor del tracker.

Con la tabla construida, graficamos la función de error vs. Distancia, en donde tenemos una función exponencial del tipo . Para calcular las constante a se proyecta la función hacia el eje de la Y y la intersección con este eje corresponde a la constante. Para calcular la constante b se proyecta una relación lineal de la curva, y la pendiente de la recta representa a la constante b.



Como resultado tenemos la función (figura 4.5):




Distancia (cm)


Figura 4.5 Gráfica de Error vs. Distancia
La función resultante tiene una forma exponencial debido a que el campo magnético que se forma en el receptor tiene la forma de un toroide. Con esta función se realiza la interpolación de la función a los valores del tracker. El valor X y Y del tracker se reemplaza en la función y el resultado obtenido es el error que se le restará a los valores de X y Y.


  1. Compartir con tus amigos:
1   ...   7   8   9   10   11   12   13   14   15


La base de datos está protegida por derechos de autor ©psicolog.org 2017
enviar mensaje

enter | registro
    Página principal


subir archivos