【问题标题】:How to detect untextured parts in 3D-model如何检测 3D 模型中的无纹理部分
【发布时间】:2019-07-15 21:33:26
【问题描述】:

我和我的团队目前正在为 microsoft hololens 开发软件。我们在 c# 中使用 Unity 和编码。目标是对房间进行 3D 扫描并对其进行纹理处理。之后,它们将被上传到我们的大学服务器,并可以下载到 VR-PC。 所以我们现在的问题是,我们不知道如何检测房间的无纹理部分。也许是光线投射? 3D-Mesh 总是会发生一些变化,这使得它有点难。

【问题讨论】:

  • 嗨。 “如何检测房间的无纹理部分”,你能解释一下“无纹理部分”是什么意思吗?如果您想获取 hololens 生成的 3dmesh,您可以使用SurfaceObserver,它可以让您访问 3D 扫描。光线投射是由 Hololens 赋予统一性的网格上的 Unity 引擎完成的,投射光线不会帮助您掌握 hololens 的网格。
  • 所以我们正在生成 uv 坐标来将照片映射到网格上。这部分工作正常。如果您对用户说:“随心所欲地拍摄照片”,那么用户体验将非常糟糕。我们正在寻找一种解决方案来检测要映射的位置。 Ps:对不起我的英语不好
  • 啊,有道理,您让用户预先扫描了一个房间,并希望能够检测到他们尚未扫描的部分。

标签: 3d texture-mapping raycasting hololens


【解决方案1】:

有一个名为“Spatial Understanding”的进程可用于检测初始房间扫描的进度。我不确定上面链接的文档是否与当前的 MRTK 保持同步,或者它们是否引用了旧版本,但无论哪种方式,它们都可能是一个很好的起点。

可以看到一个例子here。您可以使用“拓扑查询”来获取地板、天花板和墙壁。根据您的预期空间,当总面积超过某个值并检测到四面墙、地板和天花板时,您可以认为房间扫描完成。

即使有这些标签的帮助,关于何时将房间视为“完整”的决定将是相当武断的,并且不适用于结构怪异或连接的空间,所以我不会依赖这种方法作为阻止用户的硬性限制即使空间不符合您选择的空间理解要求,也不要上传空间。
为用户提供良好的扫描用户体验可能是鼓励他们扫描所有内容的最佳方式,叠加信息显示检测到的墙壁/地板平面,以帮助他们了解尚未检测到的内容。

【讨论】:

  • (这是假设您在扫描网格的同时捕获图像信息。)
猜你喜欢
  • 2020-01-29
  • 1970-01-01
  • 2020-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-04
  • 2018-07-13
  • 2019-11-12
相关资源
最近更新 更多