基礎概念

在深入研究 ARCore 之前,了解一些基本概念會很有幫助。這些概念共同說明了 ARCore 如何實現能夠使虛擬內容看起來停留在真實表面上或附加到真實世界位置的體驗。

運動追踪

當您的手機在世界中移動時,ARCore 使用一個稱為同步定位和映射(SLAM) 的過程來了解手機相對於周圍世界的位置。 ARCore 在捕獲的相機圖像中檢測視覺上不同的特徵,稱為特徵點,並使用這些點來計算其位置變化。視覺信息與來自設備 IMU 的慣性測量相結合,以估計相機隨時間相對於世界的姿態(位置和方向)。

通過將渲染 3D 內容的虛擬相機的姿勢與 ARCore 提供的設備相機的姿勢對齊,開發人員能夠從正確的角度渲染虛擬內容。渲染的虛擬圖像可以覆蓋在從設備相機獲取的圖像之上,使其看起來好像虛擬內容是現實世界的一部分。

環境理解

ARCore 通過檢測特徵點和平面不斷提高對現實世界環境的理解。

ARCore 會尋找看似位於常見水平或垂直表面(如桌子或牆壁)上的特徵點集群,並將這些表面作為幾何平面提供給您的應用程序。 ARCore 還可以確定每個幾何平面的邊界,並將該信息提供給您的應用程序。您可以使用此信息將虛擬對象放置在平面上。

由於 ARCore 使用特徵點來檢測平面,因此可能無法正確檢測到沒有紋理的平面,例如白牆。

深度理解

ARCore 可以使用受支持設備中的主 RGB 攝像頭創建深度圖、包含有關表面與給定點之間距離的數據的圖像。您可以使用深度圖提供的信息來實現身臨其境和逼真的用戶體驗,例如使虛擬對象與觀察到的表面準確碰撞,或使它們出現在現實世界對象的前面或後面。

光估計

ARCore 可以檢測有關其環境照明的信息,並為您提供給定相機圖像的平均強度和顏色校正。此信息可讓您在與周圍環境相同的條件下照亮虛擬對象,從而增加真實感。

用戶交互

ARCore 使用命中測試來獲取與手機屏幕相對應的 (x,y) 坐標(通過點擊或您希望應用支持的任何其他交互提供)並將光線投射到相機的世界視圖中,返回任何幾何平面或射線相交的特徵點,以及該相交在世界空間中的位姿。這允許用戶選擇或以其他方式與環境中的對象交互。

導向點

定向點可讓您將虛擬對象放置在有角度的表面上。當您執行返回特徵點的命中測試時,ARCore 將查看附近的特徵點並使用這些特徵點來嘗試估計給定特徵點的表面角度。然後,ARCore 將返回一個考慮該角度的姿勢。

由於 ARCore 使用特徵點集群來檢測表面的角度,因此可能無法正確檢測到沒有紋理的表面,例如白牆。

錨點和可追踪對象

隨著 ARCore 提高對自身位置和環境的理解,姿勢可能會發生變化。當你想放置一個虛擬對象時,你需要定義一個錨點來確保 ARCore 會隨著時間的推移跟踪對象的位置。通常,您會根據命中測試返回的姿勢創建錨點,如用戶交互中所述。

姿勢可以改變的事實意味著 ARCore 可能會隨著時間的推移更新環境對象的位置,例如幾何平面和特徵點。平面和點是一種特殊類型的對象,稱為trackable 。顧名思義,這些是 ARCore 將隨時間跟踪的對象。您可以將虛擬對象錨定到特定的可追踪對象,以確保虛擬對象和可追踪對象之間的關係即使在設備四處移動時也能保持穩定。這意味著,如果您在辦公桌上放置一個虛擬 Android 小雕像,如果 ARCore 稍後調整與桌子關聯的幾何平面的姿勢,Android 小雕像仍然會出現在桌面上。

有關更多信息,請參閱使用錨點

增強圖像

增強圖像功能允許您構建可以響應特定 2D 圖像(如產品包裝或電影海報)的 AR 應用程序。當用戶將手機的攝像頭對準特定的圖像時,他們可以觸發 AR 體驗——例如,他們可以將手機的攝像頭對準電影海報,然後讓角色彈出並製作場景。

ARCore 還跟踪移動圖像,例如移動公共汽車側面的廣告牌。

圖像可以離線編譯以創建圖像數據庫,或者可以從設備實時添加單個圖像。註冊後,ARCore 將檢測這些圖像、圖像的邊界,並返回相應的姿勢。

分享

ARCore Cloud Anchor API 可讓您為 Android 和 iOS 設備創建協作或多人應用程序。

使用雲錨點,一台設備將錨點和附近的特徵點發送到雲進行託管。這些錨點可以與同一環境中 Android 或 iOS 設備上的其他用戶共享。這使應用程序能夠渲染附加到這些錨點的相同 3D 對象,讓用戶同時擁有相同的 AR 體驗。

學到更多

通過在您選擇的平台上構建 AR 體驗,開始將這些概念付諸實踐。