[英]SpatialCoordinateSystem.TryGetTransformTo() from Webcam to Unity space fails in a non-initial, separated spatial environment on HoloLens 2
關於從 HoloLens 2 網絡攝像頭空間轉換到 Unity+MRTK+OpenXR 應用程序中的當前 Unity 場景空間的轉換矩陣,我有一個非常具體的問題。 目標是在 Unity 空間中通過Windows.Media.Capture
獲取與相機幀相關的精確相機姿勢。
我的環境:
為了獲得矩陣,我首先收到一個Windows.Perception.Spatial.SpatialCoordinateSystem
實例 ( unityReferenceCoordinateSystem
),通過 MR OpenXR插件表示 Unity 空間,如下所述:
using Windows.Perception.Spatial;
using Microsoft.MixedReality.OpenXR;
SpatialCoordinateSystem unityReferenceCoordinateSystem = PerceptionInterop.GetSceneCoordinateSystem(Pose.identity) as SpatialCoordinateSystem;
我從MediaFrameReader
從Windows.Media.Capture.Frames.MediaFrameReference
獲取的相機幀實例中獲取相機空間( cameraCoordinateSystem
)
MediaFrameReference mediaFrame; // acquired camera frame
SpatialCoordinateSystem cameraCoordinateSystem = mediaFrame.CoordinateSystem;
最后,我通過使用SpatialCoordinateSystem.TryGetTransformTo()
獲得所需的變換矩陣,如您在我的完整方法中所見:
using Microsoft.MixedReality.Toolkit;
public bool TryGetCameraToUnityMatrix(out Matrix4x4 cameraToUnity)
{
// (obtain MediaFrameReader, acquire a camera frame and obtain
// unityReferenceCoordinateSystem and cameraCoordinateSystem as described above)
System.Numerics.Matrix4x4? camToUnitySysMatrix = cameraCoordinateSystem.TryGetTransformTo(unityReferenceCoordinateSystem);
if (!camToUnitySysMatrix.HasValue)
{
return false;
}
cameraToUnity = camToUnitySysMatrix.Value.ToUnity();
return true;
}
到目前為止一切正常 - 直到我將 HoloLens 帶入另一個空間環境,該環境未連接到應用程序啟動時存在的環境。
描述以下場景應該清楚我的意思:
cameraToUnity
矩陣 --> 工作正常cameraToUnity
矩陣。 -->失敗:camToUnitySysMatrix.HasValue
返回 false(即使 arguments unityReferenceCoordinateSystem
和cameraCoordinateSystem
是 null。)cameraToUnity
矩陣 --> 再次正常工作! ( camToUnitySysMatrix
再次具有有效值) 我還確保在更改環境后重新調用unityReferenceCoordinateSystem = PerceptionInterop.GetSceneCoordinateSystem(Pose.identity)
並且 MediaFrameReader 也從新的MediaFrameReader
實例MediaCapture
實例化。
但顯然,如果在非初始空間環境中嘗試,兩個 SpatialCoordinateSystems 之間的轉換似乎會失敗。
關於如何解決這個問題的任何想法?
更新
可在此處找到用於重現此問題的最小 Unity 示例項目: https://github.com/pjaydev/trygettransformto-so
平時,用戶應佩戴HoloLens設備,並在移動和操作時保持開啟狀態,讓設備充分了解環境。 而且HoloLens對使用的場地大小也有一定的要求,如果房間太小,HoloLens可能無法正常工作。 如果您對此問題感到困惑或對業務有影響,您可以通過aka.ms/HLSupport提交工單。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.