概要
Worldmap情報を保存するとAR空間全体の状態を保存できる。
アプリ再起動後にオブジェクトを同じ位置に配置したい場合や複数端末で空間を共有したいときに便利
Worldmapのロード
let worldMap = try! NSKeyedUnarchiver.unarchivedObject(ofClass: ARWorldMap.self, from: data)
configuration.initialWorldMap = worldMap
Worldmapの保存
self.sceneView.session.getCurrentWorldMap(completionHandler: { (worldMap, error) in
guard let map = worldMap else {
return
}
let archived = try! NSKeyedArchiver.archivedData(withRootObject: map, requiringSecureCoding: true)
UserDefaults.standard.set(archived, forKey: self.worldMapKey)
})
オブジェクトの位置の復元
オブジェクトの復元はUserDefaultsに座標を保存しておき、rendererメソッドで描画を行う。
(SCNVector3はUserDefaults非対応なので配列として保存する)