【问题标题】:Placing Virtual Object Behind the Real World Object将虚拟对象放置在真实世界对象的后面
【发布时间】:2017-07-13 17:21:18
【问题描述】:

在适用于 iOS 的 ARKit 中。如果你展示一个虚拟物品,那么它总是出现在任何真实物品之前。这意味着如果我站在虚拟物品前面,那么我仍然会看到虚拟物品。我该如何解决这种情况?

瓶子应该是可见的,但它正在切断。

【问题讨论】:

  • 这和z索引有什么关系?
  • 我只是用z-index来更清楚地解释问题,因为人们对z index很熟悉。
  • 你的意思是“真实世界对象”,相机输入对吗? “虚拟对象”是指你画的东西?
  • 我刚刚添加了一张图片。希望这可以说清楚。

标签: ios arkit


【解决方案1】:

您无法仅使用 ARkit 实现此目的。它没有提供解决遮挡问题的现成解决方案。

理想情况下,您应该知道投影在相机上的每个像素的深度,并使用它来确定前面和后面的像素。我不会尝试 ARKit 暴露的特征点,因为 1)它们的位置不准确 2)在两帧之间无法知道帧 A 的哪个特征点是帧 B 中的哪个特征点。这是处理噪声数据的方法什么都好。

您也许可以使用第三方选项来处理捕获的图像并了解场景中的深度或不同深度级别,但我不知道有什么好的解决方案。有一些 SLAM 技术可以产生密集的深度图,例如 DTAM (https://www.kudan.eu/kudan-news/different-types-visual-slam-systems/),但这将重做 arkit 所做的大部分工作。可能还有其他我不知道的方法。像 snap 这样的应用程序以自己的方式做到这一点,所以这是可能的!

【讨论】:

    【解决方案2】:

    所以基本上你的问题是将虚拟物品的坐标映射到现实世界坐标系上,简而言之,你想看到被真实物品阻挡的虚拟物品,并且只有通过后才能看到虚拟物品实物。

    如果是这样,你需要知道这个环境中每个物体的物理关系,然后你需要确切地知道你在哪里来决定虚拟物品是否被阻挡。

    这不是解决此问题的直观方法,但是,这是我能想到的唯一方法。

    干杯。

    【讨论】:

    • 感谢您的回答。
    【解决方案3】:

    你想要达到的目标并不容易。

    您需要使用某种图像处理来检测现实世界中“应该可见”的部分。或者可能是具有深度信息的 ARKit 特征点,然后基于此您必须添加“一个不可见的虚拟对象”,以削减其背后的事物的绘制。这将代表您在“虚拟世界”中的“真实对象”,以便背景(相机画面)在存在此不可见虚拟对象的地方保持可见。

    【讨论】:

      猜你喜欢
      • 2020-10-12
      • 2018-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多