如何使用Unity和ARCore围绕现实世界对象(如瓶子)生成表面/平面?

时间:2019-08-22 10:55:18

标签: unity3d arcore

我使用HelloAR场景(ARcore软件包随附)构建了一个apk。该应用仅检测像桌子这样的水平面,并在其上创建自己的半透明平面。当我将手机绕着瓶子移动时,该应用程序再次创建了一个横切瓶子的水平平面。我希望ARCore在移动手机时会沿着瓶子创建平面,就像网格中的多边形一样。

另一种情况是,我在地板上放了两本书,每本书的厚度都不同。但是,HelloAR应用仅在较厚的书上创建一个半透明的水平表面,而不是创建两个表面(每本书一个)。

这是怎么回事?如何解决它并使HelloAR应用更精确地工作?请帮忙。

软件:Unity v2018.2,
       ARcore v1.11.0

2 个答案:

答案 0 :(得分:0)

ARCore通过设备的轻柔移动来生成近似point cloud来识别特征点,这些点是通过不同形状的对比来检测的,如果您在测试模式下统一使用应用程序,则可以看到这些点将放置在您的空白场景中。

一旦程序在"same height"处有足够的点(我不知道确切的精度),它将生成您可以看到的平面,但是不会检测到相隔5cm或甚至更多的距离。

如果您想知道该应用程序的大致准确性,请统一测试它,并制作一个脚本以捕获用于生成平面的生成点,然后检查Y difference以查看哪个是公差距离。

答案 1 :(得分:0)

好的,Vuforia当前是增强现实的领先SDK之一,提供了广泛的检测选项(图像,地面,点,3D对象等)

因此,关于您有关检测瓶子的问题,我肯定会使用3D模型检测功能。您可以阅读官方文档here。 您首先需要在3d建模软件中生成对象的近似值,然后使用其程序生成检测模型。然后将其放入Unity并设置检测。 (无需编码)

我对这种检测有一些经验。我用它来检测电动汽车的大型2mx2m比例模型。它的效果很好,您可以在它周围走动,并不断跟踪它。您可以看到简短的官方演示here

希望它有助于简短地解释这一点!