「誰是咱們的敵人?誰是咱們的朋友?這個問題是革命的首要問題。」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 應用。至少,也要作好這四項中的兩項,而不是目前不少只是將原來的 3D 內容簡單改成 AR 形式。app
考慮到第一項 SLAM 實際上是 AR 平臺或硬件提供的功能,實際上大部分 AR 應用只要作好後面三項中的兩項,就是一個很棒的 AR APP 了。 框架
我心目中對於 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 產品的 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 這個框架。
蘋果的各類態度已經很明確,AR 就是將來,是下一代的計算平臺。微軟、Facebook、華爲也都在作 AR 研發。雖然如今並不成熟,問題也不少,可是做爲開發者,提早學起來老是沒有錯的。
總結一下:
這就是我對本身在 AR 學習過程當中的思考與展望。AR 將來的路還很長,要學的知識也不少,生命不熄學習不止,才能走得更好更遠。