Code: schritte/03-handpose/ · Dauer: ca. 20 Minuten
Diesmal trainierst du nichts. Das Modell ml5.handPose kennt Hände schon und liefert dir
21 Punkte pro Hand (Handgelenk, Fingergelenke, Fingerspitzen). Du schreibst die Logik, was mit diesen Punkten passiert.
| Teachable Machine (Schritt 2) | ml5 handPose (Schritt 3) | |
|---|---|---|
| Training | Du trainierst mit eigenen Beispielen | Keines nötig |
| Ausgabe | Eine Klasse (“links”, “rechts”) | Koordinaten (x, y) für 21 Punkte |
| Gut für | Eigene, ungewöhnliche Dinge erkennen | Genaue Positionen und Bewegungen |
| Aufwand | Bilder aufnehmen | Etwas mehr Code schreiben |
Beides hat seinen Platz. Für “wo ist meine Hand?” ist handPose genauer. Für “ist das eine Faust oder ein Peace-Zeichen?” ist Training praktischer.
schritte/03-handpose/index.html mit Live Server öffnen.In steuerung.js liefert ml5 bei jedem Kamerabild eine Liste von Händen. Jede Hand hat keypoints.
Wir nehmen einen Punkt (PUNKT), rechnen seine x-Position auf die Spielbreite um und lassen den Spieler dorthin laufen.
Wichtig: ml5 meldet x im Koordinatenraum des Video-Elements (hier 160 px breit), nicht der Kamera (z. B. 640 px). Darum teilen wir durch handVideo.elt.width.
HAND_RAND legt fest, welcher Teil des Kamerabilds links und rechts als Spielrand zählt. So muss die Hand nicht ganz aus dem Bild.
HAND_INVERT auf true.HAND_RAND (z. B. 0.25 = weniger Weg, 0.05 = mehr Weg).PUNKT auf 8 (Zeigefingerspitze) oder 0 (Handgelenk). Was fühlt sich besser an?| Problem | Lösung |
|---|---|
| Lädt lange | Beim ersten Start wird das Modell geladen. Ein paar Sekunden warten. |
| Keine Hand erkannt | Hand gut beleuchtet, ganz im Bild, Handfläche zur Kamera. |
| Spieler zittert | Toleranzzone in steuerungUpdate() vergrössern (die Zahl 12). |