學 AR 到底學什麼?個人 AR 之路反思與展望

「誰是咱們的敵人?誰是咱們的朋友?這個問題是革命的首要問題。」git

反思

作爲一個寫了不少文章,一直在鼓吹 AR 的AR 神棍,我對 AR 的興趣開始於 2015 年,那時剛入門 iOS 開發一年左右,正是 AR/VR 又一次火起來的時候,當時蘋果也尚未拿出 ARKit,只好先學開發基礎知識和 SceneKit。 從 ARKit 推出後,我就利用業餘時間不停學習這個框架,並嘗試寫一些 Demo 和基礎文章,學習相關數學基礎,整整三年從 ARKit 1 跟着學到了 ARKit 3。
在這四五年裏,看到了 AR/VR 行業經歷了一個完整的泡沫週期:概念普及 --> 引人矚目 --> 指望太高騙子橫行 --> 熱情降低 --> 無人問津。github

到 2020 年中,雖然 AR 仍然沒有火起來,但我已經在移動 AR 行業完整工做一年了,開發了 10 多個大大小小的 Demo 和幾個完整的 AR 產品,對 iOS 平臺的 ARKit 比較熟悉,對蘋果新推出的 RealityKit 及 Unity 平臺的 ARFoundation 也有必定了解。 可是,即便我在 AR 方面付出了這麼多努力,有了很多經驗,我卻從沒有認真深刻思考過革命的首要問題:AR 到底須要學什麼?用 AR 又該作什麼?markdown

AR 基本流程

要搞明白這些問題,就必須先來梳理一下 AR 的基本流程: 網絡

  • 即時定位與地圖映射(SimultaneousLocalizationAndMapping,SLAM):依靠 VIO+IMU+CV+TOF 等技術,實現特徵點提取,場景重建,平面識別,圖片識別等功能;
  • 場景感知和識別:依靠 CV 、ML 等技術,識別不一樣場景和其中的物體,好比 ARKit 已經可以識別桌子、椅子、牆面、天花板、人體等;
  • 疊加 3D 圖像和聲音:依靠 3D 渲染技術,將虛擬的畫面和聲音,疊加在的場景中或者已識別的物體上。好比 ARKit 依賴於 SceneKit 提供渲染,而 Unity 則本身提供渲染(追蹤和識別依然是對 ARKit 和 ARCore 的封裝);
  • 多人協做與分享:依靠 GPS + 特徵點 + 網絡等技術,如蘋果的MultipeerConnectivity + CollaborativeSession + WorldMap共享,2020年LocationAnchor,以及谷歌的雲錨點等,實現多人共享 AR 效果。

可以同時把這些都作好,纔是一個很完善的 AR 應用。至少,也要作好這四項中的兩項,而不是目前不少只是將原來的 3D 內容簡單改成 AR 形式。app

考慮到第一項 SLAM 實際上是 AR 平臺或硬件提供的功能,實際上大部分 AR 應用只要作好後面三項中的兩項,就是一個很棒的 AR APP 了。 框架

AR 產品的方向

我心目中對於 AR 產品有幾個經典例子:三維建模軟件shapr 3D,身體解剖軟件Complete Anatomy,和沙雕風格的らくがきAR(RakugakiAR)(即塗鴉 AR)機器學習

下面是shapr 3D的演示 Demo,直接用 LiDar 掃瞄房間,生成房間和傢俱的三維圖紙,編輯後,再以 AR 方式預覽: ide

身體解剖軟件Complete Anatomy則將動做捕捉和人體解剖模型關聯起來,讓人更清楚看到人體的動做狀態: oop

塗鴉 AR識別平面圖形,將其變成 3D 物體,並以 AR 方式展示: 性能

這幾個 app 都作到了利用 CV+ML 來識別並提取場景中物體信息,並提供了有創意的或強大的 3D 渲染技術,來展示 AR 效果,這也是它們成功的緣由。

固然,也能夠相似Pokémon Go那樣,依靠 GPS+3D 渲染,來製做多人 LBS 類 app。

AR 學習路線

那麼,瞭解 AR 產品的 4 個基本流程後,做爲一個 AR 開發者,到底應該學什麼?怎麼學?我根據本身的理解,列舉一個知識矩陣:

