Erkennen hand swipe-Geste in der Einheit mit der Kinect mit OpenNI
Habe ich ein 3D-Modell in meinem Unity-Projekt und ich habe ein JavaScript, das dreht die Kamera basierend auf den Tastatur-Pfeiltasten (Links/rechts).
Nun brauche ich ein script, dass erkennt eine horizontale swipe-Geste mit der hand und liefert einen Vektor, die ich verwenden würde, um die Kamera zu drehen.
Ich bin mit dem ZigFu SDK mit PrimeSense OpenNI/NITE. Die ZigFu SDK kommt mit Beispiel-Skripts, von denen SwipeDetector - ich Frage mich, wie funktioniert es?
Mein setup:
Ich habe 3 GameObjects
: 3D-Modell, MainCamera, und ein Gerichtetes Licht.
So, wie benutze ich die SwipeDetector
script in mein Projekt? Die Art, wie ich es jetzt tun: 1)Erstellen Sie ein leeres game object "SwipeDetection", 2) "drag and drop" die SwipeDetector
Skript von ZigFu. Ich habe die Protokolle in der SwipeDetector
Skript, aber sehe ich Sie nicht.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Zigfu Bindungen (ich nehme an, Sie sind mit der version 1.4?) dont haben eine SwipeDetector Probe, aber Sie beinhalten eine SwipeDetector MonoBehaviour. Die SwipeDetector erkennt vertikale und horizontale swipes, aber leider nicht zu erkennen die Geschwindigkeit des streichen.
Haben Sie ein paar Optionen:
Verwendung der mitgelieferten Swipe-Detektor, und drehen Sie die Kamera um einen festen Betrag jedes mal, wenn Sie erkennen, eine horizontale swipe (SwipeDetector_Left oder SwipeDetector_Right Veranstaltungen)
Verwendung der mitgelieferten Swipe-Detektor, beginnen zu drehen auf Streichen und die Drehung auf die SwipeDetector_Release Veranstaltung. Dies wäre ähnlich wie das drücken der Pfeiltasten (vorausgesetzt, Sie haben das gleiche Verhalten auf keydown/keyup-Ereignisse)
Verfolgen, hand Geschwindigkeit, und prüfen Sie deren Wert, wenn die Abtastung erfolgt. Verwenden Sie diesen Wert, um die Kamera zu drehen. Behalten Sie den überblick über Geschwindigkeit, indem Sie eine neue MonoBehaviour und Umsetzung Hand_Create, Hand_Update, und Hand_Destroy (Blick auf alle Skripte, die in der HandpointControls Ordner). Halten Sie eine Warteschlange mit der hand Punkte aus den letzten n-frames. Das delta zwischen den neuesten & ältesten Punkte werden deiner Geschwindigkeit für die n-frames (ich empfehle, Sie beginnen mit 15 frames, oder etwa eine halbe Sekunde)
Ist(dies wird in einer künftigen Zigfu release :))
Ihre Spiel-Objekt-setup hört sich gut an - wenn Sie nicht sehen, keine logs, die Sie möglicherweise nicht durchführen "focus Geste" richtig. Versuchen Sie winken oder Durchführung Tippen Sie auf den sensor - dies sollte dazu führen, dass die Hand_Create Ereignis genannt zu werden. Sobald Sie einen gültigen handpoint sollten Sie sich die richtigen Veranstaltungen aus den Schlag-Detektor.
Erwähnenswert ist auch Ihre swipe-Erkennung-Spiel-Objekt sollte ein HandPointControl Komponente (implizit Hinzugefügt mit RequireComponent) und dass "ActiveOnStart' sollte true sein.