深度增加寫實主義

平台專屬指南

身為擴增實境應用程式開發人員,您希望為使用者提供虛擬與現實的完美結合體驗。使用者在場景中放置虛擬物體時,希望這些物體看起來像是真實世界中的物品。如果您要為使用者打造家具購物應用程式,就應讓他們確信自己購買的扶手椅能放入家中空間。

Depth API 可協助裝置的相機瞭解場景中真實物體的大小和形狀。它會建立深度圖片或深度地圖,為應用程式增添一層真實感。您可以使用深度圖像提供的資訊,打造身歷其境的逼真使用者體驗。

使用 Depth API 開發的用途

Depth API 可提供遮蔽物、提升沉浸感,以及新穎互動功能,讓擴增實境體驗更逼真。以下是您可以在專案中使用的幾種方式。如要瞭解 Depth 的實際運作情形,請探索 ARCore Depth Lab 中的範例場景,瞭解存取深度資料的不同方式。這個 Unity 應用程式是 GitHub 上的開放原始碼。

啟用遮蔽功能

遮蔽,也就是在現實世界物體後方準確算繪虛擬物體,是打造身歷其境 AR 體驗的關鍵。舉例來說,假設使用者想將虛擬 Andy 放入場景,而場景中含有門旁的後車廂。在沒有遮蔽的情況下算繪,Andy 會與樹幹邊緣重疊,看起來不自然。如果您使用場景的深度,並瞭解虛擬 Andy 相對於木箱樹幹等周遭物體的距離,就能準確算出 Andy 的遮蔽率,讓 Andy 在周遭環境中看起來更逼真。

轉換場景

您可以透過算繪虛擬雪花,讓雪花落在沙發扶手和枕頭上,或是讓客廳瀰漫著薄霧,讓使用者進入全新的沉浸式世界。您可以使用 Depth 建立場景,讓虛擬燈光與實體物件互動、隱藏在後方,並重新點亮實體物件。

距離和景深

需要顯示某物在遠處嗎?您可以使用距離測量功能,並透過 Depth API 加入景深效果,例如模糊處理場景的背景或前景。

啟用使用者與 AR 物件互動

允許虛擬內容透過碰撞和物理效果與真實世界互動,讓使用者可透過應用程式「觸摸」世界。讓虛擬物體穿過現實世界的障礙物,或是讓虛擬彩彈擊中並濺到現實世界的樹木上。將深度為基礎的碰撞與遊戲物理效果結合,就能打造栩栩如生的體驗。

改善命中測試

深度可用於改善命中測試結果。平面命中測試只適用於具有紋理的平面,而深度命中測試則更為精細,甚至可用於非平面和低紋理區域。這是因為深度命中測試會使用場景的深度資訊,判斷點的正確深度和方向。

在以下範例中,綠色 Andy 代表標準平面觸發測試,紅色 Andy 代表深度觸發測試。

裝置相容性

Depth API 僅支援具備深度支援處理能力的裝置,且必須在 ARCore 中手動啟用,如「啟用深度」一文所述。

部分裝置也可能提供硬體深度感應器,例如飛行時間 (ToF) 感應器。請參閱「ARCore 支援的裝置」頁面,查看支援 Depth API 的裝置最新清單,以及支援硬體深度感應器 (例如 ToF 感應器) 的裝置清單。

深度圖像

Depth API 會使用動態深度演算法建立深度圖,以便呈現 3D 世界。深度圖中的每個像素都與場景與相機之間的距離測量值相關聯。這個演算法會從不同角度拍攝多張裝置圖片,並進行比較,藉此估算使用者移動手機時與每個像素的距離。這項功能會選擇性地運用機器學習技術,即使使用者幾乎沒有任何動作,也能提升深度處理效能。並充分利用使用者裝置可能具備的任何額外硬體。如果裝置有專屬的深度感應器 (例如 ToF),演算法會自動合併所有可用來源的資料。這項做法可強化現有的深度影像,並在相機未移動時提供深度資訊。在沒有或幾乎沒有特徵的表面 (例如白色牆壁) 或動態場景 (有移動中的人物或物體) 中,這項功能也能提供更佳的深度。

下圖顯示走廊的鏡頭圖像,牆上有輛腳踏車,以及由相機圖像建立的深度圖像視覺化資訊。紅色區域表示距離攝影機較近,藍色區域表示距離較遠。

從動作計算深度

使用者移動裝置時,系統就會提供深度資料。這個演算法可在 0 到 65 公尺的距離內,提供可靠且準確的深度估計值。裝置與實際場景的距離介於半公尺到五公尺之間時,結果會最準確。鼓勵使用者多移動裝置的體驗,將可帶來更出色的成效。

取得深度圖片

您可以使用 Depth API 擷取與每個相機影格相符的深度圖像。擷取的深度圖片與相機具有相同的時間戳記和視野內在值。有效的深度資料只有在使用者開始移動裝置後才會產生,因為深度是透過動作取得。表面上沒有或幾乎沒有特徵的物體 (例如白色牆壁) 會與不精確的深度相關聯。

後續步驟