ARCore - 如何将真实世界的物体放置在 3D 模型前面?

3

我使用ARCore Sceneform插件创建了一个Android AR应用程序。 我能够将3D模型放置在突出显示的平面上。 但是,即使我在相机前面放置一个真实的物体(或者只是在相机前挥手),它也仅在3D对象后面可见。

我该如何在Android中将真实世界的对象放置在3D对象前面?

我们可以使用其他插件来实现这一点吗?


请删除标签“Java 3D”,因为您没有使用Java 3D API。 - gouessej
1个回答

2

ARCore 1.18

ARCore 1.18现在通过全新的深度API实现了Occlusion功能。请查看支持深度API的设备列表以确定您的Android智能手机是否支持遮挡功能。

enter image description here

Google文档对Depth API的说明如下:

深度API使用基于运动的深度算法创建深度图像,您可以使用acquireDepthImage()方法获得深度图像。该算法从不同角度拍摄多个设备图像,并将它们比较以估计用户移动时每个像素的距离。如果设备具有活动深度传感器(例如飞行时间传感器(ToF传感器)),则该数据会自动包含在处理后的深度中。这增强了现有的深度图并使相机静止时也能够获得深度。它还提供了更好的深度效果,适用于具有少量或没有特征的表面(例如白墙),或在具有移动人员或物品的动态场景中。


ARCore 1.17

但是,在先前的ARCore 1.17中,您无法执行任何Object Occlusion操作。除了相机聚焦功能外,它不支持深度通道合成和深度通道操作。因此,您在AR应用程序中使用的所有虚拟模型都只是使用以下公式通过Over合成操作放置于真实世界视频上:

Argb * Aa + Brgb * (1.0 – Aa)

//  where Argb is RGB of a foreground image
//  Aa is Alpha channel of a foreground image
//  Brgb is RGB of a background video
//  and 1.0 is a normalised value (in range 0.0...1.0)

//  (Argb * Aa) is a premultiplied RGBA image
//  (1.0 – Aa) is an inversion of a foreground alpha

然而,如果您在Unity中使用PTC Vuforia 9.0来处理Android设备,则可以获得遮挡管理(虚拟按钮示例)功能。或者,如果您使用iOS设备的ARKit 3.5或ARKit 4.0,则可以获得最广泛的工具包集,包括新的深度通道Depth API。 ARKit 4.0提供了一系列用于处理深度通道的工具包,包括People Occlusion,Face Occlusion和Object Occlusion特性。

这篇文章中,您可以阅读有关ARKit中Occlusion主要原则的介绍。


谢谢。我已经创建了Vuforia开发者账户。但是我无法登录以下载SDK。它提示错误,说输入的凭据与存储的数据不匹配。但我只输入了正确的凭据。 - raji
1
我该如何获取ARCore 1.18? - Ramón Wilhelm
目前最新版本为ARCore 1.20。但是您可以通过GitHub下载任何当前和以前的版本:https://github.com/google-ar/arcore-android-sdk/releases - Andy Jazz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接