四分鐘內(nèi)明白 ARCore + 上手
最速了解 ARCore
ARCore 是一個(gè)用來在 Android 上搭建增強(qiáng)現(xiàn)實(shí)(Augmented Reality, AR)應(yīng)用的平臺(tái)。我們在里面使用了三項(xiàng)關(guān)鍵技術(shù)來整合虛擬內(nèi)容和現(xiàn)實(shí)世界:
- 運(yùn)動(dòng)跟蹤技術(shù)讓手機(jī)能夠理解并追蹤自身在環(huán)境中的相對位置;
- 環(huán)境理解技術(shù)讓手機(jī)可以偵測到扁平的水平面,如地表或咖啡桌;
- 光照強(qiáng)度估測技術(shù)可以估量當(dāng)前環(huán)境的光照情況。
重點(diǎn)來了:ARCore 已經(jīng)進(jìn)入搶先體驗(yàn)階段,您現(xiàn)在就可以開始嘗試搭建全新 AR 應(yīng)用。這同時(shí)也是一個(gè)難得的機(jī)遇,您可以利用它來為早期版本的 API 提供反饋信息。事實(shí)上我們準(zhǔn)備這篇文章也是希望幫助您邁出旅程的***步,幫助您在整個(gè) Android 生態(tài)系統(tǒng)中開啟 AR 能力。
哪些設(shè)備能用?
ARCore 被設(shè)計(jì)用來支持?jǐn)?shù)量廣大的 Android 設(shè)備,要求系統(tǒng)不低于 Android N。在 SDK 預(yù)覽期間,ARCore 支持下列設(shè)備:
- Google Pixel 和 Pixel XL
- Samsung Galaxy S8 (SM-G950U, SM-G950N, SM-G950F, SM-G950FD, SM-G950W, SM-G950U1)
ARCore 的運(yùn)作原理是什么?
簡單來說的話,ARCore 其實(shí)只做兩件事:
- 在移動(dòng)設(shè)備移動(dòng)時(shí)追蹤它們的位置;
- 逐漸用自己的方式對現(xiàn)實(shí)世界進(jìn)行理解。
ARCore 的運(yùn)動(dòng)跟蹤技術(shù)使用手機(jī)攝像頭來辨識關(guān)鍵點(diǎn)(又叫做特征點(diǎn)),并跟蹤這些點(diǎn)隨時(shí)間運(yùn)動(dòng)的軌跡。結(jié)合了這些點(diǎn)的移動(dòng)軌跡和手機(jī)的慣性傳感器之后,ARCore 就可以在手機(jī)移動(dòng)時(shí)判定它的位置和走向。
能識別點(diǎn),自然就能識別面。在辨識關(guān)鍵點(diǎn)的基礎(chǔ)上,ARCore 還可以偵測平面,比如桌子或地板,并估測它周圍的平均光照強(qiáng)度。這些能力在結(jié)合起來之后,可以讓 ARCore 建立起周邊世界的概念。
在 ARCore 了解了周邊的現(xiàn)實(shí)世界后,您就可以把虛擬的物品、標(biāo)注信息或其他您想要展現(xiàn)的內(nèi)容與現(xiàn)實(shí)世界進(jìn)行無縫整合。您可以在咖啡桌角落上放一只打盹的小貓,或是在畫作上添加關(guān)于畫家個(gè)人信息的注釋。運(yùn)動(dòng)跟蹤功能意味著您可以到處移動(dòng),從不同的角度觀看這些物品,在您掉頭離開房間后,只要您返回原處,那只小貓或那條注釋仍會(huì)原封不動(dòng)地呆在那里。
當(dāng)然,本文的目標(biāo)是 “最速了解”,所以這里就不展開細(xì)說了。有興趣的讀者可以打開下面的鏈接了解更詳細(xì)的運(yùn)作概念:
https://developers.google.cn/ar/discover/concepts
最速上手
我們相信下面 4 個(gè)平臺(tái)已經(jīng)能覆蓋大多數(shù)開發(fā)者的選擇了,大家可以現(xiàn)在就跳至自己的主場,按照說明開始使用我們的 SDK。
1. Android Studio 上手
搭建開發(fā)環(huán)境:
- 安裝版本 2.3 或更高的 Android Studio,內(nèi)含版本 7.0(API 等級 24)或更高的 Android SDK Platform。
- 需要使用上面提到的能支持 ARCore 的 Android 設(shè)備。
- 需要為 Android Studio 提供 ARCore SDK,您可以:下載 SDK preview for Android Studio 并解壓- 或 -使用這條命令復(fù)制 SDK 進(jìn)來:
- git clone https://github.com/google-ar/arcore-android-sdk.git
*注意,必須使用受支持的實(shí)體設(shè)備。ARCore 不支持 Android Emulator 等虛擬設(shè)備。在設(shè)備上作如下準(zhǔn)備:
- 啟用開發(fā)者選項(xiàng)
- 啟用 USB debugging
- 在設(shè)備上安裝 ARCore Service:下載 ARCore Service(https://github.com/google-ar/arcore-android-sdk/releases/download/sdk-preview/arcore-preview.apk)
- 使用 USB 線纜連接您的 Android 設(shè)備和開發(fā)機(jī)
- 使用這條 adb 命令安裝服務(wù):
- adb install -r -d arcore-preview.apk
打開示例項(xiàng)目:
在 Android Studio 中,找到
示例項(xiàng)目依賴于特定版本的軟件,如 Gradle 和 Android SDK 等。如果所需的依賴項(xiàng)未能安裝,Android Studio 將請求在您的開發(fā)機(jī)上對其進(jìn)行下載和安裝。
請確保您的 Android 設(shè)備連接到了開發(fā)機(jī),并在 Android Studio 中點(diǎn)擊 “運(yùn)行”。隨后,選中您的設(shè)備作為部署目標(biāo),并點(diǎn)擊 “OK”。
Android Studio 會(huì)將您的項(xiàng)目寫入一個(gè)可 debug 的 APK,并安裝該 APK,隨后在您的設(shè)備上運(yùn)行該應(yīng)用。
△ Hello, AR!
隨著設(shè)備的移動(dòng),應(yīng)用會(huì)自動(dòng)偵測到水平表面,并繪制出棱形網(wǎng)格。點(diǎn)擊網(wǎng)格即可在平面上放置 Android 機(jī)器人。
之后,您可以通過 “添加為依賴項(xiàng)” 的方式,將 ARCore AAR Library 整合至現(xiàn)有的項(xiàng)目中。您的應(yīng)用的 minSDKVersion 必須為 19 或更高。
Unity 上手
搭建開發(fā)環(huán)境:
- 安裝版本 7.0(API 等級 24)或更高的 Android SDK。
- 安裝 Unity 2017.2 Beta 9,并附加 Android Build Support 組件。
- 您需要在 Unity 中采用 ARCore SDK,您可以:下載 SDK Preview for Unity 并解壓- 或 -使用這條的命令復(fù)制儲(chǔ)存庫:
- git clone https://github.com/google-ar/arcore-unity-sdk.git
實(shí)體設(shè)備的準(zhǔn)備工作請參考上面 Android Studio 的上手部分。
創(chuàng)建新項(xiàng)目:
- 在 Unity 中選擇 “文件” > “新項(xiàng)目”。
- 將您的項(xiàng)目命名為 HelloAR,保留 3D 模式的選中狀態(tài),并點(diǎn)擊 “創(chuàng)建項(xiàng)目”。
導(dǎo)入 SDK:
- 導(dǎo)入 arcore-unity-sdk-preview.unitypackage:在 Unity 里點(diǎn)擊菜單 “資源” > “導(dǎo)入包” > “全部”,導(dǎo)入 Unity 包的全部內(nèi)容。
- 在 Unity 的 Project 窗口中,您可以看到 Unity SDK 文件和 HelloAR 示例應(yīng)用。
配置 Build 設(shè)置:
點(diǎn)擊 “文件” > “Build 設(shè)置” 以打開 Build Settings 窗口。
然后做如下修改:
(1)將目標(biāo)平臺(tái)更改為 Android 并點(diǎn)擊 Switch Platform。
(2)點(diǎn)擊 Player Settings 打開 Android Player Settings,隨后更改以下設(shè)置:
- Other Settings > Multithreaded Rendering: 關(guān)閉
- Other Settings > Package Name: 改為一個(gè)獨(dú)特的應(yīng)用 ID,看起來像是 JAVA 包的名稱,如:com.example.helloAR
- Other Settings > Minimum API Level: Android 7.0 或更高
- Other Settings > Target API Level: Android 7.0 或 7.1
- XR Settings > Tango Supported: 開啟
(3)Scenes in Build 列出了您的項(xiàng)目中有哪些場景會(huì)被包含在您的構(gòu)建中。按照下面的方法即可從 HelloAR 示例應(yīng)用中添加場景到您的構(gòu)建中:
- 在項(xiàng)目窗口中通過 Assets > GoogleARCore > HelloARExample > Scenes 選中場景。
- 點(diǎn)擊場景并將其放進(jìn) Scenes in Build。
編譯并運(yùn)行示例應(yīng)用:
請確保您的 Android 設(shè)備連接到了開發(fā)機(jī),并點(diǎn)擊 “編譯并運(yùn)行”。Unity 會(huì)將您的項(xiàng)目寫入一個(gè) Android APK,并在您的設(shè)備上安裝并運(yùn)行該項(xiàng)目。
隨著設(shè)備的移動(dòng),應(yīng)用會(huì)自動(dòng)偵測到水平表面,并繪制出棱形網(wǎng)格。點(diǎn)擊網(wǎng)格即可在平面上放置 Android 機(jī)器人。
您可以使用 Android Logcat 查看日志信息,也可以使用 Android Device Monitor 對設(shè)備進(jìn)行詳細(xì)分析。
Unreal 上手
搭建開發(fā)環(huán)境:
(1)遵循下面三個(gè)步驟即可使用 ARCore 插件搭建 Unreal Engine:
- 取得 Epic's GitHub 儲(chǔ)存庫的使用權(quán)限:(https://www.unrealengine.com/ue4-on-github)
- 使用這條代碼獲得代 ARCore 插件的 Unreal 源代碼:
- git clone -b 4.17-arcore-sdk-preview https://github.com/google-ar-unreal/UnrealEngine.git
(2)參考 Unreal Android Quick Start:
(https://docs.unrealengine.com/latest/INT/Platforms/Android/GettingStarted/index.html)
搭建 Unreal 編輯器以便進(jìn)行 Android 開發(fā)。請確保安裝了版本 7.0(API 等級 24)或以上的 Android SDK Platform。
(3)獲得 Unreal HelloAR 示例項(xiàng)目。您可以:直接從
https://github.com/google-ar/arcore-unreal-sdk/releases/download/sdk-preview/arcore-unreal-sdk-preview.zip下載示例項(xiàng)目庫并解壓。- 或 -使用下面的命令復(fù)制儲(chǔ)存庫:
- git clone https://github.com/google-ar/arcore-unreal-sdk.git
實(shí)體設(shè)備的準(zhǔn)備工作請參考上面 Android Studio 的上手部分。
打開示例項(xiàng)目 HelloAR:
設(shè)定 Android 開發(fā)設(shè)置:
- 在菜單欄中,點(diǎn)擊 “編輯” > “項(xiàng)目設(shè)置”
- 在 Android SDK 平臺(tái)下的 Project Settings 中,請確保所有路徑正確地設(shè)置到了您的 Android SDK 和 Android NDK 安裝位置。將 SDK API Level 設(shè)置為 “matchndk”,然后將 NDK API Level 設(shè)置為 android-24 或更高
編譯并運(yùn)行示例應(yīng)用:
打包 HelloAR 項(xiàng)目。在菜單欄中選擇 File > Package Project > Android > Android (ASTC)。
此時(shí)會(huì)出現(xiàn)一個(gè)對話框。在對話框中創(chuàng)建名為 Builds 的新文件夾并點(diǎn)擊 Select。
Unreal 開始打包項(xiàng)目,并在狀態(tài)窗口(位于右下角)中顯示進(jìn)程。想要詳細(xì)了解打包進(jìn)程,參見 Output Log 窗口。
項(xiàng)目打包完成后,請確保您的設(shè)備仍連接著電腦。打開 Builds 文件夾,雙擊文件 Install_HelloARUnreal_Development-armv7-es2.bat (Windows 用戶)或 Install_HelloARUnreal_Development-armv7-es2.command (Mac 用戶),在您的 Android 智能手機(jī)上安裝項(xiàng)目。
安裝完成后,在您的設(shè)備上尋找名為 HelloAR UE4 的應(yīng)用,并開始運(yùn)行。
隨著設(shè)備的移動(dòng),應(yīng)用會(huì)自動(dòng)偵測到水平表面,并繪制出棱形網(wǎng)格。點(diǎn)擊網(wǎng)格即可在平面上放置 Android 機(jī)器人。
Web 上手
在上手前大家需要了解,AR 仍然是最***的技術(shù),今天的 Web 上并沒有適用于 AR 的標(biāo)準(zhǔn),開發(fā)者們可以使用網(wǎng)絡(luò)工具進(jìn)行實(shí)驗(yàn),利用 AR 來增強(qiáng)網(wǎng)絡(luò)體驗(yàn),手段包括 JavaScript 代碼庫、three.ar.js 以及適用于 ARCore on Android 和 ARKit on iOS 的試驗(yàn)型瀏覽器等。
請注意:WebARonARCore 和 WebARonARKit 不是全功能的網(wǎng)絡(luò)瀏覽器。它們基于的 JavaScript API 或是不夠標(biāo)準(zhǔn),或是不在標(biāo)準(zhǔn)化路徑上。它們的意義僅限于供網(wǎng)絡(luò)開發(fā)者來完成自己的實(shí)驗(yàn)。
請遵循下面鏈接中的指令來在您所選擇的平臺(tái)上下載并安裝應(yīng)用:
- WebARonARCore (Android, https://github.com/google-ar/WebARonARCore)
- WebARonARKit (iOS, https://github.com/google-ar/WebARonARKit)
查看示例:
下面的示例要求 WebARonARCore 或 WebARonARKit,使用 three.ar.js 進(jìn)行搭建,three.ar.js 是為 three.js 所準(zhǔn)備的 helper 庫:
- SpawnAtCamera (https://google-ar.github.io/three.ar.js/examples/spawn-at-camera.html)
- SpawnAtSurface (https://google-ar.github.io/three.ar.js/examples/spawn-at-surface.html)
- Reticle (https://google-ar.github.io/three.ar.js/examples/reticle.html)
- Boilerplate (https://google-ar.github.io/three.ar.js/examples/boilerplate.html)
想要為 WebARonARCore 和 WebARonARKit 搭建屬于自己的 AR 體驗(yàn),請遵循 three.ar.js的操作指引:
https://github.com/google-ar/three.ar.js#threearjs
【本文是51CTO專欄機(jī)構(gòu)“谷歌開發(fā)者”的原創(chuàng)稿件,轉(zhuǎn)載請聯(lián)系原作者(微信公眾號:Google_Developers)】