ARKit和Unity - 如何检测相机中真实世界物体击中AR对象的行为?

问题描述:

想想现实生活中的某人挥挥手并在AR中击中3D对象,我会如何检测到它?我基本上想知道什么时候某个东西穿过了AR对象,所以我可以知道某些东西“击中”它并作出反应。ARKit和Unity - 如何检测相机中真实世界物体击中AR对象的行为?

另一个例子是在桌子上放一个虚拟瓶子,然后在瓶子里的空气中挥动你的手,然后它会被撞倒。

可以这样做吗?如果是这样如何?我更喜欢统一的帮助,但如果这只能通过Xcode和ARKit本地完成,那么我也会接受。

+1

从技术上讲,这是可能的,但是你需要一些检测现实世界“对象”的方式来识别和应用对撞机。这并不容易。 https://xkcd.com/1425/我所知道的唯一可以远程执行任何操作的系统是HoloLens及其空间映射软件。然而,它在现实世界中的更新速度非常慢(任何给定的8厘米立方体都会每5分钟重新检查一次,大约)。 – Draco18s

+0

@ Draco18s无赖。我受到营销宣传的印象,ARKit应该为AR解决大量问题,并使其能够轻松应对。从我现在正在收集的内容来看,我正在玩这个游戏,看起来真的是为你侦测飞机。 Vuforia似乎做得更多。 – SolidSnake4444

+0

我对ARKit并不熟悉,但我过去曾使用Vuroria。对不起,我没有解决方案。 – Draco18s

ARKit 确实解决了大量与AR有关的问题,使他们轻而易举合作。你的问题不只是其中之一。 As @ Draco18s指出(并且强调与xkcd链接很好),你可能在不知不觉中步入了多毛的计算机视觉问题领域。不过,您可以使用一些构建块:ARKit为每个视频帧提供像素缓冲区,并且需要投影矩阵来确定您的虚拟水瓶覆盖了哪部分2D图像。

因此,决定何时翻转水瓶是分析图像区域内随时间的帧与帧之间差异的问题。 (并且跟踪该区域相对于整个相机图像的移动,因为用户可能还没有完全保持该装置)。所需的分析量取决于您想要的效果的复杂程度...简单的像素差异可能工作(为“工作”一些价值),或者有可能是现有的机器学习模型,你可以用视觉和Core ML放在一起......

你应该ManoMotion看一看:https://www.manomotion.com/ 他们工作在这个问题上,并假设很快就会以图书馆的形式发布解决方案。