swift - 如何使用 ARKit Swift 将对象附加到相机位置?

标签 swift xcode augmented-reality arkit

我有移动的物体,我希望这些物体能够与我的玩家发生碰撞。我有能力通过获取我当时的当前位置/方向来从我身上发射物体,但我不明白如何将一个物体附加到我身上,它会一直跟随我的定位。

最佳答案

在 SceneKit 中,所有可以在场景中占有一席之地的东西都是(附加到)一个节点。这不仅包括可见物体,还包括光源和相机。当您使用 ARSCNView 时,仍然有一个 SceneKit 相机,但 ARKit 控制它的位置/方向。

SceneKit 节点创建一个层次结构:每个节点的位置(和方向等)都是相对于其父节点的。如果父节点在场景中移动,其子节点也会随之移动,以便它们保持相同的父节点相对位置。因此,如果您希望某些内容始终保持相对于相机的相同位置,则应将该内容设为相机节点的子节点。

即使在您不自己创建相机的场景中——例如当 SceneKit 和 ARKit 为您管理相机时——您也可以使用 View 的 pointOfView 获取包含当前相机的节点。属性(property)。 (注意:ARSCNViewSCNView 的子类,其大部分有用的 API 由 SCNSceneRenderer 协议(protocol)定义。)

您可能必须等到 session 开始运行才能访问 ARKit 管理的相机节点。

关于swift - 如何使用 ARKit Swift 将对象附加到相机位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44531963/

相关文章:

swift - 如何处理 Swift 中一个键的两种可能类型的解码?

ios - 如何在用户不移动时自动暂停 GPS 跟踪器

ios - 如何在 SceneKit 的 sceneView 中正确地为阴影添加定向光?

c++ - 在 C 语言中为 ARToolKit 集成 C++ 库 - ARToolkit+

ios - API调用去哪个文件?

swift - 从 UITableViewCell 内的 tableView 中删除单元格

ios - XCode 项目中的文件安全性

ios - 代码签名错误 : a valid provisioning profile matching the application's Identifier 'program' could not be found

c++ - 如何将 C++ 头文件从静态库导入到 Obj-C 中?

augmented-reality - iOS 还原相机投影