WWDC Quick Look 💓 By SwiftGGTeam
Explore ARKit 5

Explore ARKit 5

元の動画を見る

ハイライト

ARKit 5 は、位置アンカーのサポート領域を拡張し、App Clip Code トラッキングを追加し、iPad Pro の超広角フロント カメラの顔トラッキングをサポートし、モーション キャプチャの精度と距離範囲を向上させます。

主な内容

ロケーションアンカー: 屋内から屋外へ

01:31

ARKit 4 で導入されたロケーション アンカーを使用すると、AR コンテンツを現実世界の緯度と経度の座標にバインドできます。これは屋内 AR ではすでにうまく機能していますが、屋外シーンで真価を発揮します。ScavengAR アプリはこれを使用して仮想パブリック アート インスタレーションを作成し、iOS 15 マップ アプリもこれを使用して AR ウォーキング ナビゲーションを実装します。

今年、Location Anchor のサポートエリアは米国の 5 都市圏から 25 都市以上に拡大し、初めて米国外の都市であるロンドンが追加されました。サポート対象地域外にいる開発者のために、ARKit は記録および再生機能を提供します。 Reality Composer を使用して屋外でシーン データを記録し、それを Xcode で再生してデバッグできます。

ユーザーをガイドして測位を完了する: GeoTracking Coaching Overlay

05:06

ロケーション アンカーでは、位置決めを完了するために、デバイスが屋外の建物のファサードをスキャンする必要があります。この過程では、ユーザーは操作方法がわからず、すぐに諦めてしまいます。

ARKit 5の新機能.geoTrackingターゲットを絞ったARCoachingOverlayView、ユーザーがデバイスを建物に向けるようガイドするアニメーションが表示されます。この UI は地図アプリケーションのガイダンス インターフェイスと一致しており、ユーザーはすでに認知基盤を持っています。開発者は設定するだけで済みますgoal: .geoTrackingを有効にすることができます。

App Clip コード: AR コンテンツへの正確なエントリ ポイント

09:10

App Clip Codeは昨年App Clipとともにリリースされ、ユーザーはコードをスキャンすることで軽量アプリケーションを起動できるようになった。今年の ARKit 5 には、App Clip コードを追跡する機能が追加されました。

ARAppClipCodeAnchor3 つの主要な属性が含まれます: 埋め込み URL、デコード ステータス (.decoding / .decoded / .failed)と庭の物理的な半径。URL のデコードには時間がかかりますが、開発者はデコード プロセス中にプレースホルダー コンテンツを表示して、ユーザーに即座にフィードバックを提供できます。

Primer アプリは実際の使用法を示しています。ユーザーがタイル サンプルの App Clip コードをスキャンすると、App Clip が起動して、完全なアプリをダウンロードすることなく、タイルの AR 効果を壁に直接プレビューできます。

顔追跡: 超広角ビュー

17:29

新しいiPad Proには、通常の前面カメラよりもはるかに広い視野を持つ超広角前面カメラが搭載されています。ARKit 5 はこのカメラで顔追跡をサポートしていますが、開発者はそれを積極的に選択する必要があります。

横断することでsupportedVideoFormats、診るcaptureDeviceTypeそうですか.builtInUltraWideCameraをクリックし、選択した形式を次のように設定します。ARFaceTrackingConfigurationそれを有効にするために。超広角カメラは深度データを提供しないことに注意してください。capturedDepthData空になります。

モーション キャプチャ: 長距離と可動範囲の拡大

18:59

iPhone 12 などの A14 チップ デバイスでは、ARKit 5 のモーション キャプチャは、より広範囲の体のポーズをサポートします。回転精度が高く、スポーツアクションの追従に適しています。カメラはより遠くから体の関節を追跡できるようになり、四肢の活動の追跡範囲も大幅に拡大しました。これらの改善にはコードの変更は必要なく、iOS 15 上のすべてのモーション キャプチャ アプリが自動的に恩恵を受けます。

##詳細

ロケーションアンカーのサポートを確認し、GeoTracking セッションを作成します

import ARKit
import CoreLocation

func startGeoTrackingSession() {
    // 检查设备是否支持
    guard ARGeoTrackingConfiguration.isSupported else {
        print("Geo tracking requires A12+ with cellular and GPS")
        return
    }

    // 检查当前位置是否可用
    ARGeoTrackingConfiguration.checkAvailability { available, error in
        guard available else {
            print("Geo tracking not available at this location")
            return
        }

        let configuration = ARGeoTrackingConfiguration()
        let session = ARSession()
        session.delegate = self
        session.run(configuration)
    }
}

// 添加位置锚点
func addGeoAnchor(at coordinate: CLLocationCoordinate2D, altitude: CLLocationDistance? = nil) {
    let geoAnchor: ARGeoAnchor
    if let altitude = altitude {
        geoAnchor = ARGeoAnchor(coordinate: coordinate, altitude: altitude)
    } else {
        geoAnchor = ARGeoAnchor(coordinate: coordinate)
    }
    session.add(anchor: geoAnchor)
}

キーポイント:

  • ARGeoTrackingConfiguration.isSupportedデバイスのハードウェア状態を確認します (A12+、セルラー ネットワーク、GPS)
  • checkAvailability現在の地理的位置がサポートされているエリア内にあるかどうかを非同期的にチェックします
  • ARGeoAnchor緯度と経度を使用して作成することも、高度を追加で指定することもできます
  • アンカー ポイントを追加する場合、より正確な高度データを取得するには、デバイスがターゲットの場所から 50 メートル以内にある必要があります。

