Kinect dans le Blender Game Engine

Ce wiki a été archivé en 2018.

Le nouveau wiki se trouve à: ressources.labomedia.org

Les fonctionnalités sont désactivées: vous pouvez faire une recherche sur Google site:https://wiki.labomedia.org et découvrir La Labomedia.

De Centre de Ressources Numériques - Labomedia
Aller à : navigation, rechercher

Cette page est une suite de l'installation d'un Kinect sous Linux. Nous utilisons les datas envoyée par OSCeleton en OSC pour les utilisés dans le Blender Game Engine avec un jeu simple de gardien de but de foot. Avant, il faut donc avoir installé les drivers de la Kinect, OpenNI , SensorKinect, NITE, OSCeleton.

Un jeu de foot

  • Blender 2.49b
  • python 2.6
  • OSC.py pour le décodage de l'OSC dans Blender
  • python socket pour recevoir les datas en UDP
Foot 2.png

Recommandation

Pendant le jeu dans votre salon, veuillez faire attention à ne pas vous blesser et à ne rien casser ! Labomedia ne peut être responsable en cas d'accident ou de dégâts matériels.

Les fichiers

A utiliser dans blender, P pour lancer le jeu au-dessus de la vue 3D.

Pour utiliser cet exécutable sous linux, installer blender

sudo apt-get install blender

décompresser, aller dans le dossier, cliquer sur l'exécutable.

Vidéos

http://openatelier.labomedia.org/2.php#10

  • Le développeur du jeu en train d'en tester la latence lors de l'Open Atelier du 26 mai. Le développeur estime la latence à 0.13 s (dans avidemux).

http://openatelier.labomedia.org/2.php#11

OSCeleton

Lancer avec

./osceleton  -p 7110 -mx 1 -my 1 -mz 1 -ox 0 -oy 0 -oz 0 -a 127.0.0.1

La taille et l'offset ne doivent pas être modifiés : cela est redéfini dans blender avec les scripts.

Foot 3.png

Les fichiers pour Blender 2.57 et python 3.2

OSC.py vient d'être mis à jour sur gitorious.org/pyosc

Latence entre un geste et la vision du geste dans le Game Engine

La légère latence (~ 0.13 s) est casse-pieds ! Normal pour du foot !

OSC est-il lent ?

Non, définitivemnt non !

OSC réalise l'encapsulation et l'extraction de datas, le tranfert des datas se fait en UDP. Par contre, comment OSC est implémenté est important !

opensoundcontrol.org This simple yet powerful protocol provides everything needed for real-time control of sound and other media processing while remaining flexible and easy to implement.

Wikipedia liste un grand nombre de logiciels qui utilise OSC en temps réel.

Surcouches légères Je cite: Python et l'agrégation d'outils Par Laurent Pointal
"Au dessus de TCP ou UDP de nombreuses personnes ont développé des couches logicielles pour répondre à des besoins spécifiques à un domaine en définissant des protocoles ad-hoc. Et dans bien des cas il existe un module tiers Python qui permet d'utiliser ces protocoles. En voici quelques exemples.
Open Sound Control (OSC) est un protocole de communication utilisé dans le domaine du spectacle vivant, qui permet de transmettre des messages contenant des données typées, des ordres de contrôle pour des instruments, ou encore des échantillons numériques. Ce protocole est implémenté en respectant des contraintes de temps (rendu temps réel) et de facilité d'accès par des personnes dont le métier de base n'est pas nécessairement l'informatique. Les paquets OSC peuvent être transportés de différentes façons, liaison série, bus USB, et liaisons réseau TCP ou UDP. Il existe une implémentation en Python SimpleOSC pour l'encapsulation et l'extraction de données dans des paquets OSC."

Ce serait mieux avec pyliblo ?

liblo est une bibliothèque d'implémentation d'OSC, et pyliblo en est la version python.

Installation sur Ubuntu

sudo apt-get install python-liblo

installera liblo7 sur Lucid

Comparaison

pyliblo, SimpleOSC, OSC de Julian Oliver sont équivalents. Les fonctions diffèrent, OSC permet de décoder dans Blender.

Les conseils de Microsoft

Un document Microsoft explique que la latence entre l'action devant la kinect et la TV est environ de 130 ms. Les développeurs de jeu doivent prédire les mouvements pour les anticiper.

Idée à travailler

Grossir le radius du ballon à l'approche du joueur.

Ce qu'il faut optimizer

1. Nite-1.3.0.17/Data

Dans les fichiers: Sample-Scene.xml Sample-Tracking.xml Sample-User.xml jouer sur le fps

<MapOutputMode xRes="640" yRes="480" FPS="30"/>

A voir : lien entre Nite et OSCeleton

2. OSCeleton

OSCeleton récupére les dats de Nite et les envoie en OSC. Il faut modifier le fichier /src/viewer.cpp avant compilation

  • ligne 40 :
char tmp[10]; //Temp buffer for OSC address pattern
  • ligne 512 :
mapMode.nXRes = XN_VGA_X_RES;
mapMode.nYRes = XN_VGA_Y_RES;
mapMode.nFPS = 30;

5. Dans Blender Game Engine

  • Régler la fréquence de lancement des scripts (Pulse Mode)
  • Régler le Game Engine pour l'exécutable: Foot 1.png
  • Les lumières, les ombres, les meshs ....

A faire: vérifier si le fps est bien forcé à 25 !

Ressources

Quelques forums qui ne donnent pas de réponses intéressantes: