ARKit4 Location Anchorsまとめ

drama
2020-07-16
drama
2020-07-16

はじめまして、dramaです。
AR系の投稿していきます。以後宜しくお願いします。

WWDC2020で、ARKit4が発表されました!


https://developer.apple.com/augmented-reality/arkit/
https://developer.apple.com/videos/play/wwdc2020/10611

ARKit4にはいくつかの新機能やアップデートが含まれていますが、

今回は主要機能の一つである「Location Anchors」について調査した結果をざっくりまとめます。
現在公開されているAPIはSwiftですが、処理フローや制約はUnityでも同じなので念頭に置いておくと良さそうです。

何が出来るか

これまでPokemonGOやドラクエウォークなど位置情報ベースのARアプリはよくありましたが、これに画像解析の結果を加えることで、より詳細に現実空間を認識します。

これにより誤差数メートルはあった位置情報ベースの表現を、誤差数センチ以内の細かい精度で可能です。
例:渋谷駅あたりにオブジェクトを表示させるのではなく、ハチ公の上に乗るように表示する。など

現実空間と仮想空間を合わせた表現が より高精度になるでしょう。

また、マップから仮想空間へもアクション可能なので、
地図上の地点に仮想の建物を配置する→その地点にいる人にはARで実際に見れる。というような表現も出来そうです。

どうやって使えるか


ARGeoTrackingConfiguration
を利用します。
モードを設定して起動するだけで使えます。従来のモード設定と同様です。 arView.session.run(ARGeoTrackingConfiguration())


ただし、利用するにはいくつかの制約があります。

制約

  1. A12 Bionic以上を搭載したデバイスであること

    APIで確認
    class var isSupported: Bool { get }

    if !ARGeoTrackingConfiguration.isSupported {
        //使えないデバイス用のエラー処理
    }

    ※必然的にiPhone XS以降の端末となるので、その他のデバイス条件は達成されます。

  2. 位置情報とネットワークが利用可能な環境であること

    APIで確認
    var state: ARGeoTrackingStatus.State { get }

    if geoTrackingStatus.state == .localized {
        // 使えます
    } else {
        // 使えません。使えない理由を確認出来ます。
        print(geoTrackingStatus.stateReason)
    }


  3. 特定の地域であること

    APIで確認
    class func checkAvailability(completionHandler: @escaping (Bool, Error?) -> Void)

    ARGeoTrackingConfiguration.checkAvailability { (available, error) in
        if !available {
            //使えない地域用のエラー処理
        }
    }

    ※2020年7月現在、対象は以下の地域のみです。気長に待ちましょう。
    ・San Francisco Bay Area
    ・New York
    ・Los Angeles
    ・Chicago
    ・Miami


  4. 同時に出来るのは、平面・画像・物体検知のみっぽいです。


    https://developer.apple.com/documentation/arkit/argeotrackingconfiguration

    モードとして設定するので、画像追跡や人物追跡(motionTracking)等の他モードと併用出来ません。
    光源反映やピープルオクルージョンとの併用は可能な気がします。


アプリへの導入時には、Anchorの設置やExport/Importが必要になるのですが、長いので今回は割愛します。

尚、Appleからサンプルが公開されてるので、
Developer Programに入っていればロケーションエラーが出るところまでは検証可能です。
https://developer.apple.com/documentation/arkit/tracking_geographic_locations_in_ar
※Xcodeで位置設定を変えればLocalize Errorまでは日本でも確認出来ます。

 

面白い機能なので、早く日本でも試したい!