深度增加寫實主義

平台專屬指南

AR 應用程式開發人員會希望能夠完美融入虛擬環境,讓使用者享有流暢的體驗。使用者將虛擬物體置於場景中時,會希望物件看起來像是在現實世界中。如果您要開發使用者購買家具的應用程式,希望他們確保自己即將購買的小椅能貼合他們的空間。

深度 API 可協助裝置的相機瞭解場景中實際物體的大小和形狀。這種模型會建立深度圖片或深度地圖,因此在應用程式中加入逼真的圖層。您可以運用深度圖片提供的資訊,提供身歷其境的沉浸式使用者體驗。

使用 Depth API 進行開發的用途

Depth API 可提供物件遮蔽、改善沈浸式和創新的互動體驗,提升 AR 體驗的真實性。您可以透過下列方式在專案中使用這項工具。如需深度範例的應用實例,請前往 ARCore 深度研究室探索範例場景,瞭解存取深度資料的不同方式。這個 Unity 應用程式是 GitHub 上的開放原始碼。

啟用遮蔽功能

有些人在真實物件後方可精準轉譯虛擬物件,是提供沉浸式 AR 體驗的重要關鍵。舉例來說,一個虛擬 Andy 使用者可能會想將車廂放在門口旁的場景中。在沒有遮蔽的情況下轉譯,Andy 會與主幹邊緣不切實際重疊。如果運用場景深度,並瞭解虛擬安迪與木幹等周遭環境的相對距離,就能以遮蔽功能準確算繪安迪的風景,讓畫面在周遭環境看起來更真實。

轉換場景

呈現虛擬雪花並放在沙發的手臂和枕頭上,或將客廳擺放在霧氣霧中,讓使用者進入沉浸式全新世界。你可以使用「深度」功能創造一個場景,讓虛擬燈光互動、隱藏背後,以及重現真實物體。

視野距離和深度

需要呈現距離太遠的事物嗎?你可以使用 Depth API 測量距離,並加入景深效果,例如將場景的背景或前景模糊處理。

啟用與 AR 物件互動的功能

讓使用者能夠透過您的應用程式「觸摸」世界,讓虛擬內容透過碰撞和物理行為與真實世界互動。也可以讓虛擬物體突破真實世界中的障礙,或是讓虛擬彩球擊到真實世界中的樹木。結合深度衝突與遊戲物理特性,讓遊戲體驗變得生動有趣。

改善點擊測試

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

在以下範例中,綠色 Andys 代表標準飛機點擊測試,紅色 Andys 代表深度命中測試。

裝置相容性

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

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

深度圖片

Depth API 採用縱深動作演算法來建立深度圖片,提供世界 3D 視圖。深度圖片中的每個像素都會與拍攝場景距離相機的測量相關聯。這個演算法會從不同角度擷取多種裝置圖片,並用來估算使用者移動手機時與每個像素之間的距離。能選擇性地運用機器學習技術增加深度處理,即便使用者移動的少量動作也不受影響。還能利用使用者裝置擁有的任何額外硬體。如果裝置有專屬的深度感應器 (例如 ToF),演算法會自動合併所有可用來源的資料。這樣就能強化現有的深度影像,即使相機沒有移動,也能開啟景深。還能在功能較少或完全沒有功能的表面上 (例如白牆),或是有人物或物體的動態場景提供更深入的深度。

下圖顯示走廊牆上有單車的走廊,以及利用相機影像建立的深度圖片。紅色的區域更靠近攝影機,而藍色的區域則遠離相機。

動作深度

當使用者移動裝置後,系統就會提供深度資料。演算法可以取得可靠準確的深度預估值,範圍從 0 至 65 公尺遠。裝置距離真實環境中約為五公尺的一半時,即可得到最準確的結果。這類功能可以鼓勵使用者移動裝置,藉此提升運作效果和品質。

取得深度圖片

透過 Depth API,您可以擷取與每個鏡頭相配的深度圖片。取得的深度影像含有與相機相同的時間戳記和視野。由於使用者開始移動裝置,系統必須等到使用者開始移動裝置後,才會取得有效的深度資料。如果表面只有極少或完全沒有特徵 (例如白牆),這類表面會對應到不精確的深度。

後續步驟