ARCore系列教程(1)---创建第一个原生AR应用

AR全新教程专栏--【ARCore】帮助开发者了解如何使用ARCore在Android平台构建AR应用。

关于ARCore

ARCore 是 Google 的增强现实体验构建平台。ARCore 利用不同的 API 让用户的手机能够感知其环境、理解现实世界并与信息进行交互。 ARCore 使用三个主要功能将虚拟内容与通过手机摄像头看到的现实世界整合:

  • 运动跟踪:让手机可以理解和跟踪它相对于现实世界的位置。

  • 环境理解:让手机可以检测各类表面(例如地面、咖啡桌或墙壁等水平、垂直和倾斜表面)的大小和位置。

  • 光照估计:手机可以估测环境当前的光照条件。

支持的设备:ARCore 可以在运行 Android 7.0 (Nougat) 及更高版本系统的手机上。

  • Android 7.0 或更高版本 (个别型号需要更高的版本)

  • 运行在搭载 Google Play 应用商店的设备上

  • Google Play 应用商店需要网络链接才能更新 ARCore

在中国,设备不搭载 Google 应用商店。 但可以从以下应用商店中选择其一来安装 ARCore:

  • Xiaomi app store (小米应用商店)

  • Huawei Apps Gallery (华为应用商店)

  • OPPO APP Market (OPPO 软件商店)

  • Samsung Galaxy Apps (三星应用市场)

  • V-Appstore (vivo应用商店)

对于支持的具体手机机型:https://developers.google.com/ar/discover/supported-devices

工作原理

从本质上讲,ARCore 在做两件事:在移动设备移动时跟踪它的位置和构建自己对现实世界的理解。

ARCore 的运动跟踪技术使用手机摄像头标识兴趣点(称为特征点),并跟踪这些点随着时间变化的移动。将这些点的移动与手机惯性传感器的读数组合,ARCore 可以在手机移动时确定它的位置和屏幕方向。

除了标识关键点外,ARCore 还会检测平坦的表面(例如桌子或地面),并估测周围区域的平均光照强度。这些功能共同让 ARCore 可以构建自己对周围世界的理解。

借助 ARCore 对现实世界的理解,你能够以一种与现实世界无缝整合的方式添加物体、注释或其他信息。 比如可以将一只打盹的小猫放在咖啡桌的一角,或者利用艺术家的生平信息为一幅画添加注释。 运动跟踪意味着你可以移动和从任意角度查看这些物体,即使你转身离开房间,当你回来后,小猫或注释还会在你添加的地方。

1. 运动跟踪:当你的手机在现实世界中移动时,ARCore 会通过一个名为并行测距与映射(或 COM)的过程来理解手机相对于周围世界的位置。ARCore 会检测捕获摄像头图像中的视觉差异特征(称为特征点),并使用这些点来计算其位置变化。这些视觉信息将与设备 IMU 的惯性测量结果结合,一起用于估测摄像头随着时间推移而相对于周围世界的姿态(位置和方向)。

通过将渲染 3D 内容的虚拟摄像头的姿态与 ARCore 提供的设备摄像头的姿态对齐,开发者能够从正确的透视角度渲染虚拟内容。渲染的虚拟图像可以叠加到从设备摄像头获取的图像上,让虚拟内容看起来就像现实世界的一部分一样。

2. 环境理解:ARCore 会通过检测特征点和平面来不断改进它对现实世界环境的理解。ARCore 可以查找看起来位于常见水平或垂直表面(例如桌子或墙)上的成簇特征点,并让这些表面可以由你的应用用作平面。ARCore 也可以确定每个平面的边界,并将该信息提供给您的应用。可以使用此信息将虚拟物体置于平坦的表面上。由于 ARCore 使用特征点来检测平面,因此可能无法正确检测像白墙一样没有纹理的平坦表面。

3. 光估测:ARCore 可以检测其环境光线的相关信息,并为你提供给定摄像头图像的平均光强度和色彩校正。此信息让你能够使用与周围环境相同的光照来照亮你的虚拟物体,提升它们的真实感。

