超詳細的AR增強現實開發入門總結

最近有一些朋友在QQ羣或者微信公衆號後臺問Relax關於AR應用開發如何入門的問題,我想後面肯定還有很多人會問這樣的問題,乾脆就自己所知道的,比較系統的寫一篇入門文章出來,供大家參考一下。

這是AR應用開發入門的第一篇,先從整體上給大家講一下,後面文章再分開來詳細講。

1、AR發展現狀

在做AR開發之前,有必要說一下AR開發的現狀。AR目前已經在軍事和工業方面有比較多的應用,硬件設備大都是基於AR眼鏡,因爲都是軍事和工業方面比較專業的應用,所以都是企業在做,一般都沒個人開發者什麼事;

另外一方面,在2017年,蘋果和谷歌都相繼推出了ARkit和ARCore,這兩個是AR開發的SDK,蘋果和谷歌分別是安卓和蘋果手機系統廠商,所以推出這兩個SDK的意圖很明顯,就是想讓手機也能使用AR,手機現在人手一部,如果有了AR應用,那AR很快就會走進我們的生活中。所以就目前來說,AR應用開發主要還是指手機AR應用開發;

目前AR眼鏡也開始進入消費級發展階段,所以後面很快我們就可以基於AR眼鏡開發應用,手機受限於屏幕大小,手機AR應該只是AR發展的一個過渡階段,AR眼鏡纔是AR應用的主流平臺;當然這是後話,我們這個系列的文章也只會講手機AR應用的開發。

2、開發環境的選擇

前面說了我們是講手機AR應用開發,所以如果你是想做蘋果手機的AR應用開發,那自然就選擇蘋果自己的ARkit,但是對安卓來說,這個選擇就複雜一些,由於安卓的碎片化或者說開放性,安卓手機廠商衆多,AR SDK也衆多,下面是Relax整理的一張國內外的AR SDK的表,供大家參考。
在這裏插入圖片描述
就ARCore來說,目前也並不是所有的安卓手機都支持,因爲每個手機廠商的配置不一樣,ARCore需要與手機硬件廠商進行適配調校,所以目前只能是部分機型支持,目前支持ARCore的手機型號如下,詳情可以參見官網這個實時更新的頁面 https://developers.google.cn/ar/discover/supported-devices。

Relax目前入手的是華爲的Nova 3i在學習AR,下載了一些AR應用做了測試,如果是作爲測試機用,完全沒問題,從性價比考慮,大家可以考慮一下。
在這裏插入圖片描述
上面的表裏面還有其他的SDK,在功能方面,各個SDK可能會有一些差異,但是AR基礎的環境理解、運動跟蹤和光照估計肯定都是支持的。

Relax目前用了ARCore,也簡單看了下華爲AR Engine,從文檔資料來看,華爲AR Engine支持骨骼、手勢識別等等,但是華爲AR Engine肯定只對華爲系的手機更友好,如果你想讓你的手機支持更多的機型,目前來說還是選擇ARCore吧,把ARCore理解透徹,再理解其他SDK其實就很容易了,只是API函數的接口名稱變了。

另外要提到的是,正是由於AR SDK太多了,Unity這個3D遊戲開發引擎廠商開發出了AR Foundation,做的事情簡單來說就是把ARCore和ARkit再封裝了一下,大家都知道,Unity是跨平臺的,同一份代碼可以打包發佈到windows、android和蘋果等各個平臺,所以對於AR開發,Unity也希望簡化開發者的工作,開發者基於AR Foundation開發,選擇發佈不同的平臺,就選擇使用對應的SDK,這樣一來可以省去開發者需要學習多個平臺SDK的成本,預計後期Unity還會整合其它SDK,再不久的將來可以基於Unity開發AR眼鏡應用也是有可能的。

