Manomotion 实现AR手势互动-解决手势无效的问题

时间:2024-03-04 07:33:44

之前就玩过 Manomotion ,现在有新需求,重新接入发现不能用了,不管什么办法,都识别不了手势,我记得当初是直接调用就可以的。

经过研究发现,新版本SDK改了写法。下边就写一下新版本的调用,并且实现一个简单的工具脚本。初学者可以参考一下。

主要步骤包含:

1.官网注册

2.创建APP

3.获得APIKey

4.下在SDK导入项目

5.测试使用。

工具脚本如下:

 
using UnityEngine; 

public class ManoHandDetection : MonoBehaviour
{
    private bool pick = false;
    public bool isPick
    {
        get
        {
            if (pick)
            {
                pick = false;
                return true;
            }
            return false;
        }
    }

    private bool drop = false;
    public bool isDrop
    {
        get
        {
            if (drop)
            {
                drop = false;
                return true;
            }
            return false;
        }
    }

    private bool click = false;
    public bool isClick
    {
        get
        {
            if (click)
            {
                click = false;
                return true;
            }
            return false;
        }
    }



    private void Start()
    {
        ManomotionManager.Instance.ShouldCalculateGestures(true);
    }

    // Update is called once per frame
    void Update()
    {
        GestureInfo gestureInfo = ManomotionManager.Instance.Hand_infos[0].hand_info.gesture_info;
        DetectionGestureInfo(gestureInfo);
    }

    private void DetectionGestureInfo(GestureInfo gestureInfo)
    {
        if (gestureInfo.mano_gesture_trigger != ManoGestureTrigger.NO_GESTURE)
        {
            switch (gestureInfo.mano_gesture_trigger)
            {
                case ManoGestureTrigger.DROP:
                    drop = true;
                    break;
                case ManoGestureTrigger.PICK:
                    pick = true;
                    break;
            }
        }
    }


    public Vector3 Get_PalmPos()
    {
        return ManomotionManager.Instance.Hand_infos[0].hand_info.tracking_info.palm_center;
    }
    public Vector3 Get_POI()
    {
        return ManomotionManager.Instance.Hand_infos[0].hand_info.tracking_info.poi;
    }   
}

需要注意的是:

1.新版SDK 需要在Start调用一次Gesture 功能打开开关。

 ManomotionManager.Instance.ShouldCalculateGestures(true);

这个开关可以动态打开、关闭。

2.包名要和Manomotion官网保持一致。

3.Key填写的位置ManomotionManager.cs 脚本上。