gpt4 book ai didi

leap-motion - 如何实现非标准的 Leap Motion 手势?

转载 作者:行者123 更新时间:2023-12-04 07:38:41 28 4
gpt4 key购买 nike

Leap Motion API 仅支持四种标准手势:圆圈、滑动、按键和屏幕点击。在我的应用程序中,我需要其他手势,但我不知道如何添加它们,或者是否可以添加更多手势。我阅读了 API 并没有帮助。

在我的应用程序中,我希望允许用户按住一个对象并拖动它。使用 Leap Motion API 可以吗?如果是这样,我该怎么做?

最佳答案

您需要创建自己的方法来识别手势的起点、过程和终点。

初始点:
您的程序将如何识别您正试图握住某物?我能想到的一个简单的手势是 2 个手指与 1 个手掌相连。因此,在框架中,如果您看到 2 个手指与 1 个手掌相连并且手指相距 10-20 毫米,您可以将其识别为握住某物的手势。当满足这些条件时,程序将识别手势,您可以在这些条件中编写一些代码。

对于 C# 中一个非常丑陋的示例:

初始点:
bool 手势检测=假;

Frame frame = controller.Frame();
HandList hands = controller.Hands;

if (hands.Count == 1)
{
foreach (Hand hand in hands)
{
if (hand.fingers.Count == 2)
{
int fingerA_x,fingerB_x;
foreach (Finger finger in hand.fingers)
{
if(fingerA_x == 0)
{
fingerA_x = finger.x;
} else
{
fingerB_x = finger.x;
}
}
}
}

if((fingerA_x - fingerB_x) < 20)
{
//Gesture is detected. Do something...
gesture_detected = true;
}
}

过程:
你的手势想做什么?如果要四处移动,则必须调用鼠标方法来进行拖动。使用事件 MOUSEEVENTF_LEFTDOWN 在 PInvoke 下在 C++ 中搜索方法 mouse_event()。

终点:
拖动完成后,需要调用MOUSEEVENTF_LEFTUP这样的鼠标方法事件来模拟已经完成的鼠标拖动。但是您的程序将如何检测您何时应该停止拖动?最合乎逻辑的方式是在框架中不再检测到手势。所以写一个 else 条件来处理替代方案。
       if (!gesture_detected)
{
// Do something
}

关于leap-motion - 如何实现非标准的 Leap Motion 手势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20473951/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com