ハンドトラッキング

注釈

この機能は、実験的な機能であり、変更される可能性があります。また、サポート対象外のため、本番環境には使用しないでください。これらの実験的な機能は、今後のリリースで提供される可能性のあるプレビュー版として提供されています。実験的機能に関するフィードバックは、Lightshipの開発者コミュニティ に投稿してください。

フレーム内の人物の手の位置を追跡するには、ハンドトラッキング機能を使用します。ハンドトラッキング機能では手のひら検出を行い、手の2D位置や、手の幅、高さを確認できます。

ハンドトラッキングは、MediaPipe社のハンドトラッキング機械学習モデルを使用しています。詳細は、この モデルカード をご参照ください。

ハンドトラッキングを有効にするには、 ARHandTrackingManager をシーンスクリプトに追加し、 ARHandTrackingManager.HandTrackingUpdated のイベントハンドラを登録します。

using Niantic.ARDK.AR.Awareness;
using ARDK.Extensions;

public class MySceneScript: MonoBehaviour
{
    [SerializeField]
    private ARHandTrackingManager _handTrackingManager;

    private void Start()
    {
        _handTrackingManager.HandTrackingUpdated += OnHandTrackingUpdated;
    }
}

イベントハンドラで、 TrackingData.AlignedDetections のリストにハンドトラッキングのデータがあるかどうかを調べます。

private void OnHandTrackingUpdated(HumanTrackingArgs args)
{
    var data = args.TrackingData;
    for(var i=0; i < data.AlignedDetections.Count; i++)
    {
        var item = data.AlignedDetections[i];
        Debug.Log(item.X +" "+ item.Y + " -- " + item.W + " " + item.H );
    }
}

スクリプトで ARHandTrackingManager を使用できない場合は、セッションの ARWorldTrackingConfigurationIsPalmDetectionEnabled を有効にしてハンドトラッキング機能を有効にしてから、 ARSession.HandTracker.HandTrackingStreamUpdated の独自のイベントハンドラを追加します。

コード例については、ContextAwareness/HumanARにある ARDK使用例 のハンドトラッキング例をご参照ください。