gpt4 book ai didi

c# - HoloLens 2获取空间坐标系的正确方法

转载 作者:行者123 更新时间:2023-12-04 14:11:38 26 4
gpt4 key购买 nike

因此,我正在努力思考从通过 MediaFrameReference 类获取的帧进行的转换。我得到的是一张带有相关空间坐标系和相机内在参数的图像。为了计算图像 (U, V) 中像素的真实世界坐标 (X, Y, Z),我认为访问 4x4Matrix 就足够了,它表示从 RGB 相机到世界的变换矩阵。

为此,我找到了 TryGetTransformTo(SpatialCoordinateSystem target) 方法。如果我正确理解文档,我会将图像坐标系附加到图像上,所以我会调用

image.CoordinateSystem.TryGetTransformTo(worldCoordinateSystem)

  • 但我就是找不到获取worldCoordinateSystem 的正确方法。显然 locatable camera 中有一部分被删除的文档。

  • 我检查了 Microsoft (HolographicFaceTracking) 的示例,但我在解释 C++ 代码方面非常糟糕。所以这对我来说不是很有用。

  • Sketchy Experiments with HoloLens程序员用过var unityWorldCoordinateSystem = Marshal.GetObjectForIUnknown(WorldManager.GetNativeISpatialCoordinateSystemPtr()) as SpatialCoordinateSystem;,但它被声明为已过时。使用这些信息和非常好的谷歌搜索技巧,我找到了这个 link .有一个类似的问题,但从未得到回答。

我的问题是,获取我需要的空间坐标系的最有效方法是什么。我正在使用 Unity 2018.4.22f1 和 Visual Studio 2019。

非常感谢任何帮助。亲切的问候。

最佳答案

推荐使用PhotoCapture类来抓图,PhotoCaptureFrame的TryGetCameraToWorldMatrix方法可以很容易的获取到Camera在抓图时填充到worldMatrix的Matrix4x4。您可以引用此链接以了解有关如何使用它的更多信息:UnityEngine.Windows.WebCam.PhotoCapture

在调用异步方法时遵循指南 TakePhotoAsync(onCapturedPhotoToMemoryCallback) ,你需要传入一个函数作为参数,一旦照片存储到内存就会调用它。并且在此函数中,您将获得一个 PhotoCaputrerFrame 实例作为参数。最后,调用 PhotoCaptureFrame.TryGetCameraToWorldMatrix在此参数上获取一个矩阵,该矩阵将在拍摄照片时由相机填充到世界矩阵。

此外,对于早期版本的 MR 文档,它已经演示了如何使用着色器代码在相机图像上的特定 3d 位置查找或绘制,您可以在 GitHub 提交历史上找到它:mixed-reality-docs/locatable-camera.md.

关于c# - HoloLens 2获取空间坐标系的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63882334/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com