GeoTracking コーチング オーバーレイを使用する

import ARKit
import UIKit

class ViewController: UIViewController, ARSessionDelegate {
    @IBOutlet var arView: ARView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let coachingOverlay = ARCoachingOverlayView()
        coachingOverlay.session = arView.session
        coachingOverlay.goal = .geoTracking
        coachingOverlay.translatesAutoresizingMaskIntoConstraints = false
        arView.addSubview(coachingOverlay)

        NSLayoutConstraint.activate([
            coachingOverlay.leadingAnchor.constraint(equalTo: arView.leadingAnchor),
            coachingOverlay.trailingAnchor.constraint(equalTo: arView.trailingAnchor),
            coachingOverlay.topAnchor.constraint(equalTo: arView.topAnchor),
            coachingOverlay.bottomAnchor.constraint(equalTo: arView.bottomAnchor)
        ])
    }
}

キーポイント:

  • ARCoachingOverlayViewgoalに設定.geoTrackingアンカーポイントの位置にガイド付きアニメーションが表示されます
  • 起動が完了すると、オーバーレイが自動的に消え、アプリケーションは AR コンテンツの配置を開始できるようになります
  • 同時に監視することをお勧めしますsession(_:didChange:)地理追跡ステータスを入力して、より詳細な位置情報を取得します

アプリクリップコードの追跡

import ARKit

class ViewController: UIViewController, ARSessionDelegate {
    var session: ARSession!

    func startAppClipCodeTracking() {
        guard ARAppClipCodeAnchor.isSupported else {
            print("App Clip Code tracking requires A12+")
            return
        }

        let configuration = ARWorldTrackingConfiguration()
        configuration.appClipCodeTrackingEnabled = true
        session.run(configuration)
    }

    func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
        for anchor in anchors.compactMap({ $0 as? ARAppClipCodeAnchor }) {
            switch anchor.urlDecodingState {
            case .decoding:
                // 显示占位内容,提示用户正在解码
                showPlaceholder(at: anchor)
            case .decoded:
                // URL 解码成功,加载对应内容
                if let url = anchor.url {
                    loadContent(for: url, at: anchor)
                }
            case .failed:
                // 解码失败,提示用户
                showDecodingError(at: anchor)
            @unknown default:
                break
            }
        }
    }
}

キーポイント:

  • ARAppClipCodeAnchor.isSupportedデバイスがサポートしているかどうかを確認します (A12+)
  • appClipCodeTrackingEnabled構成で明示的に有効にする必要があります
  • デコード状態には 3 つあります。.decoding(デコード)、.decoded(成功)、.failed(失敗)
  • anchor.radiusコンテンツを正確に配置するために使用できる、コードの物理的な半径を提供します。

iPad Pro の超広角顔追跡を有効にする

import ARKit

func enableUltraWideFaceTracking() -> ARFaceTrackingConfiguration? {
    guard ARFaceTrackingConfiguration.isSupported else { return nil }

    let configuration = ARFaceTrackingConfiguration()

    // 查找超广角摄像头格式
    for format in ARFaceTrackingConfiguration.supportedVideoFormats {
        if format.captureDeviceType == .builtInUltraWideCamera {
            configuration.videoFormat = format
            break
        }
    }

    return configuration
}

キーポイント:

  • 超広角フォーマットにはアクティブなトラバーサルが必要ですsupportedVideoFormats探す
  • 設定videoFormat後でセッションを実行して、超広角の顔追跡を有効にします
  • 超広角モードには深度データがなく、深度データに依存する機能は通常のフロントカメラにフォールバックする必要があります。

重要ポイント

  1. やるべきこと: 都市の観光スポットやビジネス街で位置ベースの AR ツアーを展開する 実行する価値がある理由: ロケーション アンカーを使用すると、AR コンテンツを実際の地理座標に正確にバインドできるようになり、ユーザーが特定の場所に歩くとコンテンツが自動的にトリガーされます。 開始方法: を使用しますARGeoTrackingConfigurationセッションを作成するにはARGeoAnchorダミーコンテンツをターゲットの場所に配置する

  2. やるべきこと: App Clip コードを小売製品に追加し、コードをスキャンして AR 効果を実現します。 価値がある理由: ユーザーは完全なアプリをダウンロードする必要はありません。QR コードをスキャンするだけで、家具、タイル、装飾が自分の空間でどのように見えるかをプレビューできます。 開始方法: 製品パッケージに App Clip コードを印刷し、App Clip で有効にしますappClipCodeTrackingEnabled、スキャン後に対応する 3D モデルをロードします。

  3. やるべきこと: ユーザーの動きをリアルタイムで評価するダンスまたはフィットネス指導アプリを開発します。 実行する価値がある理由: ARKit 5 のモーション キャプチャは、より長い距離とより広い範囲の動作をサポートしており、家庭でのフィットネス シナリオに適しています。 開始方法: を使用しますARBodyTrackingConfiguration、からARFrameから抽出されたskeleton3D、関節角度を計算し、標準的な動きと比較します。

  4. やるべきこと: iPad Pro でマルチプレイヤー AR マスクまたは絵文字アプリを構築する 価値がある理由: 超広角のフロント カメラは、より多くの人の顔を表示できるため、複数人の対話シーンに適しています。 開始方法: 選択してください.builtInUltraWideCamera検出されたそれぞれの顔追跡を有効にするフォーマットARFaceAnchorオーバーレイ仮想コンテンツ

関連セッション

コメント

GitHub Issues · utterances