ARCoachingOverlayViewでユーザーにデバイスをうごかしてもらって、ARKitに世界情報をあたえる


ARKitがWorldTrackingを確立するには、デバイスを動かして、ARKitに視点を与える必要があります。

ARCoachingOverlayViewでユーザーにガイダンスを出して、デバイスをうごかしてもらいます。

1、ARCoachingOverlayViewを初期化します。

let coachingOverlay = ARCoachingOverlayView()

ARCoachingOverlayViewの設定

coachingOverlay.goal = .anyPlane //情報を取る目標設定
// 可能な値
    case anyPlane
    case horizontalPlane
    case tracking
    case verticalPlane

coachingOverlay.activatesAutomatically = true //Tracking状態が不十分になると、再度コーチングするか

// セッションとデリゲートを設定
coachingOverlay.session = sceneView.session
coachingOverlay.delegate = self

// Viewとして扱う
coachingOverlay.frame = sceneView.bounds
sceneView.addSubview(coachingOverlay)

2、ARCoachingOverlayViewDelegateを設定

コーチングの状態によって呼ばれるDelegate functionは以下

func coachingOverlayViewWillActivate(_ coachingOverlayView: ARCoachingOverlayView) {
    // コーチングが表示される前に呼ばれる。ここでコーチング中操作できないButtonなどを非表示にする。
}

func coachingOverlayViewDidDeactivate(_ coachingOverlayView: ARCoachingOverlayView) {
    // コーチングが終了したあとに呼ばれる。ここでコーチング中操作できないButtonなどを再表示する。

}

これでARSessionをrunすると動くはずです。
必要な情報が得られたら、コーチングは消えます。
このステップをやったほうが、正確なワールドトラッキングが得られます。


Core MLを使ったアプリを作っています。
機械学習関連の情報を発信しています。

Twitter
MLBoysチャンネル
Medium

相棒
note