我正在嘗試使用名為 IProvidesMarsBodyTracking 的 mars 插件提供的 API 來實作 Unity 的 MARS 插件的身體跟蹤。下面是繼承介面和 Monobehaviour 的腳本。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Unity.MARS.Providers;
using System;
using Unity.MARS.Data;
public class BodyTrackManager : MonoBehaviour, IProvidesMarsBodyTracking
{
public event Action<IMarsBody> BodyAdded;
public event Action<IMarsBody> BodyUpdated;
public event Action<IMarsBody> BodyRemoved;
[SerializeField] GameObject marsBody;
public void ConnectSubscriber(object obj)
{
throw new NotImplementedException();
}
public void GetBodies(List<IMarsBody> bodies)
{
BodyAdded = BodyTrackManager_BodyAdded;
Debug.Log("Test");
}
private void BodyTrackManager_BodyAdded(IMarsBody obj)
{
marsBody.transform.position = obj.BodyPose.bodyPosition;
marsBody.SetActive(true);
}
public void LoadProvider()
{
throw new NotImplementedException();
}
public void UnloadProvider()
{
throw new NotImplementedException();
}
}
這個腳本附在火星相機上,我已經將一個球體物件作為參考跟蹤器,只是觀察身體被跟蹤和未跟蹤的天氣。BodyTrackManager_BodyAdded 是在 BodyAdded 事件上注冊的自定義方法。在這里,我無法理解應該將哪個物件作為引數傳遞給 BodyTrackManager_BodyAdded,因為它接受 IMars 作為介面。
uj5u.com熱心網友回復:
您需要創建一個實作 IMarsBody 的類,以便它可以向訂閱者提供資料。與其訂閱 BodyAdded 事件,不如在跟蹤身體時呼叫該事件。
你確定你想要IProvidesMarsBodyTracking而不是IUsesMarsBodyTracking?提供者端旨在由 AR 資料提供者(如 ARKit 或 ARCore)實作。例如,身體跟蹤提供者可能會連接到一個機器學習模型,該模型在視頻源中跟蹤人體,然后實作此介面以向系統提供有關這些跟蹤身體的資料。IUsesMarsBodyTracking另一方面,旨在由游戲代碼實作以訪問該資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/515806.html
上一篇:反應中的分頁
