Willkommen auf unserem Seminar-Blog

Immer auf dem aktuellen Stand bleiben

Dieser Seminar-Blog befindet sich noch im Aufbau und wird in den kommenden Tagen entsprechend verfeinert.

Member Login

Lost your password?

Registration is closed

Sorry, you are not allowed to register by yourself on this site!

You must either be invited by one of our team member or request an invitation by email at viad.info {at} zhdk {dot} ch.

LeapMotion 01

LeapMotion 01

Leap Motion ist eine Firma, welche Devices für das Finger- und Hand-Tracking entwickelt und vertreibt. Der nun vorgestellte Leap Motion Controller ist ein USB Gerät, welches mittels Infrarot in der Lage ist, die Position von Fingern und der Hand in einem eingeschränkten Bereich sehr genau zu erfassen. Für Processing gab es schon recht früh ein Release eine Library, welche von onformative bereit gestellt wird. Die Library kann unter folgendem Link geladen werden. Sie erlaubt den Zugriff auf die Informationen der Kamera.

Struktur

Die Struktur ist grundsätzlich die gleiche wie bei jeder anderen Library auch. 1.Library importieren import com.onformative.leap.LeapMotionP5; import com.leapmotion.leap.Finger; 2.LeapMotion deklarieren LeapMotionP5 leap; 3.LeapMotion initialisieren leap = new LeapMotionP5(this); 4.Finger oder Hand erkennen for (Finger finger : leap.getFingerList()) { PVector fingerPos = leap.getTip(finger); }

Finger Tracking 2D

Für das erste Beispiel "LM01_1_Aktive_Finger_2D" benutzen wir nur das einfache Finger Tracking und zeichnen für jeden Finger eine Ellipse for (Finger finger : leap.getFingerList()) { PVector fingerPos = leap.getTip(finger); ellipse(fingerPos.x, fingerPos.y, 10, 10); } Mit diesem Beispiel lässt sich gut die Genauigkeit und die Limits (Finger eng zusammen) der Library erkennen. LeapMotion_01_2

Finger Tracking 3D

Das nächste Beispiel "LM01_2_Aktive_Finger_3D" zeigt, wie sich auch die 3D Koordinaten der Finger auslesen lassen. Dazu rufen wir ein translate() auf und zeichnen eine Sphäre an der neuen Position translate(fingerPos.x, fingerPos.y, fingerPos.z); So lässt sich erkennen, dass der Nullpunkt der z-Achse sich direkt über dem LeapMotion Controller befindet. LeapMotion_01_1

Hand Tracking 3D

Im letzten Beispiel "LM01_3_Aktive_Hand_3D" verwenden wir die Lage der Hand um eine virtuelle Box zu steuern. Auch hier lässt sich zum einen direkt die Position der Hand als PVector auslesen PVector handPosition = leap.getPosition(hand); Den Roll, Pitch und Yaw der Hand bekommen wir durch float pitch = leap.getPitch(hand); float roll = leap.getRoll(hand); float yaw = leap.getYaw(hand); Diese Werte können wir dann verwenden um die virtuelle Box um die gleichen Werte zu rotieren rotateX(radians(map(pitch, -30, 30, 45, -45))); rotateZ(radians(map(roll, -40, 40, 45, -45))); LeapMotion_01_3

Aufgaben

- Schaut euch die Gesture-Regocnition Beispiele der Library an - Kreiert eine eigene Geste, welche durch den LeapMotion Controller erkannt werden kann

Weiteres

- LeapMotionP5 - Library von onformative