#swift #augmented-reality #scenekit #arkit #realitykit
#swift #дополненная реальность #scenekit #arkit #realitykit
Вопрос:
В моем проекте я пытаюсь сохранить ARMeshAnchor в UserdDefaluts, преобразуя его в данные. Я не могу найти решение.
Это один из моих ошибок Метод экземпляра encode(_:forKey:)
требует, чтобы ARMeshAnchor
соответствовать Encodable
.
Может быть, лучше преобразовать их в SCNNode и попытаться преобразовать узел в данные?
Спасибо
Ответ №1:
Для этого вы должны использовать NSKeyedArchiver
class, и ваш код может выглядеть следующим образом:
@IBOutlet var arView: ARView!
fileprivate func convertMeshAnchors() -> UserDefaults {
guard let frame = arView.session.currentFrame else { return }
let meshAnchors = frame.anchors.compactMap { $0 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
Комментарии:
1. Я думаю, что
requiringSecureCoding
этот параметр также должен бытьfalse
связан сARAnchor.supportsSecureCoding
возвратамиfalse
.