【问题标题】:Microsoft Hololens Spatial Mapping Surface DifferentiationMicrosoft Hololens 空间映射表面微分
【发布时间】:2017-04-01 05:40:03
【问题描述】:

我想知道 HoloLens 区分表面的能力。更具体地说,我想知道用户注视的是什么类型的表面,是水平表面(即桌面、地板、天花板)还是垂直表面(即墙壁)。我想知道是否有任何内置功能可以检测到这一点,或者我如何才能实现一个 - 我不太确定从哪里开始。 (我已经在谷歌上搜索了很长一段时间,但无济于事。)

【问题讨论】:

  • 这很容易。只需从表面取 3 个随机点。计算接收到的表面的法线,如this。并检查高度轴上的角度。
  • 这绝对是完美的。非常感谢!

标签: unity3d spatial augmented-reality hololens


【解决方案1】:

其他想法会起作用,但没有抓住微软提供的重点。您应该使用 HoloToolkit (Direct3d / C++) 或 HoloToolkit for Unity (Unity3d / C#)。

https://github.com/microsoft/HoloToolkit

https://github.com/microsoft/HoloToolkit-Unity

每一个都有

的概念

SpatialMapping + PlaneFinding:

https://github.com/Microsoft/HoloToolkit-Unity/tree/master/Assets/HoloToolkit/SpatialMapping

https://github.com/Microsoft/HoloToolkit/tree/master/SpatialMapping/PlaneFinding

空间映射+空间理解:

https://github.com/Microsoft/HoloToolkit-Unity/tree/master/Assets/HoloToolkit/SpatialUnderstanding

https://github.com/Microsoft/HoloToolkit/tree/master/SpatialUnderstanding/Src

平面查找可以满足您的需求,但空间理解可以提供一定程度的复杂性,帮助您更好地实现目标。无论哪种方式,聪明地工作并使用 Microsoft 提供的 SDK。

【讨论】:

    【解决方案2】:

    在贴图上使用光线投射,然后使用来自 RaycastHit 对象的法线。

    https://docs.unity3d.com/ScriptReference/RaycastHit-normal.html

    然后将法线与点积与向上向量进行比较。如果接近 1,那么你有一个水平表面,如果接近 0,你有一个垂直表面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-17
      相关资源
      最近更新 更多