RuZman

Leap Motion - Konfiguration

Zoltan Ruzman 758

Illustration

Abstract

Die Konfiguration von vielen Leap Motion Projekten ist gleich oder ähnlich. In diesem Blogpost wird aufgezeigt, wie mithilfe des Build-Patterns die einzelnen Parameter gespeichert und die Konfiguration elegant zusammengebaut wird. Als Grundlage wird mein Leap Motion Framework genommen, dass bereits eine "zentrale" Klasse zur Konfiguration eines Leap Motion Projekts besitzt, aber aktuell nicht sonderlich flexibel ist.

Leap Motion - JavaFX 3D Hand (2)

Zoltan Ruzman 1193

Illustration

Abstract

Aufbauend auf den Blogpost Leap Motion - JavaFX 3D Hand (1) wird die 3D Visualisierung der Hand erweitert. Dazu verbinden wir die einzelnen Spheres mit Cylinder, sodass wir ein noch realistischeres Skelett darstellen können.

Leap Motion - JavaFX 3D Hand (1)

Zoltan Ruzman 1569

Illustration

Abstract

Dieser Blogpost beinhaltet Grundlagen zu JavaFX 3D, der Leap Motion API v2 und die praktische Umsetzung einer 3D Hand. Im ersten Teil dieser Reihe werden relevante Punkte einer Hand im Sichtfeld des Leap Motion Controllers aus der API ermittelt und visualisiert.

Leap Motion Java SDK - Maven Installation

Zoltan Ruzman 1033

Illustration

Abstract

Das Leap Motion Java SDK ist nicht im Maven Central Repository registriert. Dadurch kann Maven die einzelnen Abhängigkeiten nicht automatisch herunterladen. Aus diesem Grund ist es notwendig die Bibliotheken manuell bereitzustellen. Hierfür gibt es mehrere Möglichkeiten. Dieser Artikel ergänzt den Blogpost Leap Motion Java SDK - Installation, bei dem bereits eine programmtechnische Lösung aufgezeigt wurde, um native Bibliotheken zur Laufzeit einzubinden.

JavaFX - Undecorated Stage (1)

Zoltan Ruzman 1236

Illustration

Abstract

Mit JavaFX ist es möglich ein eigenes Fenster individuell und dynamisch zu gestalten. Diese Serie wird sich damit beschäftigen alle Funktionalitäten eines Fensters nachzubauen. Dabei wird Layout und Logik so getrennten, dass am Ende für die Gestaltung der Oberfläche des Fensters nur noch die CSS und FXML-Datei bearbeitet werden muss. Als Standardeingabegerät wird die Maus festgelegt. Die Logik wird aber allgemein gehalten, sodass die Steuerung auch mit anderen Eingabegeräten (z.B. Leap Motion) möglich ist.

Leap Motion - Vortrag über Gestensteuerung

Zoltan Ruzman 1085

Perceptual Computing und die nächste Welle der Native Interfaces

Präsentation von Martin Förtsch und Thomas Endres (ParrotsOnJava) auf der Microsoft Student Technology Conference.

Leap Motion JavaFX - Grafiktablett

Zoltan Ruzman 899

Illustration

Abstract

Ein gekippter Leap Motion Controller eröffnet uns neue Anwendungsszenarien. Eines davon ist die JavaFX-Applikation JSideways. JSideways zeigt, wie der Leap Motion Controller als Grafiktablett-Ersatz genutzt werden kann.

Leap Motion - Parrot AR.Drone und Java

Zoltan Ruzman 907

Abstract

Die Parrot AR.Drone ist ein Quadrocopter, welcher Steuerbefehle über WLAN entgegennimmt. Da ich noch keine Zeit gefunden habe mich näher mit den Details auseinanderzusetzen, nutze ich zur Steuerung der Drohne die Open Source Anbindung von ParrotsOnJava.com.

Leap Motion im JavaLand - Jatumba!

Zoltan Ruzman 1014

Abstract

Die JavaLand-Konferenz fand zum ersten Mal in diesem Jahr im Phantasialand (Brühl) statt. Bei den Community-Aktivitäten konnte ich im Rahmen des Java Innovation Lab die Leap Motion präsentieren. Für alle die nicht dabei sein konnten, habe ich nachträglich eine Demonstration meiner JavaFX-Applikation auf Youtube zur Verfügung gestellt. Zusätzlich kann jeder auf GitHub einen detailierten Einblick in den Quelltext werfen.

Leap Motion hinter Glas

Zoltan Ruzman 934

Abstract

Wie verhält sich die Leap Motion hinter Glas? Diese Frage wird öfters in der Leap Motion Community gestellt, um den Controller vor Berührung und Umwelteinflüssen zu schützen. Die offizielle Empfehlung lautet die Leap Motion nicht hinter Glas zu verbergen. Dies liegt unter anderem daran, dass die Reflexion und Verzerrung der Glasplatte die Berechnung verfälscht. Soviel zur Theorie. Doch welche Werte erwarten uns tatsächlich?

Leap Motion Java Game - JBlockMotion

Zoltan Ruzman 1060

Illustration

Abstract

Bevor der dritte Teil der Hand-Tracking Reihe vorgestellt wird, gibt es ein kleines Beispiel, wie Gesten mit den Daten der Leap Motion interpretiert werden können. In dem Spiel JBlockMotion muss ein rechteckiger Block über eine Ebene gekippt und ins Ziel gestellt werden. Die Richtung bestimmt der Spieler, indem er Kreise in die Luft zeichnet. Der übersichtlichkeitshalber wird in dem Spiel auf 3D, Schatten, Animationen, Menüs, etc. verzichtet und lediglich ein Level implementiert.

Leap Motion Java - Hand Tracking (2)

Zoltan Ruzman 1422

Illustration

Abstract

Im vorherigen Artikel Leap Motion Java - Hand Tracking (1) wurde die Hand in der vertikalen Ebene getrackt. In diesem Teil wird die dritte Dimension hinzugefügt und die TrackingBox eingeführt. Jede Hand kann eine eigene TrackingBox besitzen und anhand dieser wird die Bildschirmposition berechnet. Das hat den Vorteil, dass bei mehrhändigen Applikationen sich die Hände nicht kreuzen müssen, um von der einen Seite des Bildschirms auf die andere zu gelangen. Die in diesem Teil erarbeiteten Klassen stehen unter dem Link HandTracking zum Download zur Verfügung.

Leap Motion Java - Hand Tracking (1)

Zoltan Ruzman 1283

Illustration

Abstract

Im ersten Teil dieser Reihe wird eine abstraktes Hand-Tracking-Handling vorgestellt. D.h. unabhängig von der Visualisierung (AWT, Swing, LWJGL, etc.) soll die Leap Motion alle Hände registrieren und ihre Position auf den Bildschirm berechnen. Die in diesem Teil erarbeiteten Klassen stehen unter dem Link HandTracking zum Download zur Verfügung.

Leap Motion Java SDK - Installation

Zoltan Ruzman 1303

Illustration

Abstract

Neben C, C++, Objective-C, Python, etc. stellt die Leap Motion auch für Java eine Schnittstelle bereit. In diesem Artikel wird ein Ansatz gezeigt, wie das Leap Motion Java SDK installiert wird. Ziel ist möglichst plattformunabhängig zu bleiben und gleichzeitig die Hardware zu abstrahieren. Dafür wird eine programmtechnische Lösung in Java gewählt.