魅力的な AR ユーザー エクスペリエンスを作成するには、AR 対応アプリが適切に動作することが重要です。
アプリが以下のようになるようにしてください。
- タップ操作やデバイスの動きなどのユーザー入力に反応している。
- 妥当で一貫したフレームレートでレンダリングされます。ユーザーは一般的に、変動的で高いフレームレートよりも、安定して低いフレームレートを好みます。
- バッテリーの消耗を最小限に抑え、ユーザーが 1 日を通じてデバイスを他のタスクに使用したり、AR エクスペリエンスをより長く利用したりできるようにします。
- AR 生成のコンテンツが環境に対して安定して表示され、現実的に環境に溶け込んでいる魅力的な AR エクスペリエンスを構築します。
パフォーマンスに関するベスト プラクティス
より魅力的な AR エクスペリエンスを作成するには、次のベスト プラクティスを念頭に置いて設計します。
アンカーを使用してトラッキング パフォーマンスを高める
ワールド空間座標を使用して 3D コンテンツを配置することは可能ですが、可能な限りアンカーを使用してください。基となるワールド空間の座標が変更され、ARCore がワールドの認識を更新するたびにアンカーが変化しても、ARCore はワールドに対して安定したアンカーが表示されるようにします。
アンカーにアタッチされていない仮想オブジェクトは、ジャンプしているように見えることがあり、環境に対して安定しているように見えません。これにより、ユーザーにとっての AR エクスペリエンスの魅力が低下する可能性があります。
デバイス固有のパフォーマンス特性を考慮する
ARCore 対応デバイスは、さまざまなハードウェア特性とパフォーマンス特性に対応しています。デバイスのパフォーマンスは以下の理由で変動します。
- デバイスの CPU/GPU、クロック速度
- 利用可能なメモリと帯域幅
- カメラ/IMU センサーの品質
- その他のハードウェアの違い
- オペレーティング システムとデバイス ドライバ
ユーザーが使用する代表的なデバイスである、さまざまなクラスのデバイスでアプリをテストすることをおすすめします。
CPU 使用率の高い機能は、使用していないときは無効にする
特定の ARCore 機能を有効にすると、CPU 使用率が増加します。AR エクスペリエンスでこの機能を必要としない場合は、無効にすることを検討してください。これにより、アプリで使用できる CPU サイクルが増え、温度のパフォーマンスとバッテリー寿命が改善されます。
現在、現在のセッションで Instant Placement または Augmented Images を有効にすると、ARCore の CPU 使用率が増加します。CPU 使用率の効率を高めるには、次のガイドラインに従ってください。
完全なトラッキングが確立されたら、Instant Placement を無効にする必要があります。この機能はセッション構成で無効にできます。
AR エクスペリエンスにこの機能が不要な場合は、Augmented Images を無効にする必要があります。拡張イメージを無効にするには、セッション構成で
null
または空の拡張イメージ データベースを構成します。
デバイスの温度をモニタリングする
開発と QA テストでは、Android の Thermal API を使用して、デバイス上のアプリのパフォーマンスをモニタリング、追跡できます。
必ずアプリの製品版ビルドを使用してください(ランタイム パフォーマンスの特性が異なる可能性のあるアプリの development や qa ビルドは使用しないでください。
PowerManager#getCurrentThermalStatus()
(API レベル 29)PowerManager#getThermalHeadroom(int)
(API レベル 30)
ARCore の CPU 不足を特定する
ARCore セッションがアクティブな場合、アプリは限られたモバイル CPU リソースと GPU リソースを ARCore と共有する必要があります。CPU にバインドされたアプリは、モーション トラッキングに必要な CPU リソースと競合する可能性があります。
ARCore の ローカライズとマッピングの同時 (SLAM)が正常に動作していることを検証するには、「VIO 周波数が低い」というメッセージがデバイスのログではない<br class="
adb logcat | grep 'VIO frequency low'
ARCore の CPU 不足を回避する
ARCore セッションがアクティブな場合、アプリは制限されたモバイル CPU および GPU リソースのデバイスを ARCore と共有する必要があります。CPU にバインドされたアプリは、モーション トラッキングに必要な CPU リソースと競合する可能性があります。
拡張画像データベースを事前に作成する
可能であれば、開発時に拡張イメージ データベースを事前に作成します。拡張イメージ データベースを実行時に作成する必要がある場合や、既存のデータベースに画像を動的に追加する必要がある場合は、必ずバックグラウンド スレッドで画像を追加して、メイン UI スレッドがブロックされないようにしてください。
リクエストするカメラ ストリームの数を制限する
Java 共有カメラを使用する場合、アプリは追加の CPU または GPU 画像ストリームをリクエストできます。