首页 > 解决方案 > ARKIT 根据物理对象改变节点位置

问题描述

我正在尝试相对于面部移动节点,因此如果用户面部向右移动,菱形应该向右移动完全相同的 x。我使用ARFaceTrackingConfiguration完美地完成了它。但是,如果 iPhone 和面部之间的距离很大,则渲染器委托方法不再触发。

所以我猜 ARFaceTrackingConfiguration 不适合长距离使用,因为它使用的深度传感器显然不支持。

所以我的问题是,ARKit 是否支持添加相对于物理对象的节点,并且当这个对象移动时,它会用这个对象的位置更新我,以便我可以更新节点?

标签: iosswiftarkit

解决方案


你似乎已经回答了你自己的问题。

是的,使用 ARKit(以及您选择的场景图/渲染器 API,例如 SceneKit),您可以放置​​虚拟内容,使其与跟踪的面部一起移动。在ARSCNView中,您需要做的就是将该内容分配为您从中获取的节点的子节点renderer(_:didAdd:for:)——只要 ARKit 报告面部已移动,SceneKit 就会自动处理节点的移动。

如果 ARKit 无法跟踪面部,因为它超出了原深感摄像头的可用范围……那么它就没有跟踪面部。(欢迎来到重言式俱乐部。)这意味着它不知道脸部在哪里,无法告诉您脸部是如何移动的,因此无法自动移动虚拟内容以跟随脸部。


推荐阅读