ARCore 中的新变化和值得注意的变化。
ARCore v1.48.0 中的新变化
全面支持 Unity 6 和 AR Foundation 6
适用于 Unity 的 AR Foundation 的 ARCore 扩展现在支持 AR Foundation 6。您可以使用以下安装方法获取适用于 AR Foundation 的 ARCore Extensions 的兼容版本:
- 通过
Add package from git url...
:使用https://github.com/google-ar/arcore-unity-extensions.git#arf6
, - 通过
Add package from tarball...
:使用“版本”页面中以arf6
表示的版本。
如需将项目从 AR Foundation 5 升级到 AR Foundation 6,请参阅以下指南。
破坏性更改和行为变更
- SDK 不再支持 iOS 13.0 以下版本的部署目标
ARCore v1.47.0 中的新变化
针对 Unity 6 和 AR Foundation 6 的 Beta 版支持
适用于 Unity 的 AR Foundation 的 ARCore Extensions 现在支持 AR Foundation 6 Beta 版,以便支持 Unity 6。您可以使用以下安装方法获取适用于 AR Foundation 的 ARCore Extensions 的兼容版本:
- 通过
Add package from git url...
:使用https://github.com/google-ar/arcore-unity-extensions.git#arf6
, - 通过
Add package from tarball...
:使用“版本”页面中以arf6
表示的版本。
如需将项目从 AR Foundation 5 升级到 AR Foundation 6,请参阅以下指南。
问题修复
- 修复了 Cloud Anchor 示例的平面在 Unity 6 中不透明的问题
其他变更
- ARCore Extensions GitHub 代码库的
main
分支已改为跟踪arf5
分支。
ARCore v1.46.0 中的新变化
ARCore SDK 的 targetSdkVersion
的变更
ARCore 的 targetSdkVersion
已更新为 Android API 级别 35。如果您的应用未指定 targetSdkVersion
,则由于清单合并,应用的 targetSdkVersion
将变为 35。
对于 Unity,在 Unity 项目的 Project Settings > Player > Android > Other Settings 中指定 Target API Level 将替换 ARCore 的 targetSdkVersion
值。
ARCore v1.45.0 中的新变化
Flash Mode API
ARCore 现在支持启用设备的手电筒模式,从而在黑暗环境中实现更出色的感知功能。
Android (Kotlin/Java)
Config.FlashMode
:用于在设备上启用或停用闪光灯的配置选项。- 如需详细了解如何检测闪光灯功能以及如何启用手电筒模式,请参阅开发者指南。
Android NDK (C)
ArFlashMode
:用于在设备上启用或停用闪光灯的配置选项。- 如需详细了解如何检测闪光灯功能以及如何启用手电筒模式,请参阅开发者指南。
适用于 Unity AR Foundation 的 ARCore 扩展支持 AR Foundation 5
适用于 AR Foundation 的 ARCore Extensions 现在正式支持 AR Foundation 5。使用 AR Foundation 5(Unity 版本 2022 和 2023 上的经过验证的版本)时,请使用以下安装方法获取适用于 AR Foundation 的 ARCore Extensions 的兼容版本:
- 通过
Add package from git url...
:使用https://github.com/google-ar/arcore-unity-extensions.git#arf5
, - 通过
Add package from tarball...
:使用版本页面中以arf5
表示的版本。
仍使用 AR Foundation 4 版的项目可以使用以下安装方法:
- 通过
Add package from git url...
:使用https://github.com/google-ar/arcore-unity-extensions.git#arf4
, - 通过
Add package from tarball...
:使用版本页面中以arf4
表示的版本。
如需将项目从 AR Foundation 4 升级到 AR Foundation 5,请参阅迁移指南。
不再使用 Beta 版支持中的自定义脚本符号,例如 ARCORE_USE_ARF_5
。
ARCore v1.44.0 中的新变化
此版本没有任何新功能。
ARCore v1.43.0 中的新变化
Geospatial Creator 迁移中的 Places API
地理空间创作者的搜索功能现在使用 Google 的 New Places API。如需使用搜索功能,请在 Google Cloud 控制台中启用“Places API(新)”。
ARCore v1.42.0 中的新变化
在适用于 Unity 的 Geospatial Creator 中对齐到功能块
ARGeospatialCreatorAnchor
编辑器“检查器”面板中新增了“贴靠到功能块”按钮。此按钮会将地形或屋顶锚点的仅限编辑器的海拔值设置为 3D 图块几何图形顶部的锚点当前纬度和经度。请注意,此属性不会影响运行时的行为。这有助于调整锚点在编辑器中的显示位置,使其与运行时的显示位置保持一致。
ARCore v1.41.0 中的新变化
Geospatial Creator API
适用于 Unity 的 Geospatial Creator 现在支持在编辑器模式下创建和操作 Geospatial Creator 对象。Geospatial Creator API 指南介绍了新推出的类和 API。
支持 AR Foundation 版本 5.x(Beta 版)
适用于 Unity 的 AR Foundation 的 ARCore 扩展现在支持 AR Foundation 版本 5.x。如需将现有项目迁移到 AR Foundation,请参阅迁移指南。
ARCore v1.40.0 中的新变化
iOS 上的场景语义
Scene Semantics API 现已在 ARCore SDK for iOS 以及面向 iOS 平台的 AR Foundation 的 ARCore Extensions 中推出。借助 Scene Semantics API,开发者可以实时了解用户周围的场景,将像素标记为 11 类户外组件。如需了解详情,请参阅场景语义简介。
iOS
Unity(AR Foundation)
在适用于 Unity 的 Geospatial Creator 中搜索地图注点
适用于 Unity 的 Geospatial Creator 现在支持使用文本搜索来定位仿真 3D 图块视图。如需了解详情,请参阅在 Geospatial Creator 中搜索地图注点。
ARCore v1.39.0 中的新变化
此版本没有任何新功能。
ARCore v1.38.0 中的新变化
此版本没有任何新功能。
ARCore v1.37.0 中的新变化
场景语义
Scene Semantics 可提供有关周围场景的更多详细信息,让您更轻松地了解用户周围的世界。Scene Semantics 会在相机图片画面上运行机器学习模型,并提供一个语义图像,其中每个像素都对应于 11 个户外概念标签之一。
如需了解详情,请参阅场景语义简介和 semantics_java 示例应用。
Streetscape Geometry
Streetscape Geometry 是一项新的 ARCore Geospatial API,可在启用 Geospatial API 后提供用户周围区域内建筑物和地形的几何图形。
Android (Kotlin/Java)
请参阅街景几何图形开发者指南 (Kotlin/Java)。此外,geospatial_java 示例应用已更新为包含街景几何图形。
Android NDK (C)
如需了解详情,请参阅街景几何图形开发者指南 (C)。
Unity(AR Foundation)
如需了解详情,请参阅街景几何图形开发者指南 (Unity)。
iOS
如需了解详情,请参阅街景几何图形开发者指南 (iOS)。此外,GeospatialExample 应用已更新为包含街景几何图形。
GARStreetscapeGeometry
:GARStreetscapeGeometry.mesh
提供 3D 网格。GARStreetscapeGeometry.meshTransform
提供几何图形相对于会话世界空间的原点转换。GARStreetscapeGeometry.trackingState
会维护跟踪状态。GARStreetscapeGeometry.type
表示是地形几何图形还是建筑物几何图形。GARStreetscapeGeometry.quality
提供几何图形质量。GARStreetscapeGeometry.identifier
提供几何图形的唯一标识符。GARSession.createAnchorOnStreetscapeGeometry:transform:error:
会在指定位置和屏幕方向创建一个锚点。GARSession.raycastStreetscapeGeometry:direction:error:
会对场景中加载的街景几何图形执行光线投射。
屋顶锚点
屋顶锚点是一种新的地理空间锚点类型,可帮助您将内容锚定到屋顶。
Android (Kotlin/Java)
请参阅地理空间锚点 (Java)。此外,geospatial_java 示例应用已更新为包含屋顶锚点。
Android NDK (C)
如需了解详情,请参阅地理空间锚点 (C)。
Unity(AR Foundation)
如需了解详情,请参阅地理空间锚点。此外,地理空间示例已更新为包含屋顶锚点。
ARAnchorManagerExtensions.ResolveAnchorOnRooftopAsync()
会为场景中的游戏对象提供一个锚点,该锚点位于指定的纬度、经度、屋顶上方海拔和方向。ResolveAnchorOnRooftopPromise
ResolveAnchorOnRooftopResult
iOS
如需了解详情,请参阅地理空间锚点 (iOS)。此外,GeospatialExample 应用已更新为包含屋顶锚点。
GARSession.createAnchorWithCoordinate:altitudeAboveRooftop:eastUpSouthQAnchor:completionHandler:error:
在指定位置创建屋顶锚点,并指定相对于屋顶的海拔(以米为单位)和相对于地球的方向。GARCreateAnchorOnRooftopFuture
用于存储解析屋顶锚点的异步状态。GARRooftopAnchorState
描述解析屋顶锚点的状态。
地理深度
在 VPS 覆盖的区域内,如果 ARCore 会话中同时启用了 Depth API 和 Streetscape Geometry 模式,系统会使用 Streetscape Geometry 改进生成的深度图像。Streetscape Geometry 会集成到每个生成的深度图像中,范围可达 65.535 米。调用 Depth API 时无需进行任何更改即可获享此优势。
Android (Kotlin/Java)
如需了解详情,请参阅地理空间深度 (Java)。
Android NDK (C)
如需了解详情,请参阅地理空间深度 (C)。
Unity(AR Foundation)
如需了解详情,请参阅地理空间深度 (C)。
iOS
场景语义目前不适用于 iOS。
支持 Vulkan 渲染
ARCore 现在通过 AHardwareBuffer
公开相机图片,提供 Vulkan 渲染支持。您可以将此硬件缓冲区绑定到 VkImage
,以使用此硬件缓冲区。
如需了解详情,请参阅使用 Vulkan 渲染 ARCore 应用和 hello_ar_vulkan_c 示例应用。
Android (Kotlin/Java)
Android NDK (C)
Unity(AR Foundation)
目前,使用 AR Foundation 的 Unity 不支持 Vulkan 渲染。
电子防抖 (EIS)
您可以将 ARCore 配置为使用电子防抖功能,以平滑摄像头帧,从而提供更流畅的用户体验。
如需了解详情,请参阅启用电子防抖和 hello_eis_kotlin 示例应用。
Android (Kotlin/Java)
Config.ImageStabilizationMode
Frame.transformCoordinates3d()
Session.isImageStabilizationModeSupported()
- 有一个已知问题:使用
OPENGL_NORMALIZED_DEVICE_COORDINATES
以外的二维坐标调用Frame.transformCoordinates3d()
会导致崩溃,而不是抛出IllegalArgumentException
。此问题将在下一个版本中得到解决。
Android NDK (C)
ArImageStabilizationMode
ArFrame_transformCoordinates3d()
ArSession_isImageStabilizationModeSupported()
- 有一个已知问题:使用
AR_COORDINATES_2D_OPENGL_NORMALIZED_DEVICE_COORDINATES
以外的二维坐标调用ArFrame_transformCoordinates3d()
会导致应用中止,而不是返回AR_ERROR_INVALID_ARGUMENT
。此问题将在下一个版本中得到解决。
Unity(AR Foundation)
EIS 目前不适用于使用 AR Foundation 的 Unity。
iOS
EIS 目前不适用于 iOS。
ARCore 异步 API
此版本引入了新的 ARCore 异步 API,以遵循 Future 和 Promise 范式,提高处理异步操作时的工效学。
Android (Kotlin/Java)
- 解析地形锚点:使用
Earth.resolveAnchorOnTerrainAsync()
获取ResolveAnchorOnTerrainFuture
。旧符号Earth.resolveAnchorOnTerrain()
已废弃,可能会在较高版本的 ARCore 中移除。 - 解析云锚点:使用
Session.resolveCloudAnchorAsync()
获取ResolveCloudAnchorFuture
。旧符号Session.resolveCloudAnchor()
已废弃,可能会在较高版本的 ARCore 中移除。 - 托管 Cloud 锚点:使用
Session.hostCloudAnchorAsync()
获取HostCloudAnchorFuture
。旧符号Session.hostCloudAnchor()
和Session.hostCloudAnchorWithTtl()
已废弃,可能会在较高版本的 ARCore 中移除。 - 检查 APK 可用性:使用
ArCoreApk.checkAvailabilityAsync()
注册回调。旧符号ArCoreApk.checkAvailability()
尚未废弃。
Android NDK (C)
- 解析地形锚点:使用
ArEarth_resolveAnchorOnTerrainAsync()
获取ArResolveAnchorOnTerrainFuture
或使用ArResolveAnchorOnTerrainCallback
。旧符号ArEarth_resolveAndAcquireNewAnchorOnTerrain()
已废弃,可能会在较高版本的 ARCore 中移除。 - 解析 Cloud 锚点:使用
ArSession_resolveCloudAnchorAsync()
获取ArResolveCloudAnchorFuture
,或使用ArResolveCloudAnchorCallback
。旧符号ArSession_resolveAndAcquireNewCloudAnchor()
已废弃,可能会在较高版本的 ARCore 中移除。 - 托管 Cloud 锚点:使用
ArSession_hostCloudAnchorAsync()
获取ArHostCloudAnchorFuture
,或使用ArHostCloudAnchorCallback
。旧符号ArSession_hostAndAcquireNewCloudAnchor()
和ArSession_hostAndAcquireNewCloudAnchorWithTtl()
已废弃,可能会在较高版本的 ARCore 中移除。 - 检查 APK 可用性:使用
ArCoreApk_checkAvailabilityAsync()
注册回调。旧符号ArCoreApk_checkAvailability()
尚未废弃。
Unity(AR Foundation)
- 解析地形锚点:使用
ARAnchorManagerExtensions.ResolveAnchorOnTerrainAsync()
获取ResolveAnchorOnTerrainPromise
。旧符号ARAnchorManagerExtensions.ResolveAnchorOnTerrain()
已废弃,可能会在较高版本的 ARCore 中移除。 - 解析云锚点:使用
ARAnchorManagerExtensions.ResolveCloudAnchorAsync()
获取ResolveCloudAnchorPromise
。旧符号ARAnchorManagerExtensions.ResolveCloudAnchorId()
已废弃,可能会在较高版本的 ARCore 中移除。 - 托管 Cloud 锚点:使用
ARAnchorManagerExtensions.HostCloudAnchorAsync()
获取HostCloudAnchorPromise
。旧的ARAnchorManagerExtensions.HostCloudAnchor()
符号已废弃,可能会在较高版本的 ARCore 中移除。
iOS
- 解析地形锚点:使用
GARSession.createAnchorWithCoordinate:altitudeAboveTerrain:eastUpSouthQAnchor:completionHandler:error:
获取GARCreateAnchorOnTerrainFuture
。旧符号GARSession.createAnchorWithCoordinate:altitudeAboveTerrain:eastUpSouthQAnchor:error:
已废弃,可能会在较高版本的 ARCore 中移除。 - 解析云锚点:使用
GARSession.resolveCloudAnchorWithIdentifier:completionHandler:error:
获取GARResolveCloudAnchorFuture
。旧符号GARSession.resolveCloudAnchorWithIdentifier:error:
已废弃,可能会在较高版本的 ARCore 中移除。 - 托管 Cloud 锚点:使用
GARSession.hostCloudAnchor:TTLDays:completionHandler:error:
获取GARHostCloudAnchorFuture
。旧符号GARSession.hostCloudAnchor:error:
和GARSession.hostCloudAnchor:TTLDays:error:
已废弃,可能会在较高版本的 ARCore 中移除。
ARCore v1.36.0 中的新变化
iOS 上的 Swift Package Manager 支持
ARCore SDK for iOS 现在正式支持 Swift Package Manager。如需了解如何使用 Swift Package Manager 与 ARCore 集成,请参阅在 iOS 应用中启用 AR。
ARCore v1.35.0 中的新变化
地理空间姿势精度将航向替换为偏航
现在,所有地理空间姿势都会显示其偏航旋转的方向准确度,而取代了航向准确度。
- Java/Kotlin:将
GeospatialPose.getHeading()
替换为GeospatialPose.getEastUpSouthQuaternion()
,将GeospatialPose.getHeadingAccuracy()
替换为GeospatialPose.getOrientationYawAccuracy()
。 - C:将
ArGeospatialPose_getHeading()
替换为ArGeospatialPose_getEastUpSouthQuaternion()
,将ArGeospatialPose_getHeadingAccuracy()
替换为ArGeospatialPose_getOrientationYawAccuracy()
。 - iOS:将
GARGeospatialTransform.heading
替换为GARGeospatialTransform.eastUpSouthQTarget
,将GARGeospatialTransform.headingAccuracy
替换为GARGeospatialTransform.orientationYawAccuracy
。 - Unity:将
GeospatialPose.Heading
替换为GeospatialPose.EunRotation
,将GeospatialPose.HeadingAccuracy
替换为GeospatialPose.OrientationYawAccuracy
。
其他更改和更新
如需了解其他更改、 bug 修复和性能改进,请参阅版本说明:
- Android 版 ARCore SDK 版本说明
- 适用于 Android NDK 的 ARCore 版本说明
- ARCore SDK for iOS 版本说明
- 适用于 AR Foundation 的 ARCore Extensions 版本说明
ARCore v1.34.0 中的新变化
检查设备当前所在位置是否支持地理空间功能
Geospatial API 现在可以在运行时检查指定水平位置的 Visual Positioning System (VPS) 可用性。即使没有活跃的 AR 会话,也可以使用此 API:例如,仅在 VPS 可用时显示“进入 AR”按钮。
- Java/Kotlin:
Session.checkVpsAvailabilityAsync()
- C:
ArSession_checkVpsAvailabilityAsync()
- iOS:
GARSession.checkVPSAvailabilityAtCoordinate:completionHandler:
- Unity(AR Foundation):
AREarthManager.CheckVpsAvailability()
地理空间姿势方向
地理空间姿势现在会显示其在 3D 空间中的方向。
- Java/Kotlin:
feedbackGeospatialPose.getEastUpSouthQuaternion()
- C:
ArEarth_getGeospatialPose()
- iOS:
GARGeospatialTransform.eastUpSouthQTarget
- Unity:
GeospatialPose.EunRotation()
地理空间姿势转换
地理空间姿势现在可以相互转换为世界空间 (AR) 姿势。
如需从 AR 姿势获取地理空间姿势,请执行以下操作:
- Java/Kotlin:
Earth.getGeospatialPose()
- C:
ArEarth_getGeospatialPose()
- iOS:
GARSession.geospatialTransformFromTransform:error:
- Unity:
AREarthManager.Convert(Pose)
如需从地理空间姿势获取 AR 姿势,请执行以下操作:
- Java/Kotlin:
Earth.getPose()
- C:
ArEarth_getPose()
- iOS:
GARSession.transformFromGeospatialCoordinate:altitude:eastUpSouthQTarget:error:
- Unity:
AREarthManager.Convert(GeospatialPose)
从这些函数获取的地理空间姿势的航向值设为零。请改用以下代码:
- Android(Java/Kotlin/C):姿势的 EUS 四元数
- iOS:相应姿势的
eastUpSouthQTarget
- Unity:姿势的
EunRotation
其他更改和更新
如需了解其他更改、 bug 修复和性能改进,请参阅版本说明:
- Android 版 ARCore SDK 版本说明
- 适用于 Android NDK 的 ARCore 版本说明
- ARCore SDK for iOS 版本说明
- 适用于 AR Foundation 的 ARCore Extensions 版本说明
ARCore v1.33.0 中的新变化
新的 Cloud Anchors 端点
- 现在,如需使用云锚点,您必须启用 ARCore API,而不是旧版 ARCore Cloud Anchor API(现已废弃)。如需支持较低的应用版本,您可以在转换期间同时启用这两种方式。使用 ARCore SDK 1.32.0 及更低版本构建的应用将以旧版 API 为目标平台,而使用 ARCore SDK 1.33.0 及更高版本构建的应用将以新版 API 为目标平台。请注意以下几点:
- 新 API 使用域名
arcore.googleapis.com
,而不是arcorecloudanchor.googleapis.com
。 - 如果您使用的 API 密钥受 API 限制,则必须允许使用 ARCore API。
- 如果您要从后端向 ARCore Cloud Anchor Management API 发送请求,则在启用 ARCore API 后,还必须将域名更改为
arcore.googleapis.com
。 - 我们将继续支持旧版 API/端点,直至 2023 年 8 月。
- 如需了解详情,请参阅 ARCore 1.33 Cloud Anchor 端点变更。
- 新 API 使用域名
地形锚点
- Geospatial Terrain anchor API 会在相对于水平位置地形的指定水平位置和海拔处创建一个锚点。
其他更改和更新
如需了解其他更改、 bug 修复和性能改进,请参阅版本说明:
- Android 版 ARCore SDK 版本说明
- 适用于 Android NDK 的 ARCore 版本说明
- ARCore SDK for iOS 版本说明
- 适用于 AR Foundation 的 ARCore Extensions 版本说明
ARCore v1.32.0 中的新变化
此版本没有任何新功能。
Android 和 Android 版 Unity (AR Foundation)
- ARCore 的
targetSdkVersion
已更新为 Android API 级别 32。如果您的应用未指定targetSdkVersion
,则由于清单合并,应用的targetSdkVersion
将变为 32。- Android SDK:在项目的
build.gradle
或AndroidManifest.xml
中指定targetSdkVersion
会替换 ARCore 的targetSdkVersion
值。 - AR Foundation for Android:在 Unity 项目的 Project Settings(项目设置)> Player(玩家)> Android > Other Settings(其他设置) 中指定 Target API Level(目标 API 级别)将替换 ARCore 的
targetSdkVersion
值。
- Android SDK:在项目的
其他更改和更新
如需了解其他更改、 bug 修复和性能改进,请参阅版本说明:
- Android 版 ARCore SDK 版本说明
- 适用于 Android NDK 的 ARCore 版本说明
- ARCore SDK for iOS 版本说明
- 适用于 AR Foundation 的 ARCore Extensions 版本说明
ARCore v1.31.0 中的新变化
ARCore Geospatial API
新的 ARCore Geospatial API 利用 Google 地球 3D 模型中的数据和 Google 地图中的街景图片数据,让您的应用能够提供沉浸式、全球范围的基于位置的增强现实体验。
如需查看平台专用开发者文档,并开始使用新的 Geospatial API,请参阅 ARCore Geospatial API 简介。
远距离深度
ARCore Depth API 现已经过优化,可实现更长距离的深度感知,从而扩大可表示的深度观察范围。系统会使用深度图像的所有 16 位,提供的最大范围为 65535 毫米。以前,系统仅填充 13 位,上限为 8191 毫米。
如需查看特定于平台的开发者文档,并了解 Depth API 的变更,请参阅深度方面的变更。
平台专用说明
Android
新的 ARCore Geospatial API
Java
Earth
提供以相对于地球的坐标进行本地化处理的功能。Earth.createAnchor()
会在相对于地球的指定位置和方向创建新的Anchor
。
Earth.Earthstate
描述Earth
的当前状态,包括其TrackingState
。GeospatialPose
用于描述相对于地球的特定位置、海拔和罗盘方位。
C
ArEarth
提供以相对于地球的坐标进行本地化处理的功能。ArEarth_acquireNewAnchor()
会在相对于地球的指定位置和方向创建新的Anchor
。ArEarthState
描述ArEarth
的当前状态,包括其ArTrackingState
。
ArGeospatialPose
用于描述相对于地球的特定位置、海拔和罗盘方位。
更新了 ARCore Depth API
Java
- Depth API 函数调用已更改:
Frame.acquireDepthImage
至Frame.acquireDepthImage16Bits
。Frame.acquireRawDepthImage
至Frame.acquireRawDepthImage16Bits
。- 这两个调用的输出图片格式已从
android.graphics.ImageFormat#DEPTH16
更改为android.hardware.HardwareBuffer#D_16
。 - 深度仍表示为以毫米为单位的 16 位整数,但现在所有 16 位都用于表示深度,因此可表示的最大范围为 8191 毫米到 65535 毫米。
- Depth API 函数调用
Frame.acquireDepthImage
和Frame.acquireRawDepthImage
已废弃。请改用Frame.acquireDepthImage16Bits
和Frame.acquireRawDepthImage16Bits
。
- Depth API 函数调用已更改:
C
- Depth API 函数调用已更改:
ArFrame_acquireDepthImage
至ArFrame_acquireDepthImage16Bits
。ArFrame_acquireRawDepthImage
-ArFrame_acquireRawDepthImage16Bits
- 这两个调用的输出图片格式已从
AR_IMAGE_FORMAT_DEPTH16
更改为AR_IMAGE_FORMAT_D_16
。 - 深度仍表示为以毫米为单位的 16 位整数,但现在所有 16 位都用于表示深度,因此可表示的最大范围为 8191 毫米到 65535 毫米。
- Depth API 函数调用
ArFrame_acquireDepthImage
和ArFrame_acquireRawDepthImage
已废弃。请改用ArFrame_acquireDepthImage16Bits
和ArFrame_acquireRawDepthImage16Bits
。
- Depth API 函数调用已更改:
Unity(AR Foundation)
新的 ARCore Geospatial API:
AREarthManager
提供以相对于地球的坐标进行本地化处理的功能。EarthTrackingState
获取最新帧的地球跟踪状态。EarthState
用于维护 Google 地球错误状态。
GeospatialPose
用于描述相对于地球的特定位置、海拔和罗盘方位。ARGeospatialAnchor
为场景中的游戏对象提供锚点,该锚点在相对于地球的位置和方向下指定。
iOS
新的 ARCore Geospatial API:
GAREarth
提供相对于地球的本地化。GAREarthState.earthState
用于管理错误状态和条件。GAREarthState.trackingState
会维护地理空间数据所需的跟踪状态。
GARGeospatialTransform
全局转换的表示,包括位置、航向、海拔和精度估算值。GARSession.createAnchorWithCoordinate:altitude:eastUpSouthQAnchor:error:
在相对于地球的指定位置和方向创建地理空间锚点。
其他变更
如需了解其他更改、 bug 修复和性能改进,请参阅版本说明:
- Android 版 ARCore SDK 版本说明
- 适用于 Android NDK 的 ARCore 版本说明
- ARCore SDK for iOS 版本说明
- 适用于 AR Foundation 的 ARCore Extensions 版本说明
ARCore v1.30.0 中的新变化
此版本没有任何新功能。
Android
- 使用
@NonNull
和@Nullable
为 API 返回值添加了注解。 - 更新了用于构建示例的构建工具版本:Gradle 已更新为 7.0.2,Android Gradle 插件已更新为 7.0.4。现有 ARCore 应用无需升级这些工具。如需了解新功能、已知问题和不兼容性信息,请参阅 Android 文档中的 Android Gradle 插件。
Unity(AR Foundation)
添加了新的
arcore-unity-extensions-without-edm4u.tgz
版本。此版本变体不会捆绑 External Dependency Manager for Unity 等外部依赖项,并且允许升级到 EDM。使用此 Lite 版本可能会解决使用 Firebase 库时出现的不兼容性问题。如需开始使用,请参阅 AR Foundation 的 ARCore Extensions 安装说明。将 ExternalDependencyManager 升级到了 v1.2.168,以更好地支持 2021.2 及更高版本,如需了解详情,请参阅 EDM 的更新日志。
修复了以下问题:即使会话配置没有任何更改,ARCore 会话也会配置每一帧,从而导致 FPS 下降。
iOS
- 修复了一些 bug 并提升了性能。
ARCore v1.29.0 中的新变化
此版本没有任何新功能。
Android
- hello_ar_java 和 hello_ar_kotlin:更改了使用
SCREENSPACE_WITH_APPROXIMATE_DISTANCE
放置对象时的颜色,以便更好地区分使用即时放置功能放置的对象。 - persistent_cloud_anchor_java:向示例添加了缺少的 build 依赖项。修复了以下 bug:托管任何锚点都会具有状态
CloudAnchorState ERROR_NOT_AUTHORIZED
,即使项目设置正确也是如此。
Unity(AR Foundation)
- ARCore Extensions 软件包现在依赖于 ARKit XR 插件,以确保安装的 AR Foundation 版本与 ARKit XR 插件版本兼容。这修复了在 Unity 2019.x 上安装 ARCore Extensions 并启用 ARKit XR 插件时出现的编译错误。
- ARCore Extensions 项目设置已从 Project Settings > XR > ARCore Extensions 移至 Project Settings > XR Plug-in Management > ARCore Extensions。
ARCoreExtensionsConfig
、ARCoreExtensionsCameraConfigFilter
和ARCoreRecordingConfig
已从 Create > XR > ARCore Extensions 移至 Create > XR 菜单。
iOS
- 修复了一些 bug 并提升了性能。
完整的版本说明
- ARCore SDK for Android 完整版本说明
- 适用于 Android NDK 的 ARCore 完整版本说明
- ARCore SDK for iOS 完整版本说明
- 适用于 AR Foundation 的 ARCore Extensions 版本说明
ARCore v1.28.0 中的新变化
- 自 2022 年 11 月起,启用了 AR 的应用将无法再获取 NDK 图片或图片元数据。受影响的 SDK 版本取决于所调用的具体函数,如需了解详情,请参阅弃用公告。
- C:对
ArImage_getNdkImage()
和ArImage_getNdkCameraMetadata()
的调用将始终针对AImage
和ACameraMetadata
对象返回nullptr
。 - Java:
Frame#acquireCameraImage()
返回的Image
对象的大小为0
x0
像素。对Frame#getImageMetadata()
的调用始终会抛出IllegalArgumentException
。 - Unity (AR Foundation):使用 AR Foundation 2.1 (Unity 2019 LTS) 时,对
XRCameraSubsystem.TryGetLatestImage(out XRCameraImage)
的调用始终会返回false
。AR Foundation 4.x 及更高版本不受影响,对XRCameraSubsystem.TryGetLatestImage(out XRCameraImage)
的调用将正常运行。 - 适用于 Unity 的 ARCore SDK(已废弃):对
Frame.CameraImage.AcquireCameraImageBytes()
的调用将大小为0
x0
像素。调用Frame.CameraMetadata.GetAllCameraMetadataTags()
将返回空的List<CameraMetadataTag>
。
- C:对
- Java:
ArImage#getCropRect()
现在会返回完整大小的剪裁矩形,即 Image 中的所有像素均有效。如需了解详情,请参阅android.media.Image#getCropRect()
。
ARCore v1.27.0 中的新变化
此版本没有任何新功能。如需了解各种 bug 修复和性能改进,请参阅以下版本说明。
- ARCore SDK for Android 完整版本说明
- 适用于 Android NDK 的 ARCore 完整版本说明
- ARCore SDK for iOS 完整版本说明
- 适用于 AR Foundation 的 ARCore Extensions 版本说明
除了修复了各种 bug 外,此版本还加入了以下内容。
Kotlin 示例应用
添加了 hello_ar_kotlin,以演示使用 Kotlin 时的最佳实践。
如需了解详情,请参阅 Android 版快速入门。
添加了 ml_kotlin,以演示如何将图片分类模型与 ARCore 搭配使用。
如需了解详情,请参阅将 ARCore 用作机器学习模型的输入。
ARCore v1.26.0 中的新变化
此版本进行了以下重大更改:
- 录制和播放中的数据集现在支持 URI。
其他更改和更新
如需了解其他 bug 修复和其他重大更改,请参阅以下版本说明。
- ARCore SDK for Android 完整版本说明
- 适用于 Android NDK 的 ARCore 完整版本说明
- ARCore SDK for iOS 完整版本说明
- 适用于 AR Foundation 的 ARCore Extensions 版本说明
ARCore v1.25.0 中的新变化
此版本没有任何新功能。如需了解各种 bug 修复和性能改进,请参阅以下版本说明。
- ARCore SDK for Android 完整版本说明
- 适用于 Android NDK 的 ARCore 完整版本说明
- ARCore SDK for iOS 完整版本说明
- 适用于 Unity 的 ARCore SDK 完整版本说明
- 适用于 AR Foundation 的 ARCore Extensions 版本说明
ARCore v1.24.0 中的新变化
此版本进行了以下重大更改:
- 新的 Raw Depth API,可提供不进行图片空间滤波的深度图像
- 向 Recording & Playback API 添加了自定义数据轨道录制功能
- 能够执行深度命中测试
原始深度
Raw Depth API 可为相机图片提供深度数据,这些数据的准确性高于完整 Depth API 数据,但并不总是涵盖每个像素。原始深度图片及其匹配的置信度图片还可以进一步处理,以便应用仅使用对其各个用例而言准确性足够高的深度数据。
开发者指南:
自定义轨道录制
借助 Recording & Playback API 中新增的自定义数据轨道功能,您可以在录制期间向 ARCore 帧添加自定义数据,并在播放期间从帧中检索这些数据。
开发者指南:
深度点击测试
以前,只能对检测到的平面执行碰撞测试,这会将位置限制在较大的平面上。深度碰撞测试会同时利用平滑深度信息和原始深度信息,以提供更准确的碰撞结果,即使在非平面和纹理较少的表面上也是如此。
开发者指南:
其他更改和更新
如需了解其他 bug 修复和其他重大更改,请参阅以下版本说明。
- ARCore SDK for Android 完整版本说明
- 适用于 Android NDK 的 ARCore 完整版本说明
- ARCore SDK for iOS 完整版本说明
- 适用于 Unity 的 ARCore SDK 完整版本说明
- 适用于 AR Foundation 的 ARCore Extensions 版本说明
ARCore v1.23.0 中的新变化
待支持双摄像头
我们将在未来几周内推出对双摄像头的支持。如需了解详情,请参阅支持的设备页面。
新的调试工具
通过发送广播 intent,开发者可以启用以下功能:
将 ARCore API 调用记录到 Android 调试日志
ARCore 性能叠加层
托管和解析 Cloud Anchors
使用 ARCore SDK 1.11.0 或更低版本构建的支持 AR 的应用无法再托管或解析 Cloud Anchor。
C:
ArSession_hostAndAcquireNewCloudAnchor
和ArSession_resolveAndAcquireNewCloudAnchor
返回的云锚点始终处于状态AR_CLOUD_ANCHOR_STATE_ERROR_INTERNAL
。Java:
Session.hostCloudAnchor(Anchor)
和Session.resolveCloudAnchor(String)
返回的云锚点始终处于状态Anchor.CloudAnchorState.ERROR_INTERNAL
。Unity:
XPSession.CreateCloudAnchor(Anchor)
和XPSession.ResolveCloudAnchor(string)
返回的云锚点始终具有状态CloudServiceResponse.ErrorInternal
。
使用 ARCore SDK 1.12.0 或更高版本构建的应用不受影响。他们对 ARCore Cloud Anchor API 的使用受弃用政策的约束。
其他更改和更新
如需了解其他 bug 修复和其他破坏性更改,请参阅以下版本说明。
ARCore v1.22.0 中的新变化
此版本为 AR Foundation 的 ARCore 扩展新增了 Recording API 和 Playback API 以及 Camera Config Filter API。如需了解详情,请参阅 ARCore Extensions 完整版本说明。
其他更改和更新
如需了解其他 bug 修复和其他破坏性更改,请参阅以下版本说明。
ARCore v1.21.0 中的新变化
此版本为 Android、Android NDK 和 Unity 添加了新的录制和播放 API。
录制和播放
借助 Recording API 和 Playback API,您可以在给定环境中录制一次视频和 AR 数据,并使用该内容替换实时相机会话以进行测试。ARCore 会将录制的会话保存到 MP4 文件中,这些文件包含设备上的多个视频轨道和其他杂项数据。然后,您可以指示应用使用这些数据来代替实时相机会话。这样,您就可以无限期地重放该内容,以试用不同的 AR 效果,而无需返回现场。
若要了解详情,请访问:
ARCore v1.20.0 中的新变化
此版本进行了以下重大更改:
新增了对持久云锚点的支持。
更新了 Android 和 Android NDK 的图片元数据功能。
新增了指南,要求使用 Gradle 5.6.4 或更高版本,以便在 Unity 2018.4 或更高版本中支持适用于 AR Foundation 的 ARCore 扩展或适用于 Unity 的 ARCore SDK (1.19 或更高版本)。
新增了对持久云锚点的支持
对于 ARCore v1.20 之前的版本,云锚点只有在首次托管 24 小时后才能被解析。借助永久性 Cloud Anchor,您现在可以创建存留时间 (TTL) 介于 1 天到 365 天之间的 Cloud Anchor。您还可以在锚点托管后使用 Cloud Anchor Management API 延长其生命周期。
新的 Cloud 锚点弃用政策涵盖了持久 Cloud 锚点的使用。
C:开发者指南、
ArSession_hostAndAcquireNewCloudAnchorWithTtl
和ArSession_estimateFeatureMapQualityForHosting
。Java:开发者指南、
hostCloudAnchorWithTtl
和estimateFeatureMapQualityForHosting
。iOS:开发者指南、
hostCloudAnchor:TTLDays:error:
和estimateFeatureMapQualityForHosting:
。适用于 AR Foundation 的 ARCore 扩展:Android 开发者指南、iOS 开发者指南、
ARAnchorManager.HostCloudAnchor(ARAnchor, int)
、ARAnchorManager.SetAuthToken(string)
和ARAnchorManager.EstimateFeatureMapQualityForHosting(Pose)
。以 Android 为目标平台的 Unity:开发者指南、
XPSession.CreateCloudAnchor(Anchor, int)
和XPSession.EstimateFeatureMapQualityForHosting(Pose)
。以 iOS 为目标平台的 Unity:开发者指南、
XPSession.SetAuthToken(string)
和XPSession.CreateCloudAnchor(UnityARUserAnchorComponent, int)
。
其他更改和更新
如需了解其他 bug 修复和其他破坏性更改,请参阅以下版本说明。
ARCore v1.19.0 中的新变化
此版本进行了以下重大更改:
- 适用于 Android、Android NDK 和 Unity 的新免安装展示位置 API。
- 新增了有关使用 Unity 构建 Android 11 应用的指南。
即时展示位置
借助 Instant Placement API,用户无需等待 ARCore 检测 Surface 几何图形,即可在屏幕上放置 AR 对象。随着用户在环境中进一步移动,系统会实时优化对象放置。当 ARCore 在放置 AR 对象的区域检测到正确的姿势后,白色对象会自动更新为准确的姿势,并变为不透明。
以下剪辑展示了真实桌面上的虚拟 Android 人偶。该图形是白色的,首次放置时尺寸要小得多。ARCore 优化场景尺寸的计算后,该图形会跳转到更准确的位置。这可能会导致对象的“尺寸”感知差异。
若要了解详情,请访问:
ARCore v1.18.0 中的新变化
此版本进行了以下重大更改:
- 适用于 Android、Android NDK 和 Unity 的新深度 API。
- 新增了有关创建增强现实头像素材资源并将其导入 Android Studio 的新指南。
4.1.0-preview.2
将支持 Depth API,适用于AR Foundation
和ARCore XR Plugin
。
Depth API
在支持深度感知的设备上,Depth API 使用支持 ARCore 的设备的 RGB 摄像头或主动深度传感器(如果有)来创建深度图。然后,您可以使用深度图提供的每个像素深度,让虚拟对象准确显示在真实对象的前面或后面,从而打造逼真的沉浸式用户体验。
例如,以下图片显示了虚拟 Android 人偶位于真实空间中,门边有个后备箱。Depth API 会正确遮挡后备箱边缘后面的图形。
若要了解详情,请访问:
ARCore v1.17.0 中的新变化
ARCore SDK for Android 中的亮点
添加了一些可缓冲多个相机帧的新方法。与多线程渲染等其他技术结合使用时,此方法可用于降低帧速率的变化。
添加了缺少的深度传感器用法和目标 FPS Getter:
另请参阅 Android SDK for Android 完整版本说明。
适用于 Unity 的 ARCore SDK 中的亮点
- 在 Unity 2018.2 或更高版本中添加了对多线程渲染的支持,这在大多数情况下会提升性能,并有助于减少帧速率的变化。这是 Unity 项目设置,位于 Project Settings(项目设置)> Player(玩家)> Android(Android)> Other Settings(其他设置)> Multithreaded Rendering(多线程渲染)。如需了解详情,请参阅开发者指南。
- 添加了
SessionStatus.ErrorCameraNotAvailable
和SessionStatus.ErrorIllegalState
,用于指示特定的 ARCore 会话错误状态。
另请参阅 适用于 Unity 的 ARCore SDK 完整版本说明。
ARCore SDK for iOS 中的亮点
Cloud Anchors SDK 的二进制文件大小大幅缩减。
现在,增强现实人脸支持位码。
另请参阅 ARCore SDK for iOS 完整版本说明。
ARCore v1.16.0 中的新变化
ARCore SDK for Android 和 Sceneform SDK for Android 中的亮点
此版本进行了以下重大更改:
- 现在,大多数设备都会返回其他受支持的相机配置,其 GPU 纹理分辨率低于设备的默认 GPU 纹理分辨率。如需了解详情,请参阅 ARCore 支持的设备。您可以通过
getSupportedCameraConfigs(CameraConfigFilter)
API 获取这些扩展的 GPU 分辨率。
另请参阅:
适用于 AR Foundation 的 ARCore 扩展中的亮点
此版本进行了以下重大更改:
AR Foundation 的
XRCameraConfiguration
通过方法进行了扩展,可让您根据所需的条件选择适当的相机配置。这些方法包括 GetTextureDimensions()、GetFPSRange() 和 GetDepthSensorUsages()。请参阅详细说明。现在,Unity 2019.3.0f6 是 ARCore 扩展程序的最低推荐版本。 AR Foundation 3.1.0-preview.6 需要 Unity 2019.3 或更高版本。
Unity 现在在其跨平台 AR API 中使用锚点、云锚点和云锚点 ID 这些术语。ARCore 扩展程序的文档已更新,以反映这一点。
另请参阅:
适用于 Unity 的 ARCore SDK 中的亮点
此版本进行了以下重大变更:
- 现在,大多数设备都会返回其他受支持的相机配置,其 GPU 纹理分辨率低于设备的默认 GPU 纹理分辨率。(如需了解详情,请参阅支持 ARCore 的设备。) 您可以通过 ARCoreCameraConfigFilter API 使用这些扩展的 GPU 分辨率。
另请参阅:
ARCore v1.15.0 中的新变化
适用于 AR Foundation 的 ARCore 扩展中的亮点
此版本添加了以下显著变化。
添加了 CloudAnchors 示例,展示了如何为 Android 和 iOS 打造共享 AR 体验。请参阅适用于 Android 或 iOS 的说明。
现在,建议您使用 Unity 2019.2.17f1 或更高版本与 ARCore Extensions 搭配使用。
适用于 Unity 的 ARCore SDK 中的亮点
此版本存在以下已知问题。
使用 Android 9 和 USB 3 线时,即时预览可能会冻结 Unity。如需解决此问题,请更新到 Android 10 或使用 USB 2 线。
如果 Unity 的游戏视图分辨率过高,即时预览可能无法在设备上显示。如需解决此问题,请在编辑器中降低 Unity 的游戏视图分辨率。
其他更改
如需了解其他 bug 修复和其他破坏性更改,请参阅以下版本说明。
ARCore v1.14.0 中的新变化
此版本添加了以下显著变化。
当某个应用暂时将摄像头让渡给设备上的其他应用时,跟踪失败的原因现在更具体:
Android:
TrackingFailureReason
为CAMERA_UNAVAILABLE
,而非NONE
。Android NDK:
ArTrackingFailureReasons
为AR_TRACKING_FAILURE_REASON_CAMERA_UNAVAILABLE
,而非AR_TRACKING_FAILURE_REASON_NONE
。Unity:
Session.LostTrackingReason
为LostTrackingReason.CameraUnavailable
,而非None
。
Google 会根据《Google 隐私权政策》和 《Google API 服务条款》,收集和处理您在使用 ARCore Extensions 软件包时产生的数据。您可以选择停用此功能。
ARCore v1.13.0 中的新变化
此版本添加了以下显著变化。
支持使用适用于 Unity 的 AR Foundation 的 ARCore Extensions 构建使用云锚点的 iOS 应用。
如需了解其他 bug 修复和其他破坏性更改,请参阅以下版本说明。
ARCore v1.12.0 中的新变化
此版本进行了以下更改:
支持使用适用于 Unity 的 AR Foundation 的 ARCore Extensions 构建使用云锚点的 Android 应用。
Cloud Anchors 发生了以下变更:
- 为遵守我们针对使用 ARCore SDK 1.12 或更高版本更新的隐私权要求,您必须在应用中醒目地披露 Cloud Anchor 的使用情况,方法是在通知屏幕上添加以下文字以及了解详情的链接:“为了支持此会话,Google 将处理来自摄像头的视觉数据。”您可以通过实现 Cloud Anchor 示例应用中提供的推荐用户通知流程来实现此目的。
如需了解详情,请参阅用户隐私权要求。
如需详细了解 Cloud Anchor,请参阅以下资源:
ARCore v1.11.0 中的新变化
此版本进行了以下更改:
ARCore 服务已重命名为面向 AR 的 Google Play 服务。 在 Google Play 设备上,它现在作为 Google Play 服务的一部分进行分发。
ARCore 的相机配置在受支持的设备上以 60 fps 为目标帧速率,并优先在配备深度传感器的设备上使用深度传感器。您可以使用新的相机配置过滤器将相机拍摄帧速率限制为 30 fps,阻止 ARCore 使用深度传感器,或根据这两种选项进行过滤。
如需详细了解相机配置,请参阅以下内容:
ARCore v1.10.0 中的新变化
此版本为适用于 Android、Android NDK 和 Unity 的 Lighting Estimation API 新增了 Environmental HDR 照明估算功能。
这些 API 使用机器学习来分析输入的摄像头图片并估算环境光照。您可以使用这些光照估算数据来渲染逼真的光照,包括主要的定向光、阴影、环境光、镜面高光和虚拟对象上的反射。这样一来,虚拟内容看起来就会更逼真。
若要了解详情,请访问:
ARCore v1.9.0 中的新变化
ARCore SDK for Android 中的新功能
此版本新增了以下 API 和功能:
Scene Viewer 是一种身临其境的查看器,可在您的网站上提供 AR 体验。借助该 API,Android 移动设备用户可以在其环境中轻松放置、查看和与 Web 托管的 3D 模型互动。
新增了增强型图片功能:
ARCore 现在可以跟踪移动的增强图像。 移动图片的示例包括行驶中的公交车上的广告,或用户手持的平面物体上的图片在用户移动手部时发生的变化。
检测到图片后,ARCore 能够继续跟踪图片的位置和方向,即使图片暂时移出摄像头视野也是如此。
使用
AugmentedImage#getTrackingMethod()
(Java) 或ArAugmentedImage_getTrackingMethod()
(NDK) 确定增强现实图像目前是被相机跟踪 (FULL_TRACKING
),还是根据其上次已知位置进行跟踪 (LAST_KNOWN_POSE
)。
Cloud 锚点文档现在详细说明了如何托管和解析锚点。
ARCore SDK for Unity 中的新功能
新增了增强型图片功能:
ARCore 现在可以跟踪移动的增强图像。 移动图片的示例包括行驶中的公交车上的广告,或用户在移动平面物品时,物品上的图片。
检测到图片后,ARCore 能够继续跟踪图片的位置和方向,即使图片暂时移出摄像头视野也是如此。
借助新的
AugmentedImage.GetTrackingMethod()
API,您的应用可以确定增强现实图像目前是被相机跟踪 (FullTracking
),还是根据其上次已知位置进行跟踪 (LastKnownPose
)。
Cloud 锚点文档现在详细说明了如何托管和解析锚点。
ARCore SDK for iOS 中的新功能
支持以下设备:
第五代 iPad Mini
第 3 代 iPad Air
Cloud 锚点文档现在详细说明了如何托管和解析锚点。