深度增加寫實主義

平台專屬指南

身為 AR 應用程式開發人員,您希望為使用者提供虛實整合的流暢體驗。使用者在場景中放置虛擬物件時,希望物件看起來像是真實世界的一部分。如果您要開發供使用者購買家具的應用程式,就必須讓他們確信即將購買的扶手椅適合自己的空間。

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

使用 Depth API 開發的用途

Depth API 可支援物體遮蔽、提升沉浸感,以及提供新穎的互動方式,進而提升擴增實境體驗的真實感。以下列舉幾種在專案中運用這項技術的方式。如要查看實際運作的深度功能,請探索 ARCore Depth Lab 中的範例場景,瞭解存取深度資料的不同方式。這個 Unity 應用程式是 Github 上的開放原始碼。

啟用遮蔽

遮蔽效果 (或準確算繪真實物體後方的虛擬物體) 對於身歷其境的 AR 體驗至關重要。假設使用者想將虛擬 Andy 放在場景中,門旁邊有樹幹。如果沒有遮蔽,Andy 會不切實際地與樹幹邊緣重疊。如果您使用場景的深度,並瞭解虛擬 Andy 相對周圍環境 (例如木製樹幹) 的距離,就能準確算繪 Andy 並遮蔽,讓 Andy 在周圍環境中看起來更逼真。

改造日常生活場景

透過在沙發扶手和枕頭上呈現虛擬雪花,或是在客廳中營造霧氣瀰漫的氛圍,帶領使用者進入全新的沉浸式世界。您可以使用「深度」建立虛擬燈光互動、隱藏在實體物件後方,以及重新照亮實體物件的場景。

距離和景深

需要顯示某個物體位於遠處嗎?您可以使用 Depth API 測量距離,並加入景深效果,例如模糊場景的背景或前景。

啟用使用者與 AR 物件的互動

透過碰撞和物理原理,讓虛擬內容與現實世界互動,讓使用者透過應用程式「觸摸」世界。讓虛擬物體越過現實世界的障礙物,或讓虛擬漆彈擊中現實世界的樹木並濺出漆彈。將深度碰撞與遊戲物理效果結合,就能打造栩栩如生的體驗。

改善命中測試

深度可用於改善命中測試結果。平面命中測試僅適用於有紋理的平面,而深度命中測試則更為詳細,即使在非平面和低紋理區域也能運作。這是因為深度命中測試會使用場景中的深度資訊,判斷某個點的正確深度和方向。

在下列範例中,綠色 Andy 代表標準平面命中測試,紅色 Andy 則代表深度命中測試。

裝置相容性

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

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

深度圖像

Depth API 會使用「從動作推斷深度」演算法建立深度圖像,提供世界 3D 檢視畫面。深度影像中的每個像素都與場景與相機的距離測量結果相關聯。這項演算法會從不同角度拍攝多張裝置圖片並加以比較,藉此估算使用者移動手機時,每個像素的距離。即使使用者動作幅度很小,這項技術也會選擇性地運用機器學習,加強深度處理。此外,這項技術也會充分運用使用者裝置可能擁有的任何額外硬體。如果裝置有專屬的深度感應器 (例如 ToF),演算法會自動合併所有可用來源的資料。這項功能可強化現有的深度影像,即使攝影機未移動也能啟用深度效果。對於特徵較少或沒有特徵的表面 (例如白牆),或是動態場景中移動的人或物體,也能提供更佳的深度資訊。

下圖顯示走廊的相機影像 (牆上掛著腳踏車),以及從相機影像建立的深度影像視覺化資訊。紅色區域代表距離攝影機較近,藍色區域則代表距離較遠。

透過動作估算深度

使用者移動裝置時,系統就會提供深度資料。演算法可從 0 到 65 公尺的距離取得準確的深度估計值。如要取得最準確的結果,裝置與實際場景的距離應介於半公尺到五公尺之間。如果體驗會鼓勵使用者多移動裝置,就能獲得越來越好的結果。

取得深度影像

透過 Depth API,您可以擷取與每個相機畫面相符的深度影像。取得的深度影像與相機具有相同時間戳記和視野內在參數。使用者開始移動裝置後,系統才會提供有效的深度資料,因為深度是從動作取得。如果表面特徵很少或沒有特徵 (例如白牆),系統會將其與不精確的深度建立關聯。

後續步驟