You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
50 lines
1.4 KiB
50 lines
1.4 KiB
"""Prints the palm position of each hand, every frame. When a device is
|
|
connected we set the tracking mode to desktop and then generate logs for
|
|
every tracking frame received. The events of creating a connection to the
|
|
server and a device being plugged in also generate logs.
|
|
"""
|
|
|
|
import time
|
|
|
|
import leap
|
|
|
|
|
|
class MyListener(leap.Listener):
|
|
def on_connection_event(self, event):
|
|
print("Connected")
|
|
|
|
def on_device_event(self, event):
|
|
try:
|
|
with event.device.open():
|
|
info = event.device.get_info()
|
|
except leap.LeapCannotOpenDeviceError:
|
|
info = event.device.get_info()
|
|
|
|
print(f"Found device {info.serial}")
|
|
|
|
def on_tracking_event(self, event):
|
|
print(f"Frame {event.tracking_frame_id} with {len(event.hands)} hands.")
|
|
for hand in event.hands:
|
|
hand_type = "left" if str(hand.type) == "HandType.Left" else "right"
|
|
print(
|
|
f"Hand id {hand.id} is a {hand_type} hand with position ({hand.palm.position.x}, "
|
|
f"{hand.palm.position.y}, {hand.palm.position.z})."
|
|
)
|
|
|
|
|
|
def main():
|
|
my_listener = MyListener()
|
|
|
|
connection = leap.Connection()
|
|
connection.add_listener(my_listener)
|
|
|
|
running = True
|
|
|
|
with connection.open():
|
|
connection.set_tracking_mode(leap.TrackingMode.Desktop)
|
|
while running:
|
|
time.sleep(1)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|