c# - 如何使用 Microsoft Scene Understanding SDK 和 hololens2 将 Unity 场景与玩家的物理房间对齐?

标签 c# unity3d hololens mrtk windows-mixed-reality

<分区>

编辑:这是关闭的,因为它需要更多的细节,但人们一直在投票。所以我会尽力添加一些。这个问题的格式很糟糕,因为它实际上是 2 个问题。 1) 如何从文档中修复此代码? 2) 如何将 unity 场景与玩家的物理空间对齐?

我觉得 #1 专注于答案,但 #2 是标题问题。我的主要问题是正在创建的遮挡网格是颠簸的/不平坦的,使得全息图和地板之间的碰撞非常不稳定。我最终创建了一个基本菜单,在玩家面前有一个立方体的全息图。然后指示玩家降低立方体,直到它均匀地坐在地板上。然后我确保所有全息图都不会低于该设定值,无论是使用碰撞平面还是通过代码。希望这个想法可以帮助任何人。谢谢!

当玩家加载到 Hololens2 中的统一场景时,Unity Floor 平面与物理地板不匹配。使用 hololens2 和 MRTK,Unity 场景原点被锁定为玩家头部 0,0,0。

我正在尝试使用 Microsoft Scene Understanding SDK 将 Unity 场景环境 Y 位置设置为物理房间的地板。我目前可以访问地板场景对象,但是当我尝试执行 SpatialCoordinateSystem 部分时,我无法使用 .ToUnity() 方法转换 4x4 矩阵。我不得不将 vector3 .ToUnity() 调用更改为 .ToUnityVector3();但我无法为矩阵找到类似的方法。

本文档中提到的 .ToUnity() 方法是否已弃用?我是否缺少对某些内容的引用? (引用图片)

我非常感谢这里的任何帮助,无论是在这个特定问题上,还是在将统一场景与 Hololens2 用户的物理环境对齐的整体挑战中。

我正在关注此处提供的信息 https://learn.microsoft.com/en-us/windows/mixed-reality/develop/platform-capabilities-and-apis/scene-understanding-sdk

Code Snippet

I attempted the suggestion by Hernando - MSFT

Usings

最佳答案

documentation 相比,您错过了 Value 属性并直接在 sceneToWorld 对象上调用了 ToUnity() 方法。这可能是问题的原因。

var sceneToWorldUnity = sceneToWorld.ToUnity();

=>

var sceneToWorldUnity = sceneToWorld.Value.ToUnity();

关于c# - 如何使用 Microsoft Scene Understanding SDK 和 hololens2 将 Unity 场景与玩家的物理房间对齐?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64937974/

相关文章:

c# - 如何在没有准备好的语句的情况下转义 System.Data.SQLite 中的字符串

unity3d - 如何在 2 个四边形的相交部分使用不同的纹理

unity3d - 如何将电脑桌面分享到HoloLens2?

c# - Hololens 2 轻击和头部移动在 Unity 中有效,但在 HoloLens 上无效

c# - 覆盖 WCF 服务中的 ToString 方法

c# - 通过 Ref Textbox.Text

unity3d - 如何为 Vuforia/Unity 创建 AR 标记?

c# - 为对象添加相对于其局部轴的速度

visual-studio - Unity 找不到任何受支持的 Visual Studio 安装

c# - 如何清除所选项目 Xamarin 列表