ARCore目前發佈了Android、Android NDK、Unity、Unreal、IOS(ARCore其實也支持蘋果手機)等平臺的SDK,由於Relax之前使用Android Studio開發APP,所以一開始是選擇AS學習ARCore,之前還沒有支持AR的手機,是參照官網用模擬器運行了一下HelloSceneform,感覺AS的配置開發還是比較麻煩的,也遇到了一些坑,前段時間寫了一篇文章記錄了下來,有需要的朋友也可以看下,所以個人感覺AS不太適合AR的新手入門。

目前Relax選擇了基於Unity學習ARCore開發,後面一篇文章會寫一下如何搭建基於Unity的ARCore開發環境。

另外說一下,寫到這裏Relax有一個想法,就是Relax想要搭建一個博客系統,目前靠Relax一個人只寫基於Unity的AR開發教程,顯然不夠,可能還有很多很多的朋友會因爲各種各樣的原因,選擇其他的平臺或者SDK,不同的平臺不同的SDK,在操作步驟和API上都不一樣,所以Relax想搭建一個AR開發者自己的技術博客,大家把自己學習AR開發的過程或者遇到的問題都記錄在自己的博客空間裏面,這樣後來者通過我們寫的博客就能很快學習AR,也方便大家進行技術交流,避免大家到處搜索資料。

通過這樣一個平臺大家共同來爲AR的發展出一份力,不知道大家覺得Relax這個想法怎麼樣,後面這個博客系統搭建好了再告訴大家。(PS:AR博客平臺目前已搭建好,可留言獲取)

3、 基礎知識的準備

Relax之前沒有用過Unity,也沒有做過3D方面的開發,對Unity工具的使用,3D模型方面的基礎知識都比較欠缺,所以跟我一樣的朋友,熟悉Unity根據的使用和3D基礎知識是很有必要的,Relax主要是看了一下Unity官網的用戶手冊,這個用戶手冊Relax已經上傳到開發羣裏面了,有需要的朋友可以下載。

4、學習資料

關於學習資料的問題,也是剛開始學習AR開發的朋友比較關心的問題,目前關於ARCore開發的資料比較少,Relax目前主要是在看《ARCore之路——Unity開發從入門到實踐》這本書,以及《ARCore從0到1》視頻教程。

其實從原理來講,AR涉及到數學、計算機視覺、機器學習、圖像識別等各個方面的內容,對開發者來說,掌握深層次的原理對學習AR開發肯定是有很大幫助的,但是在短時間內掌握這些知識顯然是不太可能的,建議大家根據自己的實際情況考慮吧,我們學習AR開發肯定有自己的目標,我們的目標要求我們掌握哪些知識那我們就必須掌握那些知識了。

5、應用開發方向

根據你想實現的AR功能,其實AR可以再細分出一些場景,比如目前比較常見的掃描一個卡片然後顯示3D模型,這個是AR的圖像識別功能,如果是AR特效相機,那就是AR的人臉增強功能,如果是多人AR遊戲,那就要用到共享雲錨點功能;

這些都根據你需要做什麼類型的應用來重點研究就好,但是基礎的功能,比如特徵點和可視化平面的檢測以及模型的大小、聲音、動畫的調整和放置,這些都是必須掌握的。

學習是爲了使用,建議大家先有一個目標,比如大家想開發出一個什麼類型的AR應用,然後由點及面來學習AR,就跟滾雪球一樣,越滾越大,掌握的知識才會越來越多,如果一頭扎進AR這片浩瀚的藍海中(坑也多),多少會有些不知所措不知從何下手的感覺。

謹以此想法跟所有學習AR開發的朋友共勉。

如果你還有不清楚或者有疑問的地方,可以關注微信公衆號:AR新世界,直接來問Relax吧。

想要Relax寫出更精彩的文章?那麼希望老鐵別吝嗇你的三連擊哦

1、點贊,可以讓更多的人看到這篇文章

2、關注我的原創微信公衆號『AR新世界』,第一時間閱讀我的文章。

3、也歡迎關注我的博客哦。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章