為了打造引人入勝的 AR 使用者體驗,支援 AR 的應用程式必須能發揮良好效能。
請確保應用程式符合以下條件:
- 對使用者輸入內容做出反應,包括觸控手勢和裝置動作。
- 以合理且一致的影格速率轉譯。使用者通常較喜歡採用一致且低於影格速率的一致畫面更新率。
- 可以大幅降低電池耗電量、讓使用者在一天當中使用裝置處理其他工作,或是延長 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
或空白的擴增圖片資料庫。
監控裝置溫度
在開發和品質確保測試期間,您可以使用 Android 的熱能 API 監控及追蹤應用程式在裝置上的效能。
請務必使用應用程式的「正式版」版本,而非應用程式的「開發」或「qa」版本,因為該版本可能有不同的執行階段效能特性。
PowerManager#getCurrentThermalStatus()
(API 級別 29)PowerManager#getThermalHeadroom(int)
(API 級別 30)
找出 ARCore CPU 飢餓
ARCore 工作階段啟用時,應用程式必須與 ARCore 共用有限的行動 CPU 和 GPU 資源。受 CPU 限制的應用程式可以與動作追蹤所需的 CPU 資源競爭。
如要驗證 ARCore 的同時本地化和對應 (SLAM) 是否能正常執行,請確認 Android 裝置記錄中是否「沒有」顯示「VIO 頻率偏低」訊息:
adb logcat | grep 'VIO frequency low'
避免 ARCore CPU 過精簡
ARCore 工作階段啟用時,應用程式必須與 ARCore 共用有限的行動 CPU 和 GPU 資源裝置。受 CPU 限制的應用程式可以與動作追蹤所需的 CPU 資源競爭。
預先建立擴增圖片資料庫
在開發階段,請盡可能預先建立擴增圖片資料庫。 如果您必須在執行階段建立擴增圖片資料庫,或以動態方式將圖片新增至現有的資料庫,請務必在背景執行緒中加入圖片,以免封鎖主 UI 執行緒。
限制要求的攝影機串流數量
使用 Java 共用相機時,應用程式可以要求額外的 CPU 或 GPU 圖片串流。