【AR开发】ARCore简介

【AR开发】ARCore简介
【AR开发】ARCore官方示例(Android)

1、什么是 ARCore?

ARCore — Google 的 AR 开发者平台 — 为创建 AR 体验提供了简单而强大的工具。
ARCore — Google’s AR developer platform — provides simple yet powerful tools for creating AR experiences.

官网地址:
https://arvr.google.com/arcore/
https://developers.google.cn/ar/
https://developers.google.com/ar/
在这里插入图片描述
ARCore 是 Google 用于构建增强现实体验的平台。ARCore 使用不同的 API 使您的手机能够感知环境、了解世界并与信息交互。一些 API 可在 Android 和 iOS 上使用,以实现共享的 AR 体验。

ARCore 使用三个关键功能将虚拟内容与通过手机摄像头看到的现实世界相结合:

  • 运动跟踪:允许手机了解并跟踪其相对于世界的位置。
  • 环境理解:使手机能够检测所有类型表面的大小和位置:水平、垂直和有角度的表面,如地面、咖啡桌或墙壁。
  • 光估计:允许手机估计环境的当前照明条件。
    在这里插入图片描述

ARCore 旨在用于运行 Android 7.0 (Nougat) 及更高版本的各种合格的 Android 手机。此处提供了所有受支持设备的完整列表。

从根本上说,ARCore 正在做两件事:跟踪移动设备移动时的位置,以及建立自己对现实世界的理解。

ARCore 的运动跟踪技术使用手机的摄像头来识别有趣的点,称为特征,并跟踪这些点如何随时间移动。结合这些点的移动和手机惯性传感器的读数,ARCore 可以确定手机在空间中移动时的位置和方向。

除了识别关键点之外,ARCore 还可以检测平面,例如桌子或地板,还可以估计其周围区域的平均照明。这些功能相结合,使 ARCore 能够建立自己对周围世界的理解。
在这里插入图片描述

2、ARCore 的特点

  • 云锚

跨 Android 和 iOS 的持久、多用户、跨平台 AR 体验。

  • 录音和回放

使用预先录制的 MP4 加速开发人员工作流程并解锁新用例。

  • 深度

通过对象遮挡、沉浸和交互来增加真实感——您甚至可以进行对象和场景重建。

  • 环境 HDR

将现实世界的照明扩展到虚拟对象,使数字对象看起来就像它们实际上是现实世界场景的一部分。
在这里插入图片描述

3、ARCore 的原理

3.1 运动追踪(Motion tracking)

当您的手机在世界范围内移动时,ARCore 使用称为同步定位和地图绘制(SLAM)的过程来了解手机相对于周围世界的位置。ARCore 在捕获的相机图像中检测视觉上不同的特征,称为 特征点,并使用这些点来计算其位置变化。视觉信息与来自设备 IMU 的惯性测量值相结合,以估计相机相对于世界随时间推移的姿态(位置和方向)。

通过将渲染 3D 内容的虚拟相机的姿势与 ARCore 提供的设备相机的姿势对齐,开发人员能够从正确的角度渲染虚拟内容。渲染的虚拟图像可以叠加在从设备摄像头获得的图像之上,使其看起来好像虚拟内容是现实世界的一部分。
在这里插入图片描述

3.2 环境理解(Environmental understanding)

ARCore 通过检测特征点和平面,不断提高对现实世界环境的理解。

ARCore 寻找看似位于常见水平或垂直表面(如桌子或墙壁)上的特征点簇,并将这些表面作为几何平面提供给您的应用程序。ARCore 还可以确定每个几何平面的边界,并将该信息提供给您的应用程序。您可以使用此信息将虚拟对象放置在平面上。

由于 ARCore 使用特征点来检测平面,因此可能无法正确检测没有纹理的平面,例如白墙。

3.3 深度了解(Depth understanding)

ARCore 可以使用受支持设备的主 RGB 摄像头创建深度图,即包含有关表面与给定点之间距离的数据的图像 。您可以使用深度图提供的信息来实现身临其境和逼真的用户体验,例如使虚拟对象与观察到的表面准确碰撞,或者使它们出现在现实世界对象的前面或后面。

3.4 光估计(Light estimation)

ARCore 可以检测有关其环境照明的信息,并为您提供给定相机图像的平均强度和色彩校正。此信息可让您在与周围环境相同的条件下照亮虚拟对象,从而增加真实感。

