答案 0 :(得分:3)
@John Scalo是对的,你的问题不是首先检测一个平面,而是你的渲染引擎不知道绿框框的那部分是遮挡(隐藏)通过现实世界的对象。
“......以某种方式克服了这个”
是的,通过这样做,您可能会“解决”原始问题 - 帮助某人了解项目的维度。
(取决于您选择的渲染引擎,例如SceneKit)您可以添加一个与真实世界对象具有相同尺寸的不可见3D对象;因此渲染引擎将“知道”框架的某些部分位于此(对于用户不可见)3D对象的后面。因此,你可以告诉它不要绘制你的框架的那些部分,这将给出幻觉(从这里借用苹果),你的汽水可以有它周围的盒子。
这些变通办法是不准确的,但也许它们的准确性足以达到你想要达到的现实水平:
选项1:1。检测到桌面后,在汽水罐上放置一个半透明的3D物体,然后调整尺寸(您选择的手势/按钮),直到它与汽水罐的尺寸有关。 2.确认你已经完成了,只是不要在它上面画一个纹理,只是让它遮挡绿框框。
选项2:将您的设备靠近汽水罐的边缘并添加“足够的”ARAnchor
以便能够创建“再次”可以用于捕获真实的单词对象并遮挡它。
选项3 :(激烈,也许最不准确)用手指从各个角度“刷”对象,并在每次触摸时执行命中测试(希望顶部/最近的命中是一部分)你的汽水罐)并以这种方式建立一个“边界形状”。
选项X:1 - 2 - 3的任意组合。
祝你好运,有很多人试图在这个时候解决这个设备/ ARKit限制,所以请留意你的好主意。
答案 1 :(得分:0)
您正在处理的问题称为遮挡,而ARKit(当前?)包括遮挡支持。也许有一天iPhone和iPad将开始随LIDAR(或类似)一起发售,在这种情况下,ARKit将能够检测场景中的物体,使遮挡更加容易。