深度增加寫實主義

平台專屬指南

想讓 AR 應用程式開發人員順利將虛擬應用程式融入使用者的需求之中,使用者將虛擬物體放在場景中時,會希望該物體看起來像是在真實世界中。如果您正在開發一款吸引使用者購買家具的應用程式,最好讓使用者能放心,因為他們的扶手椅能融入他們的空間。

Depth API 可協助裝置的相機瞭解場景中真實物體的大小和形狀。可建立深度圖片,或產生深度地圖,在應用程式中增添寫實感。您可以運用深度圖片提供的資訊,打造逼真的沉浸式使用者體驗。

使用 Depth API 進行開發的用途

Depth API 可以協助物件遮蔽、改善沉浸式體驗和新互動互動,改善 AR 體驗的真實性。以下列舉一些在您自己的專案中。如需深度範例的應用實例,請查看 ARCore 深度研究室的場景範例,當中示範存取深度資料的不同方式。這個 Unity 應用程式是 GitHub 上的開放原始碼,

啟用遮蔽功能

而對現實世界中的物體後方遮蔽,或準確算繪虛擬物件,是打造身歷其境的 AR 體驗的首要之務。假設使用者可能想將虛擬 Andy 放上門旁有車廂的場景。在沒有遮蔽的情況下轉譯,Andy 不會與後車的邊緣重疊。如果運用場景的深度,並瞭解虛擬安非他與周圍 (例如木幹) 之間的距離,就能透過遮蔽精確轉譯 Andy 的內容,讓周遭環境看起來更逼真。

轉換場景

顯示虛擬雪花來填補沙發的手臂和枕頭,或將客廳投射在霧霧中,進而沉浸在充滿臨場感的全新世界中。你可以使用「深度」來打造呈現虛擬燈光互動、隱藏背後及照明真實物體的場景。

距離和景深

想要證明有東西很遠嗎?只要使用 Depth API,即可測量距離並添加景深效果,例如將場景的背景或前景模糊處理。

允許使用者與 AR 物件互動

讓使用者能夠透過碰撞和物理學與現實世界互動,讓使用者透過您的應用程式「接觸」世界。比如說,虛擬物體可以跨越真實世界的障礙,或讓虛擬漆彈射擊到真實世界的樹上。將深度碰撞與遊戲物理結合,打造栩栩如生的體驗。

改善命中測試

深度可以用來改善命中測試結果。飛機命中測試僅適用於具有紋理的平面表面,而深度命中測試則較詳細,甚至在非平面和低紋理區域上都能使用。這是因為深度命中測試會根據場景的深度資訊,判斷某個點的正確深度和方向。

在以下範例中,綠色的安迪斯代表標準飛機命中測試,紅色的 Andys 則代表深度命中測試。

裝置相容性

Depth API 僅適用於具備處理能力並可支援裝置的裝置 並必須在 ARCore 中手動啟用, 啟用深度

某些裝置也可能會提供硬體深度感應器,例如飛行時間 (ToF) 感應器。如要進一步瞭解 ARCore 支援的裝置,請參閱 ARCore 支援裝置頁面。 支援 Depth API 的最新裝置清單,以及 具備支援的硬體深度感應器,例如 ToF 感應器

深度圖片

Depth API 使用深度從動態效果演算法製作出深度圖片,呈現世界的 3D 畫面。每個深度圖片中的像素都會與測量場景與相機距離之間的測量結果有關。這個演算法會從不同角度拍攝多部裝置圖片並進行比較,藉此估算使用者移動手機時與每個像素之間的距離。這項服務選擇性地運用機器學習技術提高深度處理能力,即使使用者幾乎不需執行任何動作即可。也會利用使用者裝置可能提供的任何其他硬體。如果裝置有專屬的深度感應器 (例如 ToF),演算法會自動合併所有可用來源的資料。這個做法能強化現有景深效果,即使相機未移動,也能夠達到深度效果。此外,這個模型也能針對幾乎或完全沒有任何特徵 (例如白牆),或含有移動中的人物或物體的動態場景,呈現較深的深度。

下圖是牆上有腳踏車走廊的相機圖片,以及從相機拍攝的深度影像。紅色的區域距離相機較近,藍色區域則距離較遠。

動態深度

當使用者移動裝置時,系統就能存取深度資料。演算法可以在距離 0 到 65 公尺之間取得可靠且準確的深度估算值。裝置與實際環境之間的距離約為一半到五公尺左右時,可取得最準確的結果。鼓勵使用者進一步移動裝置,將能獲得更出色的成效和成效。

取得深度圖片

使用 Depth API 可擷取與每個相機畫面相符的深度圖片。取得的深度圖像與相機具有相同的時間戳記和視野內建功能。使用者開始移動裝置後,系統才會提供有效深度資料,因為使用者動作會取得深度資料。如果物體的表面很少或完全沒有特徵 (例如白牆),就會產生不精確的深度。

後續步驟