02_Interaktion im Raum, Kinect

// Tutorial // Marc / Autocontrol 3D

Kinect Programmierung mit OpenNI / NITE + Handout

Kinect mit SimpleOpenNI & Processing Installation
Website: http://code.google.com/p/simple-openni/ Installations

Anleitung

http://code.google.com/p/simple-openni/wiki/Installation

!Mac OS: Abschnitt “Install OpenNI the short way”
In der .zip Datei für Processing sind viele Beispiele enthalten
(Hand Tracking, Skeleton Tracking und vieles mehr).

Hand Tracking
Ausgangsbasis für eigene Experimente kann das SimpleOpenNI_NITE_Hands
Beispiel sein. Auf diesem Beispiel beruht auch das Beispiel zum Wischen der Musik.
Für das eigentliche Tracken der Hand wird eine Klasse verwendet (leitet von
XnVPointControl ab) – hier gibt es weitere Methoden:

! OnPointCreate(XnVHandPointContext Ctx) – Wird aufgerufen wenn eine Hand !
getrackt wird. Im Kontext (Ctx) bekommt man eine Id (Ctx.getNID()) – diese bleibt !
für eine Erfassung der Hand konstant.

! OnPointUpdate(XnVHandPointContext Ctx) – Wird kontinuierlich aufgerufen und !
gibt aktualisierte Daten für die Hand (Ctx.getPtPosition()).

! OnPointDestroy(XnVHandPointContext Ctx) – Wird aufgerufen wenn eine Hand !
nicht mehr getrackt wird.

Achtung
Die Position die getPtPosition() zurück gibt ist in echten 3D Koordinaten – !
oft braucht man allerdings eine 2D Bildschirmkoordinate um den Trackingpunkt !
darzustellen oder sonstige Dinge in Processing zu zeichnen.

Diese Bildschirmkoordinaten bekommt mithilfe des Befehls:
! context.convertRealWorldToProjective(Punkt aus einer der Funktionen, Speicher
für gewandelten Punkt); Mit diesen Daten kann man nun die unterschiedlichsten
Dinge anstellen – Bilder ausmalen, Gesten erkennen etc.

Für die Gestenerkennung muss man eine mathematische Beschreibung der Geste finden.
Generell geht man zum Erkennen einer Geste von den letzten X Punkten aus die
man getrackt hat. Dies können eine fixe Anzahl sein oder in einem Zeitrahmen
liegen. (Die Wisch Erkennung verwendet vor allem den Zeitrahmen als Limit
welche Punkte beachtet werden)

Für das Musik Wischen habe ich gesagt das ich eine horizontale Handbewegung
habe = eine mindest Bewegung in X und wenig Abweichung in Y.
Aufwändigere Gesten (Kreis malen, ..) sind möglich aber um einiges komplizierter.

Beispielskript: wischGeste

20.05.2011 | admin |