- Windows anmachen 🙂
 - Kinect mit dem USB-Power-Adapter anstöpseln.
 - Unter http://www.microsoft.com/en-us/download/details.aspx?id=40278 das Kinect for Windows SDK v1.8 laden und. (Nicht Version 2!) Die grüne Lampe wird leuchten.
 - Unter dem Geräte Manager wird Kinect angezeigt:

 - Optional: Für ein paar Beispiele installiere von http://www.microsoft.com/en-us/download/details.aspx?id=40276 das Kinect for Windows Developer Toolkit v1.8.
Unter Developer Toolkit Browser v1.8.0 (Kinect for Windows) kann man dann Beispiele anschauen und prüfen, ob die Kamera einen “empfängt”.
 - Gehe unter http://research.dwi.ufl.edu/ufdw/download.php und lade ufdw.jar. Melde das Jar im Klassenpfad an.
 - Lade ein Beispiel von http://research.dwi.ufl.edu/ufdw/j4k/examples.php, entpacke es, und setze für ein 64-Bit-Java die DLL-Dateien (ufdw_j4k_64bit.dll/ufdw_j4k2_64bit.dll) in das Java-Projekt.
 
Das waren die Vorbereitungen, jetzt können wir zum eigentlichen Java-Programm kommen. Zum Testen soll einfach nur die Orientierung (also der Winkel zur Kinect) in den Winkel einer 3D-Box übertragen werden – dreht man sich vor der Kinect, wird die Box sich mitdrehen. Gleichzeitig gibt es noch einen Text, sodass man den Winkel gleich ablesen kann.
Fertig sieht das so aus:
import javafx.application.Application;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.shape.Box;
import javafx.scene.text.Text;
import javafx.scene.transform.Rotate;
import javafx.stage.Stage;
import edu.ufl.digitalworlds.j4k.J4KSDK;
import edu.ufl.digitalworlds.j4k.Skeleton;
public class MovingBody extends Application {
  private final Box box = new Box( 200, 200, 200 );
  private final Text text = new Text( 200, 200, "#" );
  
  class SkeletonTracker extends J4KSDK {
    @Override
    public void onSkeletonFrameEvent( boolean[] skeletonTracked, float[] positions,
                                      float[] orientations, byte[] jointStatus ) {
      int skeletonId = 0;
      while ( !skeletonTracked[ skeletonId ] )
        skeletonId++;
      Skeleton skeleton = Skeleton.getSkeleton( skeletonId, skeletonTracked, positions,
                                                orientations, jointStatus, this );
      box.setRotate( (int) skeleton.getBodyOrientation() );  // reduce "noise" with (int)
      text.setText( "" + (int) skeleton.getBodyOrientation() );
      text.setRotate( (int) skeleton.getBodyOrientation() );
    }
    
    @Override
    public void onColorFrameEvent( byte[] colorData ) { }
    @Override
    public void onDepthFrameEvent( short[] depthFrame, byte[] playerIndex, float[] xyz, float[] uv ) { }
  }
  public MovingBody() {
    new SkeletonTracker().start( J4KSDK.SKELETON );
  }
  @Override
  public void start( Stage primaryStage ) {
    Group root = new Group();
    primaryStage.setScene( new Scene( root, 400, 400 ) );
    primaryStage.show();
    
    box.setTranslateX( 200 );
    box.setTranslateY( 200 );
    box.setTranslateZ( 200 );
    box.setRotationAxis( Rotate.Y_AXIS );
    root.getChildren().addAll( box, text );
  }
  public static void main( String[] args ) {
    launch( args );
  }
}