- 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 );
}
}