Airkinect 2 en FlashDevelop

Mi mayor problema siempre ha sido el día en que se vencio mi licencia de prueba de Flash Builder, es por eso que busque una manera de correr Airkinect en Flash Develop, encontre mucha documentación para la version 7.1 de airkinect pero no para la versión 2, es así que decidí hacer un tutorial de como correr airkinect 2 en Flash Develop, para todos aquellos que quieran iniciarse en la programación con Kinect y Air.

Primero deben considerar que deben tener un kinect y el sdk instalado en su máquina, la manera de instalar y de donde sacar el sdk se encuentra aquí :

http://www.kinectforwindows.org/

Lo segundo que deben considerar es que deben tener el core de airkinect y lo descargan de aquí :

http://as3nui.github.com/airkinect-2-core/

Este es el vídeo tutorial :

El código con el que llame a la cámara depth es el siguiente

package
{
import flash.display.Sprite;

import com.as3nui.nativeExtensions.air.kinect.Kinect;
import com.as3nui.nativeExtensions.air.kinect.KinectSettings;
import com.as3nui.nativeExtensions.air.kinect.data.SkeletonJoint;
import com.as3nui.nativeExtensions.air.kinect.data.User;
import com.as3nui.nativeExtensions.air.kinect.events.CameraImageEvent;

import flash.display.Bitmap;
import flash.display.Sprite;
import flash.display.Stage;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;

/**
* …
* @author Luis Rodriguez
*/
public class Main extends Sprite
{
private var kinect:Kinect;
private var bmp:Bitmap;
private var skeletonContainer:Sprite;

public function Main():void
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.nativeWindow.visible = true;
if(Kinect.isSupported())
{
bmp = new Bitmap();
addChild(bmp);

skeletonContainer = new Sprite();
addChild(skeletonContainer);

kinect = Kinect.getDevice();

kinect.addEventListener(CameraImageEvent.DEPTH_IMAGE_UPDATE, depthImageHandler);

var settings:KinectSettings = new KinectSettings();
settings.depthEnabled = true;

kinect.start(settings);

addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
}

protected function depthImageHandler(event:CameraImageEvent):void
{
bmp.bitmapData = event.imageData;

}

protected function enterFrameHandler(event:Event):void
{
skeletonContainer.graphics.clear();

for each(var user:User in kinect.usersWithSkeleton)
{
for each( var joint:SkeletonJoint in user.skeletonJoints)
{
skeletonContainer.graphics.beginFill(0xff0000);
skeletonContainer.graphics.drawCircle(joint.depthPosition.x, joint.depthPosition.y , 3);
skeletonContainer.graphics.endFill();
}
}

}

}

}

Anuncios

Etiquetas: , , , , , ,

About Luis Rodriguez Martinez

Diseñador web w3c

18 responses to “Airkinect 2 en FlashDevelop”

  1. Camilo says :

    Muchas gracias por el tutorial, funcionó perfecto. Deberías colocar un link en el video hacia esta entrada. Los que encuentren el video van a necesitar el código para poder probar.

    • Luis Rodriguez Martinez says :

      Pues que bueno que te haya ayudado, es el fin de este vídeo tutorial, si colocaré un link en el vídeo a esta entrada.

  2. Hernan says :

    Buenos dias!, primero que nada te felicito por lo que haces, la verdad esta muy bueno y gracias por el tutorial, pero te queria hacer una pregunta ya que me tope con un problema que no encuentro respuesta, la cosa es que el programa corre, o al menos eso imagino porque no me tira error, pero a la vez no muestra nada de nada. el cmd de system dice:

    KinectDeviceManager: KinectDeviceManager
    MSKinectDevice: MSKinectDevice
    MSKinecDevice: dispose.

    No encuentro el problema y ya no se donde buscar, todos los errores que anteriormente me han ido saliendo los fui solucionando, pero ahora con esto no se que pasa.

    Desde ya muchas gracias, espero me puedas ayudar.

    • Luis Rodriguez Martinez says :

      Gracias por las felicitaciones, me gustaría ayudarte, que te parece si nos reunimos vía skype por la noche creo que a partir de las 8 de la noche estará bien contactame a luiswr@hotmail.com si me ves conectado a esa hora déjame saber, si ando desocupado en ese momento te ayudo con ese tema

  3. Julian Peña says :

    Hola, Gracias por compartir esta información y por el tutorial funcionan perfecto, quería preguntarte una cosa, actualmente estoy utilizando la libreria airKinect2 en flash cs6, pero no consigo hacer que detecte a un usuario, es decir, si en los settings de kinect le digo que resalte con un color los usuarios en el modo profundidad, lo hace, pero no puedo detectar al mismo usuario usando el “kinect.usersWithSkeleton”, espero haberme echo entender y espero puedas ayudarme, gracias por todo.

    • Luis Rodriguez Martinez says :

      No entiendo lo que necesitas hacer, si me detallas quizas pueda ayudarte.

      • Julian Peña says :

        Gracias por la respuesta Luis, ya logre solucionar el problema :), básicamente lo que necesitaba era gestionar los usuarios, muchas gracias por todo.

      • Trust says :

        Hola Luis,he seguido tu tutorial paso a paso pero me da un error con el siguiente mensaje, (69): col: 68 Error: Access of possibly undefined property depthPosition through a reference with static type com.as3nui.nativeExtensions.air.kinect.data:SkeletonJoint.
        skeletonContainer.graphics.drawCircle(joint.depthPosition.x, joint.depthPosition.y , 3);
        ^
        Build halted with errors (fcsh).a ver si me puedes ayudar, te lo agradecería.
        Muchas Gracias

      • Luis Rodriguez Martinez says :

        agregaste a la librería el swc de airkinect ?
        importaste la clase data de airkinect ?

  4. Camilo says :

    Hola

    Airkinect ya va en la versión 2.2, pero ya no viene con el archivo airkinect-2-core.swc. ¿Sabés que hay que hacer en este caso?

    Gracias

  5. Sebastian says :

    Hola,

    Realice el tutorial paso a paso pero tengo un error cuando declaro la variable :Kinect,

    [Fault] exception, information=VerifyError: Error #1107: The ABC data is corrupt, attempt to read out of bounds.

    No se por que razón, ojala puedas echarme una mano,

    Gracias

    • Sebastian says :

      Bueno, acabo de reemplazar un swc descargado por el airkinect-2-core-mssdk.ane cambiada la extension a swc, y me sale lo siguiente:

      MSKinectDevice::run
      dwFlags: 32
      dwFlags: 32
      dwFlags: 32
      dwFlags: 32
      dwFlags: 32
      Sensor initialization failed, aborting
      MSKinectDevice::stop finished

      Ya no el error anterior pero al parecer no reconoce el kinect

    • Julian Peña says :

      En la pagina de AirKinect hay un ejemplo basico de como iniciar el kinect.

      • Sebastian says :

        Gracias,

        Ya funciona gracias, pero ahora me genera error en la siguiente linea:

        skeletonContainer.graphics.drawCircle(joint.depthPosition.x, joint.depthPosition.y , 3);

        Error: Access of possibly undefined property depthPosition through a reference with static type com.as3nui.nativeExtensions.air.kinect.data:SkeletonJoint.

        Faltaría alguna librería?

        Gracias

      • Julian Peña says :

        No, no falta ninguna, simplemente esta accediendo mal a la propiedad, es de la siguiente manera:

        skeletonContainer.graphics.drawCircle(joint.position.depth.x, joint.position.depth.y , 3)

  6. Sebastian says :

    WTF, jajjajajaj Gracias brother

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: