LoginSignup
1
1

More than 3 years have passed since last update.

[ARKit]ARWorldMapを使った空間の保存と復元

Posted at

概要

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非対応なので配列として保存する)

ARWorldMap

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1