使用全息远程处理时来自 SpatialPointerPose 的视线

Eye gaze from SpatialPointerPose while using Holographic Remoting

我正在使用 SpatialPointerPose API 从 HoloLens 2 眼动仪获取数据(为简洁起见,未进行安全检查):

currentSpatialCoordinateSystem = PerceptionInterop.GetSceneCoordinateSystem(UnityEngine.Pose.identity) as SpatialCoordinateSystem;
SpatialPointerPose pointerPose = SpatialPointerPose.TryGetAtTimestamp(currentSpatialCoordinateSystem, PerceptionTimestampHelper.FromHistoricalTargetTime(DateTimeOffset.Now));
var eyes = pointerPose.Eyes;
GazeOrigin = eyes.Gaze.Value.Origin.ToUnityVector3(),
GazeDirection = eyes.Gaze.Value.Direction.ToUnityVector3()

这似乎在使用 Holographic Remoting 时也有效。但是,我对这种情况下的注视数据timing/synchronization有些疑惑,因为远程服务器和HoloLens之间会有一些延迟吗? 具体来说,考虑到代码在远程计算机上运行(作为独立应用程序或在 Unity 编辑器中使用远程播放模式),TryGetAtTimestamp 会在这里给我正确的时间吗?

编辑:以上代码仅在 remoting in Unity play mode

时有效

全息远程处理使用时钟同步,这意味着时间是正确的。 SpatialPointerPose::TryGetAtTimestamp 的结果和准确性取决于给定的时间戳。例如,如果给定时间戳早于远程端最后接收到的姿势数据,则返回的 SpatialPointerPose 将是接收到的姿势数据值的精确插值。如果给定的时间戳比远程端最后接收到的姿势数据更新,则全息远程处理会根据可用的最新姿势数据预测 SpatialPointerPose。