MagicLeapToolKit을(를) 사용하여 핸드제스처의 확장 방법

8687 단어 magicleapcsharp
で紹介したジェスチャの取得方法はMagicLeapUnityPackageのコアシテムを利用 したジェス챠の取得方法

それとは別にMagicLeapToolKit을 사용하여 한드제스쳐의 取得方法을 紹介します( かなりお手軽なので おすめです )

環境



LuminOS : 0.98.11
LuminSDK : 0.24.1
MagicLeapUnity패키지 : 0.24.2
유니티 : 2019.3.7.f1
MagicLeapToolKit : 특별한 바졸이 한정되지 않는 것으로 こちら 에서 최신 버전을 DL

出来上がり



以下のようにジェスチャを取得できる機能を作成します

技術記事投稿用動画MagicLeap의 손제스챠를 取得するだけlogの表示はRuntimeConsole pic.twitter.com/RJDyHbkOyZ — 松本隆介 (
)

신노작성(下準備)



で作成したCameraRigまたは自前で作成したCameraをシーンに配置しておいてください
こちらは最低限の準備でよいと思います

다음 GameObjectを作成( とりあえずHandInput으로 하십시오 )を作成し、MagicLeap-Tools > Code > Input > Hands ディレクトリにあるHandInputをアタッチします



다음으로 MagicLeap-Tools > Examples > RuntimeConsole > Scenes にあるRuntimeConsoleshinをHierarchy上に드랏그&드롭쉬, その中かRuntimeConsole오브제크트を自分のtest用




これで下準備が完了しました.

스크립트 작업



ここからがmeinになります、といってもやることは簡単でHandInputにJeschaを取得するためのイベントを登録するだけです

using MagicLeapTools;
using UnityEngine;
using UnityEngine.XR.MagicLeap;


/// <summary>
/// MLTKの手のジェスチャ取得.
/// </summary>
public class Sample : MonoBehaviour
{

    void Start()
    {
        HandInput.OnReady += () =>
        {
            HandInput.Right.Gesture.OnKeyPoseChanged += OnHandGesturePoseChanged;
            HandInput.Left.Gesture.OnKeyPoseChanged += OnHandGesturePoseChanged;
        };
    }


    private void OnHandGesturePoseChanged(
        ManagedHand hand,
        MLHandTracking.HandKeyPose pose)
    {
        // 左右の判定はこんな感じ.
        string lr = hand.Hand.Type == MLHandTracking.HandType.Left ? "left" : "right";
        Debug.Log($"{pose} {lr}");

        // 取得されたジェスチャ.
        switch (pose)
        {
            case MLHandTracking.HandKeyPose.C: break;
            case MLHandTracking.HandKeyPose.Finger: break;
            case MLHandTracking.HandKeyPose.Fist: break;
            case MLHandTracking.HandKeyPose.L: break;
            case MLHandTracking.HandKeyPose.Ok: break;
            case MLHandTracking.HandKeyPose.Pinch: break;
            case MLHandTracking.HandKeyPose.Thumb: break;
            case MLHandTracking.HandKeyPose.NoHand: break;
            case MLHandTracking.HandKeyPose.NoPose: break;
            case MLHandTracking.HandKeyPose.OpenHand: break;
        }
    }


}



↑의 각본으로 問題なくジェスチャを取得する ことが出来ると思います

이 스크립트を先ほど作成したHandInputにアタッチすれば稼働します


Script の解説



Start()로 HandInput.OnReady의 이벤트를 활성화하려면 HandInput.Right, Left의 OnKeyPoseChanged 이벤트를 시작해야 합니다.
리스나는 ManagedHand형과 MLHandTracking.HandKeyPose형을 引数に持つmesodd입니다.

あとがき



UniRx 등을 사용하여 제스쳐의 제스쳐를 연결하는 일의 코만드 등을 만들 수 있는 제스쳐의 제스챠의



MagicLeap의 제스챠로 할 수 있는 を作ってみた動画は右手Fist -> (1秒以内に)右手OpenHand로 弾を飛ばす動作、途中二回はわざ와 1秒よりも長くinターバルをント作りがのベ確認 これでジェスチャの幅が広がった pic.twitter.com/Ha3Vo9IXMd — 松本隆介 (
)

좋은 웹페이지 즐겨찾기