3.5 用户互动(User interaction)

ARCore 使用命中测试来获取与手机屏幕对应的 (x,y) 坐标(通过点击或您希望应用程序支持的任何其他交互提供)并将光线投射到相机的世界视图中,返回任何几何平面或光线相交的特征点,以及该交点在世界空间中的姿态。这允许用户选择或以其他方式与环境中的对象交互。

3.6 定向点(Oriented points)

定向点可让您将虚拟对象放置在有角度的表面上。当您执行返回特征点的命中测试时,ARCore 将查看附近的特征点并使用这些特征点来尝试估计给定特征点处的表面角度。然后 ARCore 将返回一个考虑了该角度的姿势。

由于 ARCore 使用特征点簇来检测表面的角度,因此可能无法正确检测没有纹理的表面,例如白墙。

3.7 锚点和可追踪对象(Anchors and trackables)

随着 ARCore 提高对自身位置和环境的理解,姿势可能会发生变化。当您想要放置虚拟对象时,您需要定义一个 锚点以确保 ARCore 随时间跟踪对象的位置。通常,您会根据命中测试返回的姿势创建锚点,如用户交互中所述。

姿势可以改变的事实意味着 ARCore 可能会随着时间的推移更新几何平面和特征点等环境对象的位置。平面和点是一种特殊类型的对象,称为可追踪对象。顾名思义,这些是 ARCore 将随时间跟踪的对象。您可以将虚拟对象锚定到特定的可追踪对象,以确保即使设备四处移动,您的虚拟对象与可追踪对象之间的关系也能保持稳定。这意味着,如果您在桌面上放置一个虚拟的 Android 小雕像,如果 ARCore 稍后调整了与桌面相关联的几何平面的姿势,则该 Android 小雕像仍会出现在桌子顶部。

注意:为了降低 CPU 成本,请尽可能重用锚点并分离不再需要的锚点。

3.8 增强图像(Augmented Images)

增强图像是一项功能,可让您构建可以响应特定 2D 图像(例如产品包装或电影海报)的 AR 应用程序。用户可以在将手机摄像头对准特定图像时触发 AR 体验——例如,他们可以将手机摄像头对准电影海报,然后弹出一个角色并制作一个场景。

ARCore 还跟踪移动图像,例如移动公交车侧面的广告牌。

可以离线编译图像以创建图像数据库,或者可以从设备实时添加单个图像。注册后,ARCore 将检测这些图像、图像的边界,并返回相应的姿势。

3.9 分享(Sharing)

ARCore Cloud Anchor API 可让您为 Android 和 iOS 设备创建协作或多人游戏应用程序。

使用 Cloud Anchors,一台设备将一个锚点和附近的特征点发送到云端进行托管。这些锚点可以与同一环境中 Android 或 iOS 设备上的其他用户共享。这使应用程序能够渲染附加到这些锚点的相同 3D 对象,让用户同时拥有相同的 AR 体验。

4、ARCore 开发包下载

4.1 google

https://developers.google.com/ar/develop/downloads
在这里插入图片描述

4.2 GitHub

https://github.com/google-ar
在这里插入图片描述

4.3 开发环境

在这里插入图片描述
在这里插入图片描述

5、Google Play Services for AR

https://github.com/google-ar/arcore-android-sdk/releases/tag/v1.27.0

适用于 AR服务 的Google Play 服务会在应用安装期间或运行时开始 ARCore 会话时自动安装。请参阅启用 ARCore文档(Android、 NDK、 Unity for Android)了解更多信息。

谷歌播放服务AR也可以单独下载,开展积极开发过程中侧面加载任何物理上的测试ARCORE支持的设备 支持或Android模拟器的Android或 Android的NDK。
在这里插入图片描述

6、ARCore 支持的设备

https://developers.google.com/ar/devices

6.1 设备认证

支持设备意味着什么?简而言之,这意味着它已经通过了我们的认证过程。

认证很重要,因为我们希望用户对您的 AR 应用程序有良好的体验。这主要与敏感运动跟踪有关,它是通过结合相机图像和运动传感器输入来确定用户设备如何在现实世界中移动来完成的。

为了认证每台设备,我们会检查摄像头、运动传感器和设计架构的质量,以确保其按预期运行。此外,设备需要有足够强大的 CPU 与硬件设计集成,以确保良好的性能和有效的实时计算。

