Hola amigos lectores, hoy les hablaré un poco del proyecto que estoy implementando con algunos compañeros en un electivo de mi universidad. El proyecto tiene como meta la implementación de un piano virtual utilizando el dispositivo Kinect, así que les detallaré lo que hicimos en la primera sesión.
Creación de proyecto en Visual Studio
Definiendo teclas en el piso
Para poder realizar nuestro piano, deberemos definir un espacio en el espacio tridimensional que representará la posición en la que se encontrará la tecla virtual, para ello deberemos realizar los siguientes pasos:
- Definir la altura en la que se encontrará la Kinect respecto del suelo.
- Definir la distancia en la que comenzará y terminará una tecla con respecto a la Kinect (eje Z).
- Definir el ancho de una tecla (eje X).
- Definir altura de una tecla (eje Y)
Con estos pasos podremos implementar ya una pequeña versión de nuestro piano.
Definición la altura de la Kinect
La kinect tendrá como soporte una mesa, la cual posee una altura de 75 cms, por lo tanto, esa será la altura en la cual se encontrará la kinect.
Definición eje Z
Con esta coordenada podremos determinar a qué distancia de la Kinect comienza y finaliza una tecla. Con mi grupo desarrollador definimos que la distancia sería entre 2,25 mts y 2,58 mts, con la cual tendremos mejor precisión de los datos que lleguen al sensor, además de permitirnos en el futuro la inclusión de más teclas.
Definición eje X
Con esta coordenada podremos definir el ancho que poseerá cada tecla virtual. Para esta primera sesión se ha determinado que el ancho debe ser de 20 cms, la cual debe estar comprendida entre 0.04 y 0.24 (tomando como referencia la representación del eje X que hace la Kinect)
Definición eje Y
Con esta coordenada podremos definir la altura que poseerá cada tecla. Para esta primera sesión se ha determinado que la altura de la tecla debe ser de -0,78 (tomando como referencia la representación del eje Y que hace la Kinect).
Lo primero que debemos hacer es crear una instancia de la clase WindowsMediaPlayer, la cual nos permitirá cargar un archivo de música (.mp3) de nuestro ordenador, en nuestro caso hemos cargado un archivo de música que contiene el sonido de un piano en la nota musical DO. El siguiente código realiza lo anteriormente descrito:
WindowsMediaPlayer wplayer = new WindowsMediaPlayer();
wplayer.URL= "C:/ACÁ DEBES LA RUTA DEL ARCHIVO/NOMBRE_ARCHIVO.mp3";
Luego debemos capturar un esqueleto trackeado (explicado en la entrada anterior) y capturar los puntos de coordenadas X,Y,Z del pie derecho (en futuras sesiones lo extenderemos a los 2 pies). Posteriormente, comprobaremos si estos valores se encuentran dentro de el espacio definido para cada tecla, en caso de que así sea, haremos sonar la tecla con el método play() de la clase WindowsMediaPlayer. En caso de que las coordenadas del pie no se encuentren en el espacio definido para la tecla, entonces no realizaremos ninguna acción. El siguiente código realiza lo anteriormente descrito:
float x = 0.0F, y = 0.0F, z = 0.0F;
x = S.Joints[JointType.FootRight].Position.X;
y = S.Joints[JointType.FootRight].Position.Y;
z = S.Joints[JointType.FootRight].Position.Z;
if (z >= 2.25 && z <= 2.58){
if(x >= 0.04 && x <= 0.24){
if(y <= -0.78){
wplayer.controls.play();
}
}
}
Bueno amigos, eso ha sido todo por hoy, en los próximos días subiré el avance del proyecto, así que deben estar atentos. PD: Les dejo un vídeo de presentación en el cual se muestra el funcionamiento del código que acabamos de explicar.


No hay comentarios:
Publicar un comentario