首页 文章

ARKit仅检测地板以放置物体

提问于
浏览
2

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

如果您想要将对象放在例如作为 types:ARHitTestResultTypeExistingPlaneUsingExtent 的表格仅检测检测到的平面范围内的命中 .

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

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

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

1 回答

  • 2

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

    如果您特别想要发言权,可以通过以下几种方式找到它:

    • 如果您已经知道哪个 ARPlaneAnchor 是您会话中较早的楼层,请搜索匹配测试结果数组anchor匹配的结果 .

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

相关问题