Swift – ARMeshAnchor 到数据转换

Swift – ARMeshAnchor to Data conversion

在我的项目中,我试图将 ARMeshAnchor 存储到 UserdDefaluts 中,并将其转换为数据。我找不到解决方案。

这是我的错误之一 实例方法 encode(_:forKey:) 要求 ARMeshAnchor 符合 Encodable.

也许将它们转换为 SCNNode 并尝试将节点转换为数据更好?

谢谢

为此您应该使用 NSKeyedArchiver class 并且您的代码可能如下所示:

@IBOutlet var arView: ARView!

fileprivate func convertMeshAnchors() -> UserDefaults {

    guard let frame = arView.session.currentFrame else { return }
    let meshAnchors = frame.anchors.compactMap { [=10=] as? ARMeshAnchor }

    let data = try! NSKeyedArchiver.archivedData(withRootObject: meshAnchors,
                                          requiringSecureCoding: false)

    let savedAnchors = UserDefaults.standard
    savedAnchors.set(data, forKey: "MeshAnchors")
    savedAnchors.synchronize()

    return savedAnchors
}

记住在 RealityKit 中还有一个场景对象,锚点集合所在的位置:

arView.scene.anchors