受限于小区域的空间理解

Spatial Understanding limited by a small area

我正在 Unity 中使用 Hololens 并尝试绘制大面积 (15x15x25) 米的地图。我可以使用 SpatialMapping 预制件绘制整个区域的地图,但我想对该网格进行一些空间处理以平滑地板和墙壁。我一直在尝试为此使用 SpatialUnderstanding,但似乎对使用它可以扫描的区域有一个硬性限制,hololens forums thread.

对此进行了详细说明

目前,我不明白从 SpatialMappingSpatialUnderstanding 的数据管道是如何工作的。为什么我不能简单地在 SpatialUnderstanding 中使用 SpatialMapping 生成的网格?有没有更好的创建光滑表面的方法?

此解决方案最适合预生成的房间。换句话说,考虑到当前的限制,不可能有一个最终用户可以使用的通用解决方案。

  • 我先从最后一个问题开始:"Is there some better method of creating smooth surfaces?"

    • 是的,使用带轮子的三脚架生成初始扫描。鉴于硬件中加速度计和罗盘的分辨率有限,减少一个线性轴、高度和一个旋转轴的方差,滚动(滚动在扫描期间根本不应该变化),将导致更准确的扫描.

    • 创建光滑表面的另一种方法是将网格导出到 3D 编辑程序并手动拉平表面,然后将网格重新导入 Unity3D。

  • "Why can I not simply use the meshes generated from SpatialMapping in SpatialUnderstanding?"

SpacialUnderstanding将生成的网格进一步划分为(8cm,8cm,8cm)个体素,然后根据每个体素计算面元。为了控制性能和内存利用率,硬限制约为 (10m,10m,10m)。这被实现为(128,128,128)体素。

任何超出其定义限制使用 SpacialUnderstanding 的尝试都会由于底层数据结构的溢出而产生虚假结果。