ARCore學習之旅:基礎概念

Geedio發表於2019-03-02

以下內容譯自官方文件,僅供個人學習、記錄、參考使用,如有紕漏,還請留言指正。

原文地址:Fundamental Concepts

開始ARCore的旅程前,理解一些基礎概念將有助於接下來的深入學習。這些概念一起闡述了ARCore是如何使得虛擬物體能夠展示在現實世界的表面上,或者說如何新增到現實世界中的位置上。

運動跟蹤

當你的手機在現實世界中移動,ARCore通過一個稱為並行測量對映(concurrent odometry and mapping, COM)的處理過程,來理解手機相對於現實世界的位置。ARCore通過檢測攝像頭捕獲的影像資料的視覺差異點(即特徵點),使用這些點來計算位置上的改變。這些視覺資訊和裝置上的IMU的慣性測量值一起,用於計算攝像頭隨著時間推移而變動的姿勢(包括位置和姿勢)。

通過把用於渲染的3D物體的虛擬世界的攝像機姿態對齊ARCore提供的裝置上的攝像頭的姿態,開發者能夠從正確的透視角度來渲染虛擬物體。渲染出來的虛擬物體的影像可以覆蓋在攝像頭捕獲的影像的上面,使得虛擬物體就像現實世界的一部分一樣,呈現在螢幕上。

運動跟蹤:弧線為裝置運動軌跡,椅子上的點為ARCore測量的特徵點
運動跟蹤:弧線為裝置運動軌跡,椅子上的點為ARCore測量的特徵點

環境理解

ARCore通過持續的檢測特徵點和平面,提升它對現實世界的理解。

ARCore查詢那些看起來像是在同一個水平表面上的特徵點,像桌子上的特徵點們,然後把識別出來的這些表面作為平面(Plane)提供給你的應用使用。ARCore還能檢測每一個平面的邊界,並把這些資訊提供給你的應用。你可以使用這些資訊來防止虛擬物體到這些平面上來。

由於ARCore使用特徵點來識別平面,因此可能無法很好地識別那些表面沒有紋理的平面,如純白色的書桌。

環境理解:ARCore能識別出圖中的桌面、椅面、地面,開發者可以在平面上放置虛擬物體
環境理解:ARCore能識別出圖中的桌面、椅面、地面,開發者可以在平面上放置虛擬物體

光線估計

ARCore能夠檢測環境的光線,並提供當前影像的平均強度資訊。這使得你能夠用和環境同樣的光照來照亮你的虛擬物體,提升AR內容的真實感。

光線估計:圖中兩個虛擬物體應用了各自對應的光照估計資訊,更像真實的存在於現實世界的物體
光線估計:圖中兩個虛擬物體應用了各自對應的光照估計資訊,更像真實的存在於現實世界的物體

人機互動

ARCore使用命中測試(Hit testing),接受一個相對於手機螢幕的(x, y)座標(通過諸如點選或者其他你的應用支援的互動),投影一道光線到攝像機的世界視口,返回這道光線貫穿的任意平面和特徵點,同時提供它們在世界裡的姿態資訊。這使得使用者可以選擇物體,或和環境中的物體互動。

錨定物件

隨著ARCore對自身位置和周邊環境的理解的提升,對應的姿態資訊也會隨之改變。當你想要放置一個虛擬物體時,你需要定義一個錨定(Anchor)點,讓ARCore持續的追蹤這個物體的位置。通常你需要基於命中測試返回的姿態資訊建立一個錨定點,如上小節所述。這使得你的虛擬內容能夠在裝置移動的時候,依舊能相對於現實世界保持穩定。

深入學習

理解了上述的基礎概念,接下來你可以把這些概念運用到構建AR應用的實戰中去了。依照你的選擇的開發平臺,可以選擇下面對應的資料進行進一步學習:

相關文章