...
Code Block |
---|
for (Finger finger : leap.getFingerList()) { PVector fingerPos = leap.getTip(finger); } |
Finger Tracking 2D
4.Finger oder Hand erkennenFinger 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:
Code Block |
---|
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.
...
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:
Code Block |
---|
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.
...
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:
Code Block |
---|
PVector handPosition = leap.getPosition(hand); |
Den Roll, Pitch und Yaw der Hand bekommen wir durch:
Code Block |
---|
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:
Code Block |
---|
rotateX(radians(map(pitch, -30, 30, 45, -45))); |
...
rotateZ(radians(map(roll, -40, 40, 45, -45))); |
Aufgaben
- Schaut euch die Gesture-Regocnition Beispiele der Library an
- Kreiert eine eigene Geste, welche durch den LeapMotion Controller erkannt werden kann
...