Magic Leap One을 통한 제스처 인식

10707 단어 MagicLeap
할 일
MagicLeap이 축소판 그림의 손을 인식하면 Unity 편집기에 로그가 나타납니다.
동작을 확인하면 매직리프를 PC에 연결해 ZeroIteration으로 진행한다.
컨디션
PC : Windows10
Unity : 2019.3.7f1
Lumin SDK : v.0.24.1
이루어지다
먼저 GestureTrackingManager 클래스를 만듭니다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.MagicLeap;

  public class GestureTrackingManager : MonoBehaviour
  {
      private void Start()
      {
      }
      private void Update()
      {
      }
  }
사용할 제스처를 정의하고 Start에 등록합니다.여러 개의 제스처가 있다면 목록에 등록하세요.
이번에는 미리 보기 그림만 사용합니다.
/// <summary>使用するジェスチャー</summary>
private MLHandTracking.HandKeyPose _gesture;

private void Start()
{
    MLHandTracking.Start();

    // トラッキングするジェスチャーを登録
    _gesture = new MLHandTracking.HandKeyPose.Thumb;

    // 登録したジェスチャーのトラッキングを有効にする
    MLHandTracking.KeyPoseManager.EnableKeyPoses(_gesture, true, false);
        }
다음은 실제 인식의 처리다.
다음 GetGesture 방법은 지정된 제스처를 인식한 후 True로 돌아갑니다.
bool GetGesture(MLHandTracking.Hand hand)
{
    if (hand != null)
    {
        if (hand.KeyPose == MLHandTracking.HandKeyPose.Thumb && hand.HandKeyPoseConfidence > 0.9f)
        {
            return true;
        }
    }
    return false;
}
좌우 임의의 손으로 미리 보기 그림을 업그레이드하면 로그가 나온다.
public void TrackGesture()
{
    if(GetGesture(MLHandTracking.Left) || GetGesture(MLHandTracking.Right))
    {
        Debug.Log("Hand gesture Thumb was detected.");
    }
}
Update를 사용하여 TrackGesture 메서드를 호출합니다.
반 전체 학생은 아래와 같다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR.MagicLeap;

namespace Manager
{
    public class GestureTrackingManager : MonoBehaviour
    {
        /// <summary>使用するジェスチャーリスト</summary>
        private MLHandTracking.HandKeyPose[] _gestures;

        private void Start()
        {
            MLHandTracking.Start();

            // トラッキングするジェスチャーを登録
            _gestures = new MLHandTracking.HandKeyPose[2];
            _gestures[0] = MLHandTracking.HandKeyPose.Ok;
            _gestures[1] = MLHandTracking.HandKeyPose.Thumb;

            // 登録したジェスチャーのトラッキングを有効にする
            MLHandTracking.KeyPoseManager.EnableKeyPoses(_gestures, true, false);
        }

        private void Update()
        {
            TrackGesture();
        }

        private void OnDestroy()
        {
            MLHandTracking.Stop();
        }

        public void TrackGesture()
        {
            if (GetGesture(MLHandTracking.Left) || GetGesture(MLHandTracking.Right))
            {
                Debug.Log("Hand gesture Thumb was detected.");
            }
        }

        bool GetGesture(MLHandTracking.Hand hand)
        {
            if (hand != null)
            {
                if (hand.KeyPose == MLHandTracking.HandKeyPose.Thumb && hand.HandKeyPoseConfidence > 0.9f)
                {
                    return true;
                }
            }
            return false;
        }
    }
}
콘솔에 다음 로그가 있습니다.

좋은 웹페이지 즐겨찾기