资源名称
基于Pico Unity SDK 3.2.0 和Pico体感追踪器正式版 进行开发
主要模式
独立追踪、动作捕捉
模式说明
独立追踪
API返回每个传感器独立的信息,包括在空间中的位置、旋转等信息。需要注意的是,当追踪器背对头显,或者距离头显超出1米以上,就会丢失位置信息,只剩下旋转信息。
动作捕捉
API返回身体点位的信息,如果需要用于驱动人物模型,需要单独计算关节的IK,可以接入Pico Avatar,已经做好了IK的计算。
示例代码
以下仅演示获取独立追踪模式的单个追踪器
using Unity.XR.PXR;
using UnityEngine;
using UnityEngine.XR.Interaction.Toolkit;
public class PicoTracker : MonoBehaviour
{
private MotionTrackerConnectState state = new MotionTrackerConnectState();
private const int TrackerIndex = 0; // 只使用第一个追踪器
void Update()
{
#if UNITY_ANDROID
// 确保使用独立追踪模式
if (PXR_MotionTracking.GetMotionTrackerMode() != MotionTrackerMode.MotionTracking)
return;
// 获取追踪器连接状态
if (PXR_MotionTracking.GetMotionTrackerConnectStateWithSN(ref state) != 0 ||
state.trackerSum < 1)
return;
// 获取第一个追踪器的序列号
var trackerSN = state.trackersSN[TrackerIndex];
// 获取位置和旋转数据
MotionTrackerLocations locations = new MotionTrackerLocations();
MotionTrackerConfidence confidence = new MotionTrackerConfidence();
if (PXR_MotionTracking.GetMotionTrackerLocations(trackerSN, ref locations, ref confidence) == 0)
{
Vector3 currentPosition = locations.localLocation.pose.Position.ToVector3();//获取位置
Quaternion currentRotation = locations.localLocation.pose.Orientation.ToQuat();//获取旋转
}
}
}