平台專屬指南
ARCore 中的 Augmented Images API 可讓您建構 AR 應用程式,偵測並在使用者環境中擴增 2D 圖片,例如海報或產品包裝。
您提供一組參考圖片。ARCore 會使用電腦視覺演算法,從每張圖片的灰階資訊中擷取特徵,並將這些特徵的表示法儲存在一或多個擴增圖像資料庫中。
在執行階段,ARCore 會在使用者環境中的平面上搜尋這些功能。這可讓 ARCore 偵測世界中的這些圖像,並在未提供位置資訊的情況下,估算圖像的位置、方向和大小。
功能
ARCore 最多可同時追蹤 20 張圖片。ARCore 不會同時偵測或追蹤相同圖片的多個例項。
每個擴增圖像資料庫最多可儲存 1,000 張參考圖片的資訊。資料庫數量沒有限制,但在任何特定時間內,只能有一個資料庫處於活動狀態。
您可以在執行階段將圖片新增至擴增圖片資料庫,每個資料庫最多可新增 1,000 張圖片。您可以使用網路連線下載先前建立的資料庫。
新增圖片時,您可以提供圖片的實際大小來進行偵測。這樣有助於提升圖片偵測效能。
如果未提供實體大小,ARCore 會估算大小,並隨著時間推移改進這項估算值。
如果提供實體大小,ARCore 會使用所提供的大小,並估算圖片的位置和方向,忽略表面或實際大小與所提供實體大小之間的任何差異。
ARCore 可回應及追蹤下列圖片:
固定在固定位置的圖片,例如掛在牆上的相片或放在桌上的雜誌
移動中的圖片,例如公車行駛時的廣告,或是使用者手持的平面物品上圖片,當使用者移動手部時,圖片也會跟著移動。
ARCore 開始追蹤圖片後,就會針對每個影格提供圖片位置和方向的預估值。隨著 ARCore 收集更多資料,這些預估值也會持續精進。
偵測到圖片後,即使使用者移動裝置,導致圖片暫時移出相機視野,ARCore 仍會繼續「追蹤」圖片的位置和方向。在這種情況下,ARCore 會假設圖片的位置和方向為靜態,且圖片本身不會在環境中移動。
所有追蹤作業都會在裝置上進行。偵測及追蹤圖片時,不需要連上網際網路。
需求條件
圖片必須:
至少填滿攝影機畫面的 25%,才能讓系統初步偵測到。
平整 (例如不皺褶或不纏繞在瓶子上)。
讓攝影機清楚拍到你的臉。且不得有任何遮蔽,且不得以極為斜角的角度觀看,或在相機因移動速度過快而產生模糊的情況下觀看。
CPU 使用率和效能注意事項
視已啟用的 ARCore 功能而定,啟用 Augmented Images 可能會增加 ARCore 的 CPU 使用率。在 AR 體驗不需要時,請考慮停用所有未使用的功能。這麼做可讓應用程式使用額外的 CPU 週期,並改善熱效能和電池續航力。
詳情請參閱效能注意事項。
最佳做法
選取參考圖片的訣竅
- 圖片解析度應至少為 300 x 300 像素。使用高解析度圖片不會提升成效。
- 您可以提供 PNG 或 JPEG 檔案格式的參考圖片。
- 不會使用顏色資訊。色彩和等效灰階圖片皆可用於做為參考圖片,或供使用者在執行階段使用。
- 請避免使用經過大量壓縮的圖片,因為這會干擾特徵擷取作業。
- 請避免使用含有大量幾何特徵或極少特徵的圖片 (例如條碼、QR code、標誌和其他線條圖),因為這會導致偵測和追蹤成效不佳。
- 避免使用具有重複圖案的圖片,因為這可能會導致偵測和追蹤問題。
使用 ARCore SDK 隨附的
arcoreimg
工具,為每張圖片取得0
和100
之間的品質分數。建議品質分數至少為 75。我們來看看下面兩個範例:圖片範例 1 圖片範例 2 分數: 0
分數: 100
包含重複的幾何圖形 解析度足夠;包含許多獨特功能
建立圖片資料庫的訣竅
- 使用 Android 適用的 arcoreimg 工具產生圖片資料庫檔案。這項工具僅適用於 Android 和 Android NDK 開發。此功能已內建於 Unity SDK 和 ARCore Unreal 外掛程式中。
- 資料庫會儲存從參照圖片中的灰階資料擷取的功能,以壓縮方式呈現。每個圖片項目會佔用約 6 KB 的空間。
- 在執行階段將圖片新增至資料庫,大約需要 30 毫秒。
- 在 worker 執行緒上新增圖片,避免阻斷 UI 執行緒。
- 或者,如果可以的話,請在編譯時使用 ARCore SDK 中提供的
arcoreimg
工具新增圖片。
- 如果您知道圖片的預期實際大小,請指定該大小。這項資訊可改善偵測和追蹤效能,特別是針對大型實體圖像 (超過 75 公分)。
- 請勿在資料庫中保留許多未使用的圖片,因為 CPU 使用率增加會對系統效能造成輕微影響。
追蹤功能最佳化訣竅
- 如果圖片不會從原始位置移動 (例如貼在牆上的海報),您可以將錨點附加到圖片,提高追蹤穩定性。
- 實體圖片必須佔據相機影像的至少 25%,才能進行初步偵測。您可以提示使用者將實體圖片放入相機畫面中。
- 請等到圖片的追蹤狀態為完整追蹤後,再使用圖片的姿勢和大小估計值。當 ARCore 初次偵測到圖片,但未指定預期的實際大小時,其追蹤狀態就會暫停。這表示 ARCore 已辨識圖片,但未收集足夠的資料,無法估算圖片在 3D 空間中的位置。