我我的認爲,應該從易到難,從具體看得見的,到抽象看不見的。也就是先學第三步,由於 3D 渲染能看獲得,比較引起學習興趣。 好比:從 3D 引擎基礎知識出發,到 ARKit 相關,初中高級知識依次學習。

數學基礎方面推薦3Blue1Brown的視頻:線性代數的本質,B 站上有中文字幕和翻譯。

圖形學基礎方面推薦Games101系列視頻:現代計算機圖形學入門-閆令琪,B 站上有中文版。

iOS 教程方面Raywenderlich家的幾本教程就挺不錯,適合 iOS 開發者入門。

Unity 方面也能夠了解下,教程又多質量也比較高。好比 《AR 開發權威指南:ARFoundation》(該做者同時還在寫做一本關於 RealityKit 的書籍,預計2021年發佈),和 catlike coding 上面的教程。

還要學習的就是第二步:場景感知和識別,主要依靠 CV+ML 來實現,對於 iOS 開發者來講,蘋果對 ML 進行了封裝,模型訓練和使用都很是簡單(固然,目前功能並不強大,性能也不夠優秀),依靠 CreateML + CoreML+Vision 來實現整個 ML 過程,且很是容易和 ARKit 相結合,好比識別 AR 中的特定動做,觸發 AR 效果。

除了場景感知會用到 ML 相關知識外,蘋果實際上在第一步的 SLAM 階段也用到了 ML 來提高追蹤穩定性,在第三階段渲染時,也可使用 ML 來完成風格遷移等視頻效果(2020年 CreateML app 已經支持了這種模型的訓練)。

其實咱們能夠看到,Metal 在全部這些流程和技術中,都起到了底層支撐做用。不論是 3D 渲染,仍是機器學習框架,圖像處理,都用到了 Metal。這也說明 Metal 在 Apple 生態中的重要做用,不可不學。

第四步位置和多人共享,則須要學習 GPS 和網絡相關知識,這個更可能是從工做項目中學習。iOS 開發者能夠參考 ARKit-CoreLocation 這個框架。

須要避免的錯誤

  • 簡單搬運:將原來的 2D 或 3D 內容,簡單轉制後變成 AR 版的,雖然工做量比較少,但效果通常都很差。主要緣由是內容與現實世界沒有聯繫,玩法沒有結合新的形式,爲了 AR 而 AR。
  • 左傾與右傾:左傾是激進冒險主義和機會主義,就是但願花一兩個月,讀一兩本書,就能學會 AR 並取得成就。右傾則是保守主義和投降主義,有畏難思想懼怕學不會,看見矩陣和數學公式就慫了,過早放棄。
  • 如今不成熟,等效果穩定、 AR 眼鏡發佈:根據目前狀況,就算蘋果的 AR 眼鏡發佈,前幾代產品也會有各類限制和缺陷,手機 AR 雖然效果雞肋,但在很長一段時間仍會是主流。正如當年 iPhone 第一代發佈時,功能遠不如諾基亞 S60 智能手機同樣,對用戶來講差異很大,但對開發者來講,其實技術是相似的,現代手機上的各類 app 均可以從當年找到技術原型和創意原型。當年有不少開發者從 S60 和 PPC 平臺轉到了 iOS、安卓平臺,將來咱們能夠也要經歷相似的過程:從手機 AR 轉到 AR 眼鏡平臺。

蘋果的各類態度已經很明確,AR 就是將來,是下一代的計算平臺。微軟、Facebook、華爲也都在作 AR 研發。雖然如今並不成熟,問題也不少,可是做爲開發者,提早學起來老是沒有錯的。

總結

總結一下:

  • 學 AR 到底學什麼?學四大步驟,尤爲是 ML 和 3D 渲染相關知識,以及繞不開的 Metal 知識。
  • 用 AR 作什麼?作相似塗鴉 AR這樣的產品,理解場景,再以 AR 方式展現出來。考慮到如今的 AR 平臺能力有限,穩定性不足,依靠創意去實現一些小而美的 app 是條很是好的路。

這就是我對本身在 AR 學習過程當中的思考與展望。AR 將來的路還很長,要學的知識也不少,生命不熄學習不止,才能走得更好更遠。

相關文章
相關標籤/搜索