プラットフォーム固有のガイド
Android(Kotlin/Java)
Android NDK(C)
Unity(AR Foundation)
Unreal Engine

拡張現実(AR)エクスペリエンスのほとんどは「リアルタイム」です。ユーザーは、特定の場所で特定の時間に、スマートフォンを特別な AR モードに設定し、AR アプリを開く必要があります。たとえば、AR ソファがリビングルームでどのように見えるかを確認したい場合、ユーザーは実際に部屋にいる間に、画面上の環境にソファを「配置」する必要があります。
Recording and Playback API はこの「リアルタイム」の要件をなくし、いつでもどこでも視聴できる AR 体験を作成できるようにします。Recording API は、カメラの動画ストリーム、IMU データ、または保存するよう選択したその他のカスタム メタデータを MP4 ファイルに保存します。録画した動画を Playback API 経由で ARCore に渡すと、ARCore は MP4 をライブ セッション フィードとして扱います。ライブ カメラ セッションは引き続き使用できますが、この新しい API を使用すると、AR アプリケーションでライブ セッションの代わりに録画済みの MP4 を使用できます。

エンドユーザーもこの機能を利用できます。現実世界でどこにいても、Recording and Playback API で録画した動画をネイティブ ギャラリーから呼び出して、AR オブジェクト、エフェクト、フィルタを編集したり再生したりできます。この機能により、ユーザーは通勤中の電車の中や、ベッドでくつろぎながら AR ショッピングを楽しめます。
Recording and Playback API を使用した開発のユースケース
Recording and Playback API を使用すると、AR アプリの構築における時間と空間の制約がなくなります。以下に、独自のプロジェクトでこの機能を使用する方法をいくつかご紹介します。
一度録画すれば、どこでもテスト可能
AR 機能をテストする必要があるたびに実際にその場所に行くのではなく、Recording API を使用して動画を録画し、互換性のあるデバイスで再生できます。ショッピング モールでエクスペリエンスを構築する場合変更をテストするたびに、このページにアクセスする必要はありません。一度訪問を記録するだけで、デスクに座ったまま繰り返し開発できます。
イテレーション時間を短縮する
サポートする Android デバイスごと、テストするシナリオごとに動画を録画するのではなく、動画を 1 回録画して、イテレーション フェーズで複数の異なるデバイスで再生できます。
開発チーム全体で手動テストの負担を軽減する
新しい機能ごとにカスタム データセットを作成するのではなく、ARCore の深度や最新のトラッキングの改善を取り入れた新機能をリリースする際に、事前に録画されたデータセットを活用します。
デバイスの互換性
Recording と Playback API でデータを記録するには ARCore が必要ですが、再生には必要ありません。この機能を使用して録画された MP4 は、基本的に、任意の動画プレーヤーで視聴できる追加データを含む動画ファイルです。これらのファイルは、Android の ExoPlayer、または MP4 のデマルチプレックスと ARCore によって追加された追加データの管理の両方に対応するプレーヤーで検査できます。
再生用の動画データと AR データの記録方法
ARCore は、録画されたセッションを対象デバイスの MP4 ファイルに保存します。これらのファイルには、複数の動画トラックとその他のさまざまなデータが含まれています。セッションを保存したら、ライブカメラ セッションの代わりにこのデータを使用するようにアプリを設定できます。
録音の内容
ARCore は、次のデータを H.264 動画でキャプチャします。トラックの切り替えが可能な MP4 対応の動画プレーヤーであれば、どれでもアクセスできます。高解像度のトラックがリストの先頭にあるのは、MP4 互換の動画プレーヤーの中には、再生する動画トラックを選択できないため、リストの先頭のトラックを自動的に再生するものがあるためです。
プライマリ動画トラック(CPU 画像トラック)
メインの動画ファイルには、後で再生するための環境またはシーンが記録されます。デフォルトでは、ARCore はモーション トラッキングに使用される 640x480(VGA)CPU 画像をプライマリ動画ストリームとして記録します。
ARCore は、パススルー カメラ画像として画面にレンダリングされる(高解像度の)GPU テクスチャをキャプチャしません。
再生中に高解像度の画像ストリームを利用できるようにするには、目的の解像度の CPU 画像を提供する カメラを構成する必要があります。この例の場合は、次のようになります。
- ARCore は、モーション トラッキングに必要な 640x480(VGA)CPU 画像と、構成されたカメラ設定で指定された高解像度 CPU 画像の両方をリクエストします。
- 2 つ目の CPU 画像ストリームをキャプチャすると、アプリのパフォーマンスに影響する可能性があります。影響の程度はデバイスによって異なります。
- 再生中、ARCore は、録画中にキャプチャされた高解像度の CPU 画像を再生中の GPU テクスチャとして使用します。
- 高解像度の CPU 画像が MP4 録画のデフォルトの動画ストリームになります。
録画中に選択されたカメラ構成によって、録画内の CPU 画像とプライマリ動画ストリームが決まります。高解像度の CPU 画像を含むカメラ設定を選択しない場合、この動画はファイルの最初のトラックとなり、どの動画プレーヤーを使用してもデフォルトで再生されます。
カメラの深度マップの可視化
これは、デバイスのハードウェア深度センサー(飛行時間センサー(ToF センサー)など)から記録され、RGB チャンネル値に変換された、カメラの深度マップを表す動画ファイルです。この動画はプレビュー目的でのみ使用してください。
API 呼び出しイベント
ARCore は、デバイスのジャイロメーターと加速度計センサーから測定値を記録します。また、他のデータも記録されます。その中には機密情報が含まれる可能性もあります。
- データセット形式のバージョン
- ARCore SDK のバージョン
- Google Play 開発者サービス(AR)のバージョン
- デバイスのフィンガープリント(
adb shell getprop ro.build.fingerprintの出力) - AR トラッキングに使用されるセンサーに関する追加情報
- ARCore Geospatial API を使用する場合、デバイスの推定位置、磁力計の読み取り値、コンパスの読み取り値