6.2 Android 设备模拟器

制造商 设备型号 注释
Google Any x86 or x86_64 based AVD 需要 Android 8.1 (API 27) 或更高版本。面向后的(世界)照相机被仿真与虚拟场景。不支持前置(自拍)相机。

6.3 安卓(Google Play)

这里列出的Android设备通过支持ARCORE谷歌播放服务AR ,这使得能够增强与ARCORE SDK构建现实(AR)的经验,如果满足以下条件:

(1)该设备最初随 Google Play 商店提供

(2)该设备正在运行下表中列出的最低 Android 版本,如果未列出版本,则设备必须运行 Android 7.0 或更高版本

  • “AR可选的”应用程序必须声明minSdkVersion ≥ 14 ( API等级14 )
  • “AR要求”应用必须声明minSdkVersion ≥ 24( API等级24 )

6.4 安卓(中国)

在中国,设备不随 Google Play 商店提供。此处列出的 Android 设备通过适用于 AR 的 Google Play 服务支持 ARCore,该服务可作为单独的可从以下:

应用商店下载的服务获得:

  • 小米应用商店(小米应用商店)
  • 华为应用商店(华为应用商店)
  • OPPO APP Market(OPPO软件商店)
  • Samsung Galaxy Apps (三星应用市场)
  • V-Appstore(vivo应用商店)

ARCore 支持在中国地区销售的这些设备:

制造商 设备型号 注释
Huawei Honor 10 支持多种 GPU 纹理分辨率 - 1440x1080、1280x960、480p,支持深度API
Huawei Honor Magic 2
Huawei Honor V20 支持多种 GPU 纹理分辨率 - 1440x1080、1280x960、480p
Huawei Maimang 7
Huawei Mate 20 支持深度API
Huawei Mate 20 Pro
Huawei Mate 20 X 支持深度API
Huawei Nova 3 支持多种 GPU 纹理分辨率 - 1440x1080、1280x960、480p,支持深度API
Huawei Nova 3i
Huawei Nova 4 支持多种 GPU 纹理分辨率 - 1440x1080、1280x960、480p,支持深度API
Huawei P20 支持多种 GPU 纹理分辨率 - 1440x1080、1280x960、480p,支持深度API
Huawei P20 Pro 支持多种 GPU 纹理分辨率 - 1440x1080、1280x960、480p
Huawei P30 支持多种 GPU 纹理分辨率 - 1440x1080、1280x960、480p,支持深度API
Huawei P30 Pro 支持多种 GPU 纹理分辨率 - 2048x1536、1280x960、480p,支持深度API
Huawei Porsche Design Mate RS
Huawei Porsche Design Mate 20 RS
Oppo A53 5G
Oppo A93 5G
Oppo Find X3 支持深度API
Oppo Find X3 Pro 支持深度API
Oppo F19 Pro+ 支持深度API
Oppo K5 支持多种 GPU 纹理分辨率 - 1080p、720p、480p
Oppo K7x 支持深度API
Oppo K9 5G
Oppo Reno
Oppo Reno 10x Zoom 支持多种 GPU 纹理分辨率 - 1440x1080、1280x960、480p
Oppo Reno Ace 支持深度API
Oppo Reno Ace 2
Oppo Reno Z
Oppo Reno2 支持多种 GPU 纹理分辨率 - 1440x1080、1280x960、480p
Oppo Reno2 Z 支持多种 GPU 纹理分辨率 - 1080p、720p、480p
Oppo Reno4 SE 5G 支持深度API
Oppo Reno5 5G
Oppo Reno5 K 5G
Oppo Reno5 Pro 4G
Oppo Reno5 Pro 5G 支持深度API
Oppo Reno5 Pro+ 5G 支持深度API
Oppo Reno6 Pro+ 5G
realme Q
realme Q2 Pro 5G
realme Q3 5G
realme X
realme X Lite
realme X2
realme X2 Pro
realme X3
realme X50 Pro Player
realme X7 5G
realme X7 Pro 5G
realme V5 5G
realme 真我V13 5G
realme 真我GT
realme realme GT Neo 支持深度API
Samsung Galaxy Note9
Samsung Galaxy S9 Exynos 支持多种 GPU 纹理分辨率 - 1080p、720p、480p,支持深度API
Samsung Galaxy S9 Qualcomm 支持多种 GPU 纹理分辨率 - 2048x1536、1280x960、480p,支持深度API
Samsung Galaxy S9+ Exynos 支持多种 GPU 纹理分辨率 - 1080p、720p、480p,支持深度API
Samsung Galaxy S9+ Qualcomm 支持多种 GPU 纹理分辨率 - 2048x1536、1280x960、480p,支持深度API
Samsung Galaxy S10e Exynos 支持多种 GPU 纹理分辨率 - 1080p、720p、480p,支持深度API
Samsung Galaxy S10e Qualcomm 支持多种 GPU 纹理分辨率 - 1440x1080、1280x960、480p,支持深度API
Samsung Galaxy S10 Exynos 支持多种 GPU 纹理分辨率 - 1080p、720p、480p,支持深度API
Samsung Galaxy S10 Qualcomm 支持多种 GPU 纹理分辨率 - 1440x1080、1280x960、480p,支持深度API
Samsung Galaxy S10+ Exynos 支持多种 GPU 纹理分辨率 - 1080p、720p、480p,支持深度API
Samsung Galaxy S10+ Qualcomm 支持多种 GPU 纹理分辨率 - 1440x1080、1280x960、480p,支持深度API
Samsung Galaxy S10 5G 支持多种 GPU 纹理分辨率 - 1080p、720p、480p,支持深度API,支持飞行时间 (ToF) 硬件深度传感器
Vivo iQOO
Vivo iQOO 5 5G
Vivo iQOO 5 Pro 5G
Vivo iQOO Neo3 5G
Vivo iQOO U1
Vivo iQOO Z1x
Vivo NEX S
Vivo NEX 3 4G/5G
Vivo S7 5G
Vivo X23
Vivo X50 5G
Vivo X50 Pro
Vivo X50 Pro+
Vivo V2046A
Vivo V2047A
Vivo V2056A
Vivo Y51s
Vivo Y70s
Xiaomi Mi Mix 2S 支持多种 GPU 纹理分辨率 - 1920x1440、1280x960、480p
Xiaomi Mi Mix 3
Xiaomi Mi 8 SE
Xiaomi Mi 8 SE
Xiaomi Mi 9
Xiaomi Mi 10 Ultra