Google提供了可从多个开发平台(Android [ Java ],Web [ JavaScript ],Unreal [ C ++ ]和Unity [ C# ])访问的ARCore ,从而为开发人员提供了足够的灵活性和选项,可以在各种平台上构建应用程序。

在本文中,我们将重点介绍如何设置Android开发工具并为Android构建ARCore应用程序。

Step 1:安装Android Studio

Android Studio是用于编码和部署Android应用程序的开发环境。因此,它包含构建和将应用程序部署到Android设备所需的核心工具集。毕竟,ARCore需要安装到物理设备上才能进行测试:

1. 访问https://developer.android.com/studio。

2. 单击绿色的“ 下载ANDROID STUDIO”按钮。

3. 同意条款和条件并按照说明进行下载。

4. 文件下载完成后,为你的系统运行安装程序。

5. 请按照安装对话框上的说明进行操作。如果要在Windows上进行安装,请确保设置了一个易于记忆的安装路径,以后可以轻松找到它,如以下示例所示

6. 单击其余对话框以完成安装。

7. 安装完成后,可以选择启动程序。确保选择了启动Android Studio的选项,然后单击 Finish

Android Studio内嵌OpenJDK,意味着我们至少可以省略在Windows上安装Java的步骤。

我们已经安装了Android Studio,但还没有完成。我们仍然需要安装对于构建和部署必不可少的SDK工具。如下所示:

1. 如果以前从未安装过Android SDK,则在Android Studio首次启动时会提示你安装SDK,如下所示:

2. 选择SDK组件,并确保再次将安装路径设置为众所周知的位置

Step 2:安装ARCore

当然,为了使用或构建任何ARCore应用程序,我们将需要为所选平台安装SDK。按照给定的说明安装ARCore SDK:

我们将使用Git直接从源代码中提取我们需要的代码。可以在https://git-scm.com/book/en/v2/Getting-Started-Installing-Git上了解有关Git以及如何在平台上安装Git的更多信息,  或使用Google搜索:开始安装Git。确保在Windows上安装时,选择默认值,然后让安装程序设置PATH 环境变量。

1. 打开命令提示符或Windows Shell,然后导航到Android(C:Android在Windows上)安装文件夹。

2. 输入以下命令:

git clone https://github.com/google-ar/arcore-android-sdk.git

3. 这将下载ARCore SDK并将其安装到名为的新文件夹中  arcore-android-sdk,如下图所示:

 

 

Step 3:在手机上安装ARCore服务

现在,在我们的开发环境中安装了ARCore SDK之后,我们就可以在测试设备上安装ARCore服务了。使用以下步骤在你的设备上安装ARCore服务:

 1. 通过执行以下操作,获取移动设备并启用开发人员和调试选项:

(1)打开设置app

(2)选择系统

(3)滚动到底部,选择关于手机

(4)再次滚动到底部,点击Build number seven times

(5)回到前面的屏幕,在底部附近选择Developer options

(6)选择USB调试

2.https://github.com/google-ar/arcore-android-sdk/releases/download/sdk-preview/arcore-preview.apk

将ARCore服务APK下载到Android安装文件夹

3.  用USB连接你的移动设备。如果这是你的第一次连接,则可能需要等待几分钟才能安装驱动程序。

4. 返回命令提示符或Windows Shell并运行以下命令:

adb install -r -d arcore-preview.apk
//ON WINDOWS USE:
sdkplatform-toolsadb install -r -d arcore-preview.apk

Step 4:构建和部署

既然我们已经完成了上述所有繁琐的安装工作,现在就可以构建一个示例应用程序并将其部署到你的Android设备上了。让我们回到Android Studio,按照以下步骤开始:

1. 浏览并选择Androidarcore-android-sdksamplesjava_arcore_hello_ar文件夹,如下所示:

2. 单击 OK。如果这是你第一次运行此项目,则将遇到一些依赖项错误,例如此处的错误:

3. 为了解决错误,只需单击错误消息底部的链接即可。这将打开一个对话框,提示你接受然后下载所需的依赖项。继续单击链接,直到看不到其他错误为止。

4. 确保你的移动设备已连接,然后从菜单中选择运行 。这应该会在你的设备上启动该应用程序,但是你可能仍需要解决一些依赖性错误。只要记住单击链接即可解决错误。

5. demo运行效果如下图:

 

Step 5:关于代码

现在,让我们通过研究源代码来仔细查看应用程序的主要部分。请按照给定的步骤在Android Studio中打开应用程序的代码:

1. 在“ 项目”窗口中,找到并双击HelloArActivity,如图所示:

2. 加载源代码后,滚动代码至以下部分:

private void showLoadingMessage() {
 runOnUiThread(new Runnable() {
  @Override
  public void run() {
   mLoadingMessageSnackbar = Snackbar.make(
    HelloArActivity.this.findViewById(android.R.id.content),
    "Searching for surfaces...",
    Snackbar.LENGTH_INDEFINITE);
   mLoadingMessageSnackbar.getView().setBackgroundColor(0xbf323232);
   mLoadingMessageSnackbar.show();
  }
 });
}

3. 请注意文本"Searching for surfaces.."。选择此文本并将其更改为"Searching for ARCore surfaces.."。该showLoadingMessage功能是显示加载消息的助手。在内部,此函数调用runOnUIThread,依次创建的新实例,Runnable然后添加内部run函数。我们这样做是为了避免UI上的线程阻塞,这是主要的禁止。该run函数内部是设置消息传递Snackbar并显示消息的位置。

4. 点击运行,确保设备上改信息已更改。

下一部分我们通过Unity来构建一个ARCore应用!

关于更多机器学习、人工智能、增强现实资源和技术干货,可以关注公众号:AIRX社区,共同学习,一起进步!

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