【AR开发】ARCore简介
【AR开发】ARCore官方示例(Android)
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 能够建立自己对周围世界的理解。
跨 Android 和 iOS 的持久、多用户、跨平台 AR 体验。
使用预先录制的 MP4 加速开发人员工作流程并解锁新用例。
通过对象遮挡、沉浸和交互来增加真实感——您甚至可以进行对象和场景重建。
将现实世界的照明扩展到虚拟对象,使数字对象看起来就像它们实际上是现实世界场景的一部分。
当您的手机在世界范围内移动时,ARCore 使用称为同步定位和地图绘制(SLAM)的过程来了解手机相对于周围世界的位置。ARCore 在捕获的相机图像中检测视觉上不同的特征,称为 特征点,并使用这些点来计算其位置变化。视觉信息与来自设备 IMU 的惯性测量值相结合,以估计相机相对于世界随时间推移的姿态(位置和方向)。
通过将渲染 3D 内容的虚拟相机的姿势与 ARCore 提供的设备相机的姿势对齐,开发人员能够从正确的角度渲染虚拟内容。渲染的虚拟图像可以叠加在从设备摄像头获得的图像之上,使其看起来好像虚拟内容是现实世界的一部分。
ARCore 通过检测特征点和平面,不断提高对现实世界环境的理解。
ARCore 寻找看似位于常见水平或垂直表面(如桌子或墙壁)上的特征点簇,并将这些表面作为几何平面提供给您的应用程序。ARCore 还可以确定每个几何平面的边界,并将该信息提供给您的应用程序。您可以使用此信息将虚拟对象放置在平面上。
由于 ARCore 使用特征点来检测平面,因此可能无法正确检测没有纹理的平面,例如白墙。
ARCore 可以使用受支持设备的主 RGB 摄像头创建深度图,即包含有关表面与给定点之间距离的数据的图像 。您可以使用深度图提供的信息来实现身临其境和逼真的用户体验,例如使虚拟对象与观察到的表面准确碰撞,或者使它们出现在现实世界对象的前面或后面。
ARCore 可以检测有关其环境照明的信息,并为您提供给定相机图像的平均强度和色彩校正。此信息可让您在与周围环境相同的条件下照亮虚拟对象,从而增加真实感。
ARCore 使用命中测试来获取与手机屏幕对应的 (x,y) 坐标(通过点击或您希望应用程序支持的任何其他交互提供)并将光线投射到相机的世界视图中,返回任何几何平面或光线相交的特征点,以及该交点在世界空间中的姿态。这允许用户选择或以其他方式与环境中的对象交互。
定向点可让您将虚拟对象放置在有角度的表面上。当您执行返回特征点的命中测试时,ARCore 将查看附近的特征点并使用这些特征点来尝试估计给定特征点处的表面角度。然后 ARCore 将返回一个考虑了该角度的姿势。
由于 ARCore 使用特征点簇来检测表面的角度,因此可能无法正确检测没有纹理的表面,例如白墙。
随着 ARCore 提高对自身位置和环境的理解,姿势可能会发生变化。当您想要放置虚拟对象时,您需要定义一个 锚点以确保 ARCore 随时间跟踪对象的位置。通常,您会根据命中测试返回的姿势创建锚点,如用户交互中所述。
姿势可以改变的事实意味着 ARCore 可能会随着时间的推移更新几何平面和特征点等环境对象的位置。平面和点是一种特殊类型的对象,称为可追踪对象。顾名思义,这些是 ARCore 将随时间跟踪的对象。您可以将虚拟对象锚定到特定的可追踪对象,以确保即使设备四处移动,您的虚拟对象与可追踪对象之间的关系也能保持稳定。这意味着,如果您在桌面上放置一个虚拟的 Android 小雕像,如果 ARCore 稍后调整了与桌面相关联的几何平面的姿势,则该 Android 小雕像仍会出现在桌子顶部。
注意:为了降低 CPU 成本,请尽可能重用锚点并分离不再需要的锚点。
增强图像是一项功能,可让您构建可以响应特定 2D 图像(例如产品包装或电影海报)的 AR 应用程序。用户可以在将手机摄像头对准特定图像时触发 AR 体验——例如,他们可以将手机摄像头对准电影海报,然后弹出一个角色并制作一个场景。
ARCore 还跟踪移动图像,例如移动公交车侧面的广告牌。
可以离线编译图像以创建图像数据库,或者可以从设备实时添加单个图像。注册后,ARCore 将检测这些图像、图像的边界,并返回相应的姿势。
ARCore Cloud Anchor API 可让您为 Android 和 iOS 设备创建协作或多人游戏应用程序。
使用 Cloud Anchors,一台设备将一个锚点和附近的特征点发送到云端进行托管。这些锚点可以与同一环境中 Android 或 iOS 设备上的其他用户共享。这使应用程序能够渲染附加到这些锚点的相同 3D 对象,让用户同时拥有相同的 AR 体验。
https://developers.google.com/ar/develop/downloads
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。
https://developers.google.com/ar/devices
支持设备意味着什么?简而言之,这意味着它已经通过了我们的认证过程。
认证很重要,因为我们希望用户对您的 AR 应用程序有良好的体验。这主要与敏感运动跟踪有关,它是通过结合相机图像和运动传感器输入来确定用户设备如何在现实世界中移动来完成的。
为了认证每台设备,我们会检查摄像头、运动传感器和设计架构的质量,以确保其按预期运行。此外,设备需要有足够强大的 CPU 与硬件设计集成,以确保良好的性能和有效的实时计算。
制造商 | 设备型号 | 注释 |
---|---|---|
Any x86 or x86_64 based AVD | 需要 Android 8.1 (API 27) 或更高版本。面向后的(世界)照相机被仿真与虚拟场景。不支持前置(自拍)相机。 |
这里列出的Android设备通过支持ARCORE谷歌播放服务AR ,这使得能够增强与ARCORE SDK构建现实(AR)的经验,如果满足以下条件:
(1)该设备最初随 Google Play 商店提供
(2)该设备正在运行下表中列出的最低 Android 版本,如果未列出版本,则设备必须运行 Android 7.0 或更高版本
在中国,设备不随 Google Play 商店提供。此处列出的 Android 设备通过适用于 AR 的 Google Play 服务支持 ARCore,该服务可作为单独的可从以下:
应用商店下载的服务获得:
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 |
云锚上支持运行iOS 11.0或更高版本的所有ARKit兼容设备。
增强面孔上支持运行iOS 11.0或更高版本的所有ARKit兼容设备。
以下 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???
谢谢各位童鞋们啦( ´ ▽´ )ノ ( ´ ▽´ )っ!!!