ARKit仅检测地板以放置物体

时间:2017-09-06 21:35:46

标签: ios arkit

在ARKit中,我可以使用hitTest:tapPoint types:ARHitTestResultTypeExistingPlaneUsingExtent

如果你想在上面放置物品,这是有效的。作为types:ARHitTestResultTypeExistingPlaneUsingExtent的表格仅检测检测到的平面范围内的命中。

如果你想把物品放在地板上,那就不那么有用了,因为你需要走动才能让ARKit在你的地板上放置(或扩展)很多飞机。

ARHitTestResultTypeExistingPlane解决了这个问题,因为您只需要检测到地板上的一小块地方,并且可以在任何地方放置物品。然而问题是,一旦ARKit检测到另一个与地板不对应的平面(例如桌子),每个物体都将被放置在更高的表面上。

是否可以控制哪个飞机用于最热门?

1 个答案:

答案 0 :(得分:2)

命中测试方法返回多个结果,按照距相机的距离排序。如果你在无限范围内对现有飞机进行测试,你应该在你描述的情况下看到至少两个结果:首先是桌子/桌子/等,然后是地板。

如果你特别想要发言,有几种方法可以找到它:

  • 如果您已经知道会话中较早的ARPlaneAnchor,请搜索anchor匹配的点击测试结果数组。

  • 假设地板始终是距离摄像机最远的平面(阵列中的最后一个)。在大多数情况下可能是一个安全的假设,但要注意阳台,genkan等。