我目前正在使用与SpectatorView repo 内的 CameraPoseProvider 中使用的相同代码获取 Hololens 2 耳机位置。此过程的主要部分包括以下调用:
SpatialLocator locator = SpatialLocator.GetDefault();
SpatialLocation headPose = locator.TryLocateAtTimestamp(perceptionTimestamp, unityCoordinateSystem);
这很好用,但我似乎无法弄清楚headPose
耳机本身返回的确切位置。我的目标是转换headPose
到 RGB 相机的位置(以便它与外部 RGB 相机对应)。请问有人知道如何解决这个问题吗?
我一直在看HoloLens 2 研究模式论文,其中作者描述了定位 rigNode 的过程(定义为 deviceorigin - 左前可见光相机)。基于以下示例,我觉得他们获取 rigNode 的 id,然后使用它来获取定位器,而定位器又用于检索位置。
hr = pSensorDevicePerception->GetRigNodeId(&guid);
locator = SpatialGraphInteropPreview::CreateLocatorForNode(guid);
...
auto location = locator.TryLocateAtTimestamp(timestamp,anotherCoordSystem);
尽管这对我没有帮助,但我开始想知道SpatialLocator.GetDefault()
在 C# 中使用时我实际上得到了什么定位器(就耳机而言,这个定位器在哪里)?默认情况下是左前可见光相机吗?我想在不使用研究模式的情况下理想地定位 RGB 相机,但我不确定它是否真的可能?谢谢。