将虚拟对象放在真实世界对象后面

时间:2017-07-13 01:04:54

标签: ios arkit

在ARKit for iOS中。如果您显示虚拟物品,则它始终位于任何真实物品之前。这意味着如果我站在虚拟物品前面,我仍然会看到虚拟物品。我该如何解决这个问题呢?

enter image description here

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

3 个答案:

答案 0 :(得分:5)

仅使用ARkit无法实现此目的。它没有提供解决遮挡的搁置解决方案,这是一个难题。

理想情况下,您可以知道投影在相机上的每个像素的深度,并使用它来确定前面的那些像素和后面的像素。我不会尝试使用ARKit正在暴露的特征点,因为1)它们的位置是真空的2)在两帧之间没有办法知道帧A的特征点是帧B中的哪个特征点。这是嘈杂的数据做的方式什么都好。

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

答案 1 :(得分:1)

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

如果是这样,您需要知道此环境中每个对象的物理关系,然后您需要确切知道您要确定虚拟项目是否被阻止。

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

干杯。

答案 2 :(得分:1)

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

您需要检测现实世界中应该可见的部分"使用某种图像处理。或者也许是具有深度信息的ARKit特征点,然后在此基础上你必须添加一个不可见的虚拟对象"这削弱了背后的东西。这将代表您的真实对象"在虚拟世界里面#34;这样背景(摄像机输入)在存在这个不可见虚拟物体的地方仍然可见。