ARCore 中的新重大变更。
ARCore v1.45.0 的新变化
Flash Mode API
ARCore 现在支持启用设备的火炬模式, 黑暗环境中的感知能力。
Android (Kotlin/Java)
Config.FlashMode
:用于在设备上启用或停用闪存装置的配置选项。- 如需详细了解如何检测闪光灯功能以及如何启用手电筒模式,请参阅开发者指南。
Android NDK (C)
ArFlashMode
:用于在设备上启用或停用闪存装置的配置选项。- 如需详细了解如何检测闪光灯功能以及如何启用手电筒模式,请参阅开发者指南。
适用于 Unity 的 AR Foundation 的 ARCore Extensions 支持 AR Foundation 5
ARCore Extensions for AR Foundation 现已正式支持 AR Foundation 5。 使用 AR Foundation 5(Unity 2022 版和 2023 版),请使用以下安装方法获取 面向 AR 基础的 ARCore 扩展:
- 通过
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 迁移
Geospatial Creator 的搜索功能现在使用 Google 的新版 Places API。若要使用搜索功能,请启用 Places API(新)Google Cloud 控制台中。
ARCore v1.42.0 的新变化
Geospatial Creator for Unity 中的贴靠图块
“对齐图块”按钮已添加到 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 Extensions 现已支持 AR Foundation 版本 5.x要将现有项目迁移到 AR Foundation,请参阅 迁移指南。
ARCore v1.40.0 的新变化
iOS 上的场景语义
Scene Semantics API 现在可在 ARCore SDK for iOS 以及 ARCore Extensions for Unity AR Foundation 中的功能 定位到 iOS 平台。借助 Scene Semantics API,开发者可以 实时了解用户周围的场景,将像素标记为 11 各种类别的户外组件。请参阅场景简介 语义。
iOS
Unity(AR 基础)
在适用于 Unity 的 Geospatial Creator 中搜索地图注点
Geospatial Creator for Unity 现在支持通过文本搜索来确定 摄影 3D 图块视图。请参阅 在 Geospatial Creator 中搜索地图注点 。
ARCore v1.39.0 的新变化
此版本没有新功能。
ARCore v1.38.0 中的新功能
此版本没有新功能。
ARCore v1.37.0 的新变化
场景语义
Scene Semantics 可提供关于周围场景的更丰富细节,使用户更容易理解周围的世界。Scene Semantics 会针对相机图像 Feed 运行机器学习模型,并提供一个语义图像,其中每个像素对应 11 个户外概念标签中的一个。
如需了解详情,请参阅场景语义简介和 semantics_java 示例应用。
街景几何图形
Streetscape Geometry 是一种新的 ARCore Geospatial API,在启用 Geospatial API 后,它可以提供用户周围区域中建筑物和地形的几何图形。
Android (Kotlin/Java)
请参阅 Streetscape Geometry 开发者指南 (Kotlin/Java)。此外,geospatial_java 示例应用已更新,现在包含 Streetscape Geometry。
Android NDK (C)
如需了解详情,请参阅 Streetscape Geometry 开发者指南 (C)。
Unity(AR 基础)
如需了解详情,请参阅 Streetscape Geometry 开发者指南 (Unity)。
iOS
如需了解详情,请参阅 Streetscape Geometry 开发者指南 (iOS)。此外,GeospatialExample 应用已更新,现在包含 Streetscape Geometry。
GARStreetscapeGeometry
:GARStreetscapeGeometry.mesh
提供 3D 网格。GARStreetscapeGeometry.meshTransform
提供几何图形相对于会话世界空间的原点转换。GARStreetscapeGeometry.trackingState
会维护跟踪状态。GARStreetscapeGeometry.type
指示它是地形还是建筑物几何图形。GARStreetscapeGeometry.quality
用于提供几何图形的质量。GARStreetscapeGeometry.identifier
提供几何图形的唯一标识符。GARSession.createAnchorOnStreetscapeGeometry:transform:error:
可在指定位置和方向创建锚点。GARSession.raycastStreetscapeGeometry:direction:error:
针对场景中加载的 Streetscape Geometry 执行光线投射。
屋顶锚点
屋顶锚点是一种新的地理空间锚点类型,可帮助您将内容锚定到屋顶。
Android (Kotlin/Java)
请参阅地理空间锚点 (Java)。此外,geospatial_java 示例应用已更新,现在包含 Rooftop 锚点。
Android NDK (C)
如需了解详情,请参阅地理空间锚点 (C)。
Unity(AR 基础)
如需了解详情,请参阅地理空间锚点。此外,地理空间示例已更新,现在包含 Rooftop 锚点。
ARAnchorManagerExtensions.ResolveAnchorOnRooftopAsync()
会为场景中的游戏对象在指定纬度、经度、屋顶海拔高度和屏幕方向处提供锚点。ResolveAnchorOnRooftopPromise
ResolveAnchorOnRooftopResult
iOS
如需了解详情,请参阅地理空间锚点 (iOS)。此外,GeospatialExample 应用已更新,现在包含 Rooftop 锚点。
GARSession.createAnchorWithCoordinate:altitudeAboveRooftop:eastUpSouthQAnchor:completionHandler:error:
在指定位置(高于屋顶的高度(以米为单位)和相对于地球的方向创建屋顶锚点。GARCreateAnchorOnRooftopFuture
存储解析 Rooftop 锚点的异步状态。GARRooftopAnchorState
描述了解析 Rooftop 锚点的状态。
地理空间深度
在具有 VPS 覆盖的区域中的 ARCore 会话中同时启用 Depth API 和 Streetscape Geometry 模式时,系统会使用 Streetscape Geometry 改进生成的深度图像。Streetscape Geometry 会集成到生成的每张 65.535 米的深度图像中。调用 Depth API 时无需进行任何更改即可查看此优势。
Android (Kotlin/Java)
如需了解详情,请参阅地理空间深度 (Java)。
Android NDK (C)
如需了解详情,请参阅地理空间深度 (C)。
Unity(AR 基础)
如需了解详情,请参阅地理空间深度 (C)。
iOS
Scene Semantics 目前不适用于 iOS。
Vulkan 渲染支持
现在,ARCore 通过 AHardwareBuffer
公开相机图像来提供 Vulkan 渲染支持。您可以通过将该硬件缓冲区绑定到 VkImage
来使用该缓冲区。
如需了解详情,请参阅使用 Vulkan 渲染 ARCore 应用和 hello_ar_vulkan_c 示例应用。
Android (Kotlin/Java)
Android NDK (C)
Unity(AR 基础)
Vulkan 渲染目前不适用于使用 AR Foundation 的 Unity。
电子防抖 (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
以外的 2D 坐标调用ArFrame_transformCoordinates3d()
会导致应用中止而不是返回AR_ERROR_INVALID_ARGUMENT
。此问题将在下一个版本中得到解决。
Unity(AR 基础)
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 中移除。 - 托管云锚点:使用
Session.hostCloudAnchorAsync()
获取HostCloudAnchorFuture
。旧符号Session.hostCloudAnchor()
和Session.hostCloudAnchorWithTtl()
已被弃用,并可能会在更高版本的 ARCore 中移除。 - 检查 APK 可用性:使用
ArCoreApk.checkAvailabilityAsync()
注册回调。旧符号ArCoreApk.checkAvailability()
尚未弃用。
Android NDK (C)
- 解析地形锚点:使用
ArEarth_resolveAnchorOnTerrainAsync()
获取ArResolveAnchorOnTerrainFuture
或使用ArResolveAnchorOnTerrainCallback
。旧符号ArEarth_resolveAndAcquireNewAnchorOnTerrain()
已弃用,可能会在更高版本的 ARCore 中移除。 - 解析云锚点:使用
ArSession_resolveCloudAnchorAsync()
获取ArResolveCloudAnchorFuture
或使用ArResolveCloudAnchorCallback
。旧符号ArSession_resolveAndAcquireNewCloudAnchor()
已弃用,可能会在更高版本的 ARCore 中移除。 - 托管云锚点:使用
ArSession_hostCloudAnchorAsync()
获取ArHostCloudAnchorFuture
或使用ArHostCloudAnchorCallback
。旧符号ArSession_hostAndAcquireNewCloudAnchor()
和ArSession_hostAndAcquireNewCloudAnchorWithTtl()
已被弃用,并可能会在更高版本的 ARCore 中移除。 - 检查 APK 可用性:使用
ArCoreApk_checkAvailabilityAsync()
注册回调。旧符号ArCoreApk_checkAvailability()
尚未弃用。
Unity(AR 基础)
- 解析地形锚点:使用
ARAnchorManagerExtensions.ResolveAnchorOnTerrainAsync()
获取ResolveAnchorOnTerrainPromise
。旧符号ARAnchorManagerExtensions.ResolveAnchorOnTerrain()
已弃用,可能会在更高版本的 ARCore 中移除。 - 解析云锚点:使用
ARAnchorManagerExtensions.ResolveCloudAnchorAsync()
获取ResolveCloudAnchorPromise
。旧符号ARAnchorManagerExtensions.ResolveCloudAnchorId()
已弃用,可能会在更高版本的 ARCore 中移除。 - 托管云锚点:使用
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 中移除。 - 托管云锚点:使用
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
。
其他更改和更新
请参阅版本说明,了解其他变更、问题修复和性能改进:
- ARCore SDK for Android 版本说明
- ARCore for Android NDK 版本说明
- ARCore SDK for iOS 版本说明
- ARCore Extensions for AR Foundation 版本说明
ARCore v1.34.0 的新变化
检查设备当前位置是否提供地理空间功能
Geospatial API 现在可以在运行时检查指定水平位置是否具备视觉定位系统 (VPS) 的可用性。此 API 可在没有活跃的 AR 会话的情况下使用:例如,演示“进入 AR”按钮。
- Java/Kotlin:
Session.checkVpsAvailabilityAsync()
- C:
ArSession_checkVpsAvailabilityAsync()
- iOS:
GARSession.checkVPSAvailabilityAtCoordinate:completionHandler:
- Unity(AR 基础):
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
其他更改和更新
请参阅版本说明,了解其他变更、问题修复和性能改进:
- ARCore SDK for Android 版本说明
- ARCore for Android NDK 版本说明
- ARCore SDK for iOS 版本说明
- ARCore Extensions for AR Foundation 版本说明
ARCore v1.33.0 中的新功能
新的云锚点端点
- 如需使用云锚点,您现在必须启用 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
。 - 在 2023 年 8 月之前,旧版 API/端点仍受支持。
- 如需了解详情,请参阅 ARCore 1.33 云锚点端点变更。
- 新 API 使用域名
地形锚点
- Geospatial Terrain Anchor API 会在相对于水平位置地形的指定水平位置和海拔高度创建锚点。
其他更改和更新
请参阅版本说明,了解其他变更、问题修复和性能改进:
- ARCore SDK for Android 版本说明
- ARCore for Android NDK 版本说明
- ARCore SDK for iOS 版本说明
- ARCore Extensions for AR Foundation 版本说明
ARCore v1.32.0 的新变化
此版本没有新功能。
Android 和 Unity (AR Foundation) for Android
- ARCore 的
targetSdkVersion
已更新至 Android API 级别 32。如果您的应用没有指定targetSdkVersion
,则应用的targetSdkVersion
会因清单合并而变为 32。- Android SDK:在项目的
build.gradle
或AndroidManifest.xml
中指定targetSdkVersion
会替换 ARCore 的targetSdkVersion
值。 - AR Foundation for Android:在 Unity 项目的项目设置 > 中指定目标 API 级别播放器 >Android >其他设置将替换 ARCore 的
targetSdkVersion
值。
- Android SDK:在项目的
其他更改和更新
请参阅版本说明,了解其他变更、问题修复和性能改进:
- ARCore SDK for Android 版本说明
- ARCore for Android NDK 版本说明
- ARCore SDK for iOS 版本说明
- ARCore Extensions for AR Foundation 版本说明
ARCore v1.31.0 的新变化
ARCore Geospatial API
全新的 ARCore Geospatial API 利用来自 Google 地球 3D 模型和 来自 Google 地图的街景图像数据,让您的应用能够提供沉浸式、 基于地理位置的全球规模的增强现实体验。
请参阅 ARCore Geospatial API 简介 针对具体平台的开发者文档,以及如何开始使用新的 Geospatial API。
远距离深度
ARCore Depth API 现已经过优化,纳入了更远距离的深度传感功能, 扩大可表示深度观察的范围。 使用深度图像,最大范围为 65, 535 毫米。先前 仅填充了 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 基础)
新的 ARCore Geospatial API:
AREarthManager
在地球相对坐标中提供定位功能。EarthTrackingState
获取最新帧的地球跟踪状态。EarthState
用于维护 Google 地球错误情况。
GeospatialPose
说明了相对于地球的特定位置、高度和罗盘航向。ARGeospatialAnchor
为场景中的游戏对象提供锚点,并在某个位置指定 相对于地球的方位和方向
iOS
新的 ARCore Geospatial API:
GAREarth
提供地球相对本地化功能。GAREarthState.earthState
管理错误状态和条件GAREarthState.trackingState
用于维护地理空间数据所需的跟踪状态。
GARGeospatialTransform
全局转换的表示形式,包括位置、方向、海拔高度 和准确度估算。GARSession.createAnchorWithCoordinate:altitude:eastUpSouthQAnchor:error:
在指定位置和方向创建地理空间锚点 相对于地球的相对位置
其他变更
请参阅版本说明,了解其他变更、问题修复和性能改进:
- ARCore SDK for Android 版本说明
- ARCore for Android NDK 版本说明
- ARCore SDK for iOS 版本说明
- ARCore Extensions for AR Foundation 版本说明
ARCore v1.30.0 的新变化
此版本没有新功能。
Android
- 带有注解的 API 返回值
@NonNull
和@Nullable
。 - 将用于构建示例的构建工具版本“Gradle”更新至 7.0.2 和 Android Gradle 插件添加到 7.0.4。不需要升级这些工具 现有 ARCore 应用的基础。对于新功能、已知问题 不兼容信息,请参阅 关于 Android Gradle 插件的 Android 文档。
Unity(AR 基础)
添加了新的
arcore-unity-extensions-without-edm4u.tgz
版本。此版本变体 不会将外部依赖项(例如 适用于 Unity 的 External Dependency Manager 并允许 升级到电子舞曲。 使用此精简版可能会解决使用 Firebase 时的不兼容问题 库。请参阅 ARCore Extensions for AR Foundation 的安装说明 。将 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:向示例添加了缺失的构建依赖项。修复了以下 bug:即使项目设置正确,托管任何锚点都将具有
CloudAnchorState ERROR_NOT_AUTHORIZED
状态。
Unity(AR 基础)
- ARCore 扩展软件包现在依赖于 ARKit XR 插件,以确保已安装的 AR Foundation 版本与 ARKit XR 插件版本兼容。这修复了在 Unity 2019.x 上安装 ARCore 扩展程序和启用 ARKit XR 插件时出现的编译错误。
- ARCore Extensions 项目设置已从 Project Settings >XR>ARCore Extensions 设置为 Project Settings >XR 插件管理 >ARCore Extensions。
ARCoreExtensionsConfig
、ARCoreExtensionsCameraConfigFilter
、ARCoreRecordingConfig
已从创建 >XR>创建 > 的 ARCore 扩展程序XR 菜单。
iOS
- 修复了各种 bug 并提升了性能。
完整版本说明
- ARCore SDK for Android 完整版本说明
- ARCore for Android NDK 完整版本说明
- ARCore SDK for iOS 完整版本说明
- ARCore Extensions for AR Foundation 版本说明
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)
的调用将正常运行。 - ARCore SDK for Unity(已弃用):对
Frame.CameraImage.AcquireCameraImageBytes()
的调用大小将为0
x0
像素。调用Frame.CameraMetadata.GetAllCameraMetadataTags()
将返回空的List<CameraMetadataTag>
。
- C:调用
- Java:
ArImage#getCropRect()
现在会返回完整尺寸的剪裁矩形,即图片中的所有像素均有效。如需了解详情,请参阅android.media.Image#getCropRect()
。
ARCore v1.27.0 的新变化
此版本没有新功能。请参阅以下版本说明,了解各种 修复了一些 bug 并提升了性能。
- ARCore SDK for Android 完整版本说明
- ARCore for Android NDK 完整版本说明
- ARCore SDK for iOS 完整版本说明
- ARCore Extensions for AR Foundation 版本说明
除了各种 bug 修复之外,此版本还包括以下内容。
Kotlin 示例应用
添加了 hello_ar_kotlin,以演示使用 Kotlin 时的最佳实践。
如需了解详情,请参阅 Android 版快速入门 信息。
添加了 ml_kotlin,以演示如何将图像分类模型与 ARCore 搭配使用。
ARCore v1.26.0 的新变化
此版本添加了以下显著变更:
其他更改和更新
请参阅以下版本说明,了解其他 bug 修复和其他重大更改。
- ARCore SDK for Android 完整版本说明
- ARCore for Android NDK 完整版本说明
- ARCore SDK for iOS 完整版本说明
- ARCore Extensions for AR Foundation 版本说明
ARCore v1.25.0 的新变化
此版本没有新功能。请参阅以下版本说明,了解各种 修复了一些 bug 并提升了性能。
- ARCore SDK for Android 完整版本说明
- ARCore for Android NDK 完整版本说明
- ARCore SDK for iOS 完整版本说明
- ARCore SDK for Unity 完整版本说明
- ARCore Extensions for AR Foundation 版本说明
ARCore v1.24.0 的新变化
此版本添加了以下显著变更:
- 新的 Raw Depth API,可提供深度图像而不进行图像空间过滤
- 自定义数据跟踪记录功能,用于记录和Playback API
- 执行深度点击测试的能力
原始深度
Raw Depth API 可为具有更高优先级的相机图像提供 但并非始终能覆盖每个像素。原始 深度图像及其匹配的置信度图像, 经过处理,允许应用仅使用准确度足够高的深度数据 应用场景。
开发者指南:
自定义路线记录
“录音和利用 Playback API, 在录制期间向 ARCore 帧添加自定义数据,并检索相同的数据 从该帧获取数据。
开发者指南:
深度点击测试
以前,只能在检测到的平面上执行点击测试,限制了 放置在较大的平坦表面上。深度点击测试会同时利用 和原始深度信息来提供更准确的命中结果,即使 非平面和低纹理的表面。
开发者指南:
其他更改和更新
请参阅以下版本说明,了解其他 bug 修复和其他重大更改。
- ARCore SDK for Android 完整版本说明
- ARCore for Android NDK 完整版本说明
- ARCore SDK for iOS 完整版本说明
- ARCore SDK for Unity 完整版本说明
- ARCore Extensions for AR Foundation 版本说明
ARCore v1.23.0 的新变化
双摄像头支持待定
我们将在未来几周内推出对双摄像头的支持。请参阅 支持的设备 页面。
新的调试工具
通过发送广播 intent,开发者可以启用以下功能:
将 ARCore API 调用记录到 Android 调试日志
ARCore 性能叠加层
托管和解析云锚点
使用 ARCore SDK 1.11.0 或更早版本构建的 AR 应用无法再 托管或解析云锚点。
C:云锚点由
ArSession_hostAndAcquireNewCloudAnchor
和ArSession_resolveAndAcquireNewCloudAnchor
始终为AR_CLOUD_ANCHOR_STATE_ERROR_INTERNAL
状态。Java:Cloud Anchors 返回的
Session.hostCloudAnchor(Anchor)
和Session.resolveCloudAnchor(String)
始终为Anchor.CloudAnchorState.ERROR_INTERNAL
状态。Unity:Cloud Anchors 返回的
XPSession.CreateCloudAnchor(Anchor)
和XPSession.ResolveCloudAnchor(string)
将始终保持CloudServiceResponse.ErrorInternal
。
使用 ARCore SDK 1.12.0 或更高版本构建的应用不会受到影响。他们的 如何使用 ARCore Cloud Anchor API 弃用政策。
其他更改和更新
请参阅以下版本说明,了解其他 bug 修复和其他重大问题 更改。
ARCore v1.22.0 的新变化
此版本新增了 Recording API 和 Playback API 以及 适用于 ARCore 的 Camera Config Filter API AR Foundation 的扩展程序。如需了解详情,请参阅 ARCore Extensions complete 版本说明。
其他更改和更新
请参阅以下版本说明,了解其他 bug 修复和其他重大问题 更改。
ARCore v1.21.0 的新变化
此版本新增了以下 API: Android、Android NDK、 和 Unity。
录制和回放
利用 Recording API 和 Playback API,您可以录制一次视频和 AR 数据 并使用该内容替换实时摄像头会话 用于测试目的ARCore 将录制的会话保存到包含以下内容的 MP4 文件中: 多个视频轨道和设备上的其他数据。然后,您可以 指示您的应用使用此类数据来代替实时相机会话。这样, 您可以无限重播相应内容,以尝试不同的 AR 效果,而无需 我们必须返回相应字段
若要了解详情,请访问:
ARCore v1.20.0 的新变化
此版本添加了以下显著变更:
新增了对永久性云锚点的支持。
更新了 Android 和 Android NDK 的图片元数据功能。
新增了要求使用 Gradle 版本的指南 5.6.4 或更高版本,以支持 ARCore Extensions for AR Foundation 或 ARCore 装有 Unity 2018.4 或更高版本的 SDK for Unity(1.19 或更高版本)。
新增对永久性云锚点的支持
在 ARCore v1.20 之前,云锚点解析时间最长可达 24 小时。 它们会首次被托管利用永久性云锚点,您现在可以 生存时间 (TTL) 介于 1 到 365 天之间的云锚点。您还可以 在托管锚点后延长其生命周期 使用 Cloud Anchor Management API。
使用永久性云锚点必须遵守新的云锚点弃用政策。
C:开发者指南;
ArSession_hostAndAcquireNewCloudAnchorWithTtl
, 和ArSession_estimateFeatureMapQualityForHosting
。Java:开发者指南
hostCloudAnchorWithTtl
和estimateFeatureMapQualityForHosting
。iOS:开发者指南、
hostCloudAnchor:TTLDays:error:
和estimateFeatureMapQualityForHosting:
。ARCore Extensions for AR Foundation: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 的 Instant Placement API; Android NDK 和 Unity。
- 关于针对 Android 11 进行构建的新指南 。
即时展示位置
借助 Instant Placement API,用户可以将 AR 对象放置在屏幕上 而无需等待 ARCore 检测表面几何形状。对象放置 随着用户在环境中进一步移动而实时优化。一次 ARCore 在放置 AR 物体的区域内检测到正确的姿势, 白色对象会自动更新为精确位置,然后变为不透明。
以下剪辑展示了一个虚拟 Android 人物在现实世界中 表格。该图形是白色的,最初放置时要小得多。ARCore 之后 优化了对场景维度的计算,所以人物会跳转到更多 精确位置。这可能会导致用户感知的“大小”/ 对象。
若要了解详情,请访问:
ARCore v1.18.0 的新变化
此版本添加了以下显著变更:
- 新增了适用于 Android 的 Depth API, Android NDK、 和 Unity。
- 新指南 用于创建 Augmented Faces 资源并将其导入 Android Studio。
4.1.0-preview.2
将支持 Depth APIAR Foundation
和ARCore XR Plugin
。
深度 API
在支持深度的设备上,Depth API 使用 ARCore 支持设备的 RGB 摄像头或主动深度传感器(如果 来创建深度图。然后,您可以使用提供的每像素深度 深度图可让虚拟对象准确地显示在其前面或后面 从而实现身临其境、逼真的用户体验。
例如,以下图片显示了 Android 虚拟人物在真实空间中的场景 房门旁边有一根后备箱Depth API 可正确遮挡 车身边缘后面。
若要了解详情,请访问:
ARCore v1.17.0 的新变化
在 ARCore SDK for Android 中值得注意
添加了允许缓冲多个相机帧的新方法。以及 如多线程渲染等其他技术,则可用于降低 帧速率的变化
添加了缺失的深度传感器用法和目标 FPS getter:
另请参阅 Android SDK for Android 完整版本说明。
在 ARCore SDK for Unity 中值得注意
- 在 Unity 2018.2 或更高版本中添加了对多线程渲染的支持; 在大多数情况下,这样做可以提升广告效果 并且有助于降低帧速率的变化这是一个 Unity 项目 设置,位于项目设置 >玩家 >Android > 其他设置 >多线程渲染。请参阅 如需了解详情,请参阅开发者指南。
- 添加了
SessionStatus.ErrorCameraNotAvailable
和SessionStatus.ErrorIllegalState
来指示具体的 ARCore 会话错误状态。
另请参阅 ARCore SDK for Unity 完整版本说明。
在 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 分辨率。
另请参阅:
ARCore Extensions for AR Foundation 中值得注意
此版本添加了以下显著变更:
AR Foundation 的
XRCameraConfiguration
扩展了方法,可让您 根据所需的条件选择合适的摄像头配置。 这些方法包括 GetTextureDimensions(), GetFPSRange(), 和 GetDepthSensorUsages()。 阅读详细说明。Unity 2019.3.0f6 现在是 ARCore 扩展的最低推荐版本。 AR Foundation 3.1.0-preview.6 需要使用 Unity 2019.3 或更高版本。
Unity 现在使用 Anchor、Cloud Anchor 和 Cloud Anchor ID 实现跨平台 AR API。 为体现这一点,更新了 ARCore 扩展的文档。
另请参阅:
在 ARCore SDK for Unity 中值得注意
此版本添加了以下显著变更:
- 大多数设备现在会返回更多受支持的摄像头配置,配置中 GPU 纹理分辨率,高于设备的默认 GPU 纹理分辨率。 (如需了解详情,请参阅支持 ARCore 的设备。) 这些经过扩展的 GPU 分辨率可通过 ARCoreCameraConfigFilter API 获得。
另请参阅:
ARCore v1.15.0 的新变化
ARCore Extensions for AR Foundation 中值得注意
此版本添加了以下重要变更。
添加了 CloudAnchors 示例,展示了如何为 Google Cloud 客户打造共享 AR 体验 同时支持 Android 和 iOS请参阅针对 Android 的说明 或 iOS。
Unity 2019.2.17f1 现在是推荐与 ARCore 搭配使用的最低版本 扩展程序。
在 ARCore SDK for Unity 中值得注意
此版本存在以下已知问题。
使用 Android 9 和 USB 3 数据线时,Instant Preview 可能会使 Unity 冻结。 如需解决此问题,请更新到 Android 10 或使用 USB 2 数据线。
使用 Unity 的游戏视图时,Instant Preview 可能无法在设备上显示 分辨率过高。要解决此问题,请降低 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 隐私权政策使用 ARCore 扩展程序软件包 以及 Google API 服务条款。您可以 停用此功能。
ARCore v1.13.0 的新变化
此版本添加了以下重要变更。
支持使用 ARCore Extensions for Unity 的 AR Foundation 构建 iOS 部署应用。
请参阅以下版本说明,了解其他 bug 修复和其他重大问题 更改。
ARCore v1.12.0 的新变化
此版本添加了以下更改:
支持使用 ARCore Extensions for Unity 的 AR Foundation 构建 Android 使用云锚点。
云锚点将发生以下变化:
- 为了遵守我们关于使用 ARCore SDK 1.12 的最新隐私权要求 或者,您必须以醒目的方式披露 以及用于学习本课程的链接, 通知屏幕上会显示以下消息:“为了支持此会话,Google 会处理 摄像头的视觉数据。”为此,您可以 我们的云锚点示例应用中提供了推荐的用户通知流程。
如需了解详情,请参阅用户隐私要求。
如需详细了解云锚点,请参阅以下资源:
Android:
Android NDK:
iOS:
Unity:
ARCore 扩展程序:
ARCore v1.11.0 的新变化
此版本添加了以下更改:
ARCore 服务已更名为面向 AR 的 Google Play 服务。 在 Google Play 设备上,该应用现在已作为 Google Play 服务的一部分进行分发。
在支持的设备上,ARCore 的摄像头配置的目标是 60 fps 并优先在配备深度传感器的设备上使用深度传感器。您可以使用 新增了相机配置过滤条件,以将相机拍摄帧速率限制为 30 fps, 阻止 ARCore 使用深度传感器,或根据这两个选项进行过滤。
如需详细了解相机配置,请参阅以下内容:
ARCore v1.10.0 的新变化
此版本新增了环境 HDR 照明估算功能, 适用于 Android、Android NDK 和 Unity 的 Lighting Estimation API。
这些 API 使用机器学习来分析输入的相机图像并 估计环境照明。您可以使用这些光照估算数据 来渲染极其逼真的光线,包括主方向光, 虚拟效果下的阴影、环境光、镜面高光和反射 对象的操作。这样,您就可以获得更逼真的虚拟内容。
若要了解详情,请访问:
ARCore v1.9.0 的新变化
ARCore SDK for Android 中的新功能
此版本新增了以下 API 和功能:
Scene Viewer 是一个沉浸式查看器, 实现在您的网站上的 AR 体验。可让 Android 移动设备用户 轻松地在其环境中放置和查看网络托管的 3D 模型,并与之互动。
新的增强图像功能:
ARCore 现在会跟踪移动的增强图像。 移动图像的示例包括:经过的公交车上的广告,或 图片。
检测到图像后,ARCore 便能继续跟踪 即使其暂时移动了 超出相机视野范围。
使用
AugmentedImage#getTrackingMethod()
(Java) 或ArAugmentedImage_getTrackingMethod()
(NDK),以确定增强的图片是否 当前正由摄像头跟踪(FULL_TRACKING
)或正在跟踪 基于其最后已知位置 (LAST_KNOWN_POSE
)。
Cloud Anchors 文档现在更详细地介绍了 托管和解析。
ARCore SDK for Unity 中的新功能
新的增强图像功能:
ARCore 现在会跟踪移动的增强图像。 移动图像的示例包括:正在经过的公交车上的广告, 图片。
检测到图像后,ARCore 便能继续跟踪 即使其暂时移动了 超出相机视野范围。
全新的
AugmentedImage.GetTrackingMethod()
让您的应用可以确定经过增强的图片 当前正由摄像头跟踪 (FullTracking
) 或正在跟踪 根据其最后的已知位置 (LastKnownPose
) 确定。
Cloud Anchors 文档现在更详细地介绍了 托管和解析。
ARCore SDK for iOS 中的新功能
支持以下设备:
第五代 iPad Mini
第三代 iPad Air
Cloud Anchors 文档现在更详细地介绍了 托管和解析。