6.5 iOS

云锚上支持运行iOS 11.0或更高版本的所有ARKit兼容设备。

  • 可以为面向 iOS 10.0 或更高版本的应用程序编译 Cloud Anchors SDK。
  • 比以下列表中的设备更旧的 iOS 设备不支持云锚点。

增强面孔上支持运行iOS 11.0或更高版本的所有ARKit兼容设备。

  • 可以为面向 iOS 10.0 或更高版本的应用程序编译增强人脸 SDK。
  • Augmented Faces 可能适用于比以下列表中的设备更旧的 iOS 设备,但可能无法以实时 AR 用例所需的帧速率运行。

以下 iOS 设备已经过验证,可以同时使用 Cloud Anchors 和 Augmented Faces。

产品 设备型号
iPhone iPhone 11
iPhone 11 Pro
iPhone 11 Pro Max
iPhone iPhone XR
iPhone iPhone XS and XS Max
iPhone iPhone X
iPhone iPhone 8 and 8 Plus
iPhone iPhone 7 and 7 Plus
iPhone iPhone 6S and 6S Plus
iPhone iPhone SE
iPad iPad Air 3rd Generation
iPad iPad mini 5th Generation
iPad 12.9-in. iPad Pro (1st Generation)
iPad 12.9-in. iPad Pro (2nd Generation)
iPad 12.9-in. iPad Pro (3rd Generation)
iPad 11-in. iPad Pro
iPad 10.5-in. iPad Pro
iPad 9.7-in. iPad Pro
iPad iPad (7th Generation)
iPad iPad (6th Generation)
iPad iPad (5th Generation)
iPod iPod touch (7th Generation)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

后续

如果你觉得该方法或代码有一点点用处,可以给作者点个赞;╮( ̄▽ ̄)╭
如果你感觉方法或代码不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进。o_O???
谢谢各位童鞋们啦( ´ ▽´ )ノ ( ´ ▽´ )っ!!!

Guess you like

Origin blog.csdn.net/hhy321/article/details/120756270
Recommended