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