ARCore 中的新显著变更。
ARCore v1.42.0 中的新功能
在 Unity 版 Geospatial Creator 中贴靠图块
ARGeospatialCreatorAnchor
Editor Inspector 面板中添加了“Snap to Tile”按钮。此按钮可将“地形”或“屋顶”锚点的“仅限编辑器”海拔高度值设置为锚点当前纬度和经度处的 3D 图块几何图形的顶部。请注意,此属性不会影响运行时的行为。这有助于调整锚点在编辑器中的位置,以匹配其在运行时的位置。
ARCore v1.41.0 中的新功能
Geospatial Creator API
Geospatial Creator for Unity 现在支持在编辑器模式下创建和操控 Geospatial Creator 对象。Geospatial Creator API 指南介绍了这些新推出的类和 API。
AR Foundation 版本 5.x 支持(Beta 版)
ARCore Extensions for Unity 的 AR Foundation 现在支持 AR Foundation 版本 5.x。如需将现有项目迁移到 AR Foundation,请参阅迁移指南。
ARCore v1.40.0 的新变化
iOS 上的场景语义
Scene Semantics API 现在可在 ARCore SDK for iOS 以及面向 iOS 平台的 ARCore Extensions for Unity AR Foundation 中使用。借助 Scene Semantics API,开发者能够实时了解用户周围的场景,从而将像素标记为 11 类户外组件。如需了解详情,请参阅场景语义简介。
iOS
Unity(AR 基础)
在 Geospatial Creator for Unity 中搜索地图注点
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)
如需了解详情,请参阅街景几何图形开发者指南 (C)。
Unity(AR 基础)
如需了解详情,请参阅街景几何图形开发者指南 (Unity)。
iOS
如需了解详情,请参阅街景几何图形开发者指南 (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 基础)
如需了解详情,请参阅地理空间锚点。此外,Geospatial 示例已更新为包含 Rooftop 锚点。
ARAnchorManagerExtensions.ResolveAnchorOnRooftopAsync()
会为场景中的游戏对象提供位于指定纬度、经度、屋顶之上的海拔高度和方向处的锚点。ResolveAnchorOnRooftopPromise
ResolveAnchorOnRooftopResult
iOS
如需了解详情,请参阅地理空间锚点 (iOS)。此外,GeospatialExample 应用也已更新,以包含 Rooftop 锚点。
GARSession.createAnchorWithCoordinate:altitudeAboveRooftop:eastUpSouthQAnchor:completionHandler:error:
用于在指定位置、屋顶上方的海拔(以米为单位)和相对于地球的方向创建屋顶锚点。GARCreateAnchorOnRooftopFuture
包含解析 Rooftop 锚点的异步状态。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 基础)
如需了解详情,请参阅地理空间深度 (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
以外的 2D 坐标调用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。请参阅在 iOS 应用中启用 AR,了解如何使用 Swift Package Manager 与 ARCore 集成。
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 修复和性能提升,请参阅版本说明:
- 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 会话的情况下使用:例如,仅在 VPS 可用时显示“进入 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
其他更改和更新
如需了解其他变更、bug 修复和性能提升,请参阅版本说明:
- 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
。 - 旧版 API/端点在 2023 年 8 月之前将继续获得支持。
- 如需了解更多详情,请参阅 ARCore 1.33 云锚点端点变更。
- 新 API 使用域名
地形锚点
- Geospatial Terrain Anchors API 会在相对于水平位置地形的指定水平位置和高度处创建锚点。
其他更改和更新
如需了解其他变更、bug 修复和性能提升,请参阅版本说明:
- ARCore SDK for Android 版本说明
- ARCore for Android NDK 版本说明
- ARCore SDK for iOS 版本说明
- ARCore Extensions for AR Foundation 版本说明
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 中指定目标 API 级别将替换 ARCore 的
targetSdkVersion
值。
- Android SDK:在项目的
其他更改和更新
如需了解其他变更、bug 修复和性能提升,请参阅版本说明:
- 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 现已经过优化,支持更远距离的深度传感功能,从而扩大了可表示的深度观测范围。深度图像全部采用 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 基础)
全新 ARCore Geospatial API:
AREarthManager
提供地球相对坐标中的定位功能。EarthTrackingState
可获取最新帧的 Google 地球跟踪状态。EarthState
用于维护地球错误条件。
GeospatialPose
描述相对于地球的特定位置、海拔高度和罗盘方向。ARGeospatialAnchor
用于为场景中的游戏对象提供锚点,并在相对于地球的位置和方向上指定锚点。
iOS
全新 ARCore Geospatial API:
GAREarth
提供地球相对定位。GAREarthState.earthState
用于管理错误状态和条件。GAREarthState.trackingState
用于维护地理空间数据所需的跟踪状态。
GARGeospatialTransform
表示全局转换,包括位置、方向、海拔高度和精度估算值。GARSession.createAnchorWithCoordinate:altitude:eastUpSouthQAnchor:error:
在指定位置和方向上相对于地球创建地理空间锚点。
其他变更
如需了解其他变更、bug 修复和性能提升,请参阅版本说明:
- ARCore SDK for Android 版本说明
- ARCore for Android NDK 版本说明
- ARCore SDK for iOS 版本说明
- ARCore Extensions for AR Foundation 版本说明
ARCore v1.30.0 中的新功能
此版本没有新功能。
Android
- 使用
@NonNull
和@Nullable
对 API 返回值添加了注解。 - 将用于构建示例的构建工具版本更新为:Gradle 至 7.0.2,将 Android Gradle 插件版本更新为 7.0.4。现有的 ARCore 应用不需要升级这些工具。如需了解新功能、已知问题和不兼容信息,请参阅关于 Android Gradle 插件的 Android 文档。
Unity(AR 基础)
添加了新的
arcore-unity-extensions-without-edm4u.tgz
版本。此版本变体不会捆绑外部依赖项(如 External Dependency Manager for Unity),并且允许升级到 EDM。 使用此精简版可以解决使用 Firebase 库时出现的不兼容问题。如需开始使用,请参阅 ARCore Extensions for AR Foundation 的安装说明。将 ExternalDependencyManager 升级到 v1.2.168 以更好地支持 2021.2 及更高版本,详情请参阅 EDM 的更新日志。
修复了以下问题:即使会话配置没有导致 FPS 下降,ARCore 会话也会配置每一帧。
iOS
- 修复了各种问题并提升了性能。
ARCore v1.29.0 中的新功能
此版本没有新功能。
Android
- hello_ar_java 和 hello_ar_kotlin:使用
SCREENSPACE_WITH_APPROXIMATE_DISTANCE
更改了对象放置时的颜色,以便更好地区分使用即时放置放置的对象。 - persistent_cloud_anchor_java:向示例添加了缺失的构建依赖项。修复了以下问题:即使项目设置正确,托管任何锚点也会显示
CloudAnchorState ERROR_NOT_AUTHORIZED
状态。
Unity(AR 基础)
- ARCore Extensions 软件包现在依赖于 ARKit XR 插件,以确保安装的 AR Foundation 版本与 ARKit XR 插件版本兼容。这修复了在 Unity 2019.x 上安装 ARCore 扩展和启用 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
- 修复了各种问题并提升了性能。
填写版本说明
- 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 作为机器学习模型的输入。
ARCore v1.26.0 中的新功能
此版本增加了以下重要变更:
- 现在,录制和播放中的数据集支持 URI。
其他更改和更新
请参阅以下版本说明,了解其他 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,可提供无需图像空间过滤的深度图像
- 向 Recording & Playback API 添加自定义数据轨迹录制功能
- 能够执行深度点击测试
原始深度
Raw Depth API 提供相机图像的深度数据,该图像具有比完整 Depth API 数据更高准确度,但并不总是覆盖所有像素。原始深度图像及其匹配的置信度图像可以进一步处理,从而允许应用仅针对其各个用例使用准确度足够高的深度数据。
开发者指南:
自定义航迹记录
借助 Recording & 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:
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 中的新功能
此版本为 ARCore Extensions for AR Foundation 添加了新的 Recording and Playback API 和 Camera Config Filter API。如需了解详情,请参阅 ARCore Extensions 完整版本说明。
其他更改和更新
如需了解其他 bug 修复和其他重大更改,请参阅以下版本说明。
ARCore v1.21.0 中的新功能
此版本新增了适用于 Android、Android NDK 和 Unity 的 Recording API 和 Playback API。
录制和播放
借助 Recording API 和 Playback API,您可以在给定环境中录制一次视频和 AR 数据,并使用该内容替换实时摄像头会话以进行测试。ARCore 会将录制的会话保存到设备上包含多个视频轨道和其他杂项数据的 MP4 文件中。然后,您可以让自己的应用使用这些数据代替实时相机会话。这样,您就可以无限期地重放该内容以尝试不同的 AR 效果,而无需返回现场。
若要了解详情,请访问:
ARCore v1.20.0 中的新功能
此版本增加了以下重要变更:
新增了对持久性云锚点的支持。
更新了 Android 和 Android NDK 的映像元数据功能。
新的指南要求使用 Gradle 5.6.4 或更高版本,以便在搭载 Unity 2018.4 或更高版本的情况下支持 ARCore Extensions for AR Foundation 或 ARCore 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、Android NDK 和 Unity 的 Instant Placement API。
- 使用 Unity 针对 Android 11 进行构建的新指南。
即时展示位置
借助 Instant Placement API,用户可以将 AR 对象放置在屏幕上,而无需等待 ARCore 检测表面几何图形。随着用户在环境中不断移动,对象的放置位置也会实时优化。ARCore 在放置 AR 对象的区域检测到正确的姿势后,白色对象会自动更新为符合姿势要求的正确姿势,并变为不透明。
以下片段显示了现实世界桌上的一个虚拟 Android 小人。这个图形是白色的,放在第一次放置时要小得多。在 ARCore 优化场景尺寸计算后,人物会跳到更准确的位置。这可能会导致对对象的感知“大小”有所不同。
若要了解详情,请访问:
ARCore v1.18.0 中的新功能
此版本增加了以下重要变更:
- 适用于 Android、Android NDK 和 Unity 的新 Depth API。
- 添加了关于创建增强面孔资源并将其导入 Android Studio 的新指南。
AR Foundation
和ARCore XR Plugin
在4.1.0-preview.2
中均支持 Depth API。
Depth 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 项目设置,位于 Project Settings > Player > Android > Other Settings > Multithreaded Rendering。如需了解详情,请参阅开发者指南。
- 添加了
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 的设备。
这些更高的 GPU 分辨率可通过
getSupportedCameraConfigs(CameraConfigFilter)
API 获得。
另请参阅:
在面向 AR 基础的 ARCore Extensions 扩展中值得注意
此版本增加了以下重要变更:
AR Foundation 的
XRCameraConfiguration
通过一些方法扩展,让您能根据所需条件选择合适的摄像头配置。这些方法包括 GetTextureDimensions()、GetFPSRange() 和 GetDepthSensorUsages()。请阅读详细说明。Unity 2019.3.0f6 现在是推荐 ARCore Extensions 的最低版本。AR Foundation 3.1.0-preview.6 需要 Unity 2019.3 或更高版本。
Unity 现在在其跨平台 AR API 中使用术语“锚点”“云锚点”和“云锚点 ID”。ARCore 扩展程序的文档已更新以反映这一点。
另请参阅:
在 ARCore SDK for Unity 中值得注意
此版本增加了以下显著变更:
- 大多数设备现在会返回其他受支持的摄像头配置,这些摄像头配置的 GPU 纹理分辨率低于设备的默认 GPU 纹理分辨率。(如需了解详情,请参阅支持 ARCore 的设备)。 这些更高的 GPU 分辨率可通过 ARCoreCameraConfigFilter API 获得。
另请参阅:
ARCore v1.15.0 中的新功能
在面向 AR 基础的 ARCore Extensions 扩展中值得注意
此版本增加了以下显著变更。
添加了 CloudAnchors 示例,展示如何为 Android 和 iOS 创建共享 AR 体验。请参阅 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 隐私权政策和 Google API 服务条款,收集和处理您在使用 ARCore 扩展程序软件包时产生的数据。您可以选择不自动迁移。
ARCore v1.13.0 中的新功能
此版本增加了以下显著变更。
支持使用 ARCore Extensions for Unity 的 AR Foundation 构建使用云锚点构建 iOS 应用。
如需了解其他 bug 修复和其他重大更改,请参阅以下版本说明。
ARCore v1.12.0 中的新功能
此版本增加了以下更改:
iOS 新增增强面功能。如需了解详情,请参阅此概览、quickstart和开发者指南。
支持使用 ARCore Extensions for Unity 的 AR Foundation 构建 Android 应用以及云锚点。
云锚点将出现以下变化:
- 为遵守我们关于使用 ARCore SDK 1.12 或更高版本的最新隐私权要求,您必须在应用中以醒目的方式披露云锚点的使用,方法是在通知屏幕上添加以下文本和了解详情链接:“为了支持此会话,Google 将处理来自摄像头的视觉数据。”为此,您可以实现我们的云锚点示例应用中提供的推荐用户通知流程。
有关详情,请参阅用户隐私要求。
如需详细了解云锚点,请参阅:
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 添加了新的环境 HDR 光照估测功能。
这些 API 使用机器学习来分析输入的摄像头图像并估计环境光照。您可以使用此光照估测数据渲染极为逼真的光照,包括主方向光、阴影、环境光、镜面高光和虚拟物体上的反射。因此,虚拟内容让人感觉更真实。
若要了解详情,请访问:
ARCore v1.9.0 的新变化
ARCore SDK for Android 中的新功能
此版本新增了以下 API 和功能:
Scene Viewer 是一种沉浸式查看器,可让您在您的网站中实现 AR 体验。它可以让 Android 移动设备用户轻松地在其环境中放置和查看 Web 托管的 3D 模型并与之互动。
新的增强图像功能:
ARCore 现在会跟踪移动的增强图像。动态图片的示例包括路过公交车上的广告,或用户转动手时握持的平面物体上的图片。
检测到图像后,ARCore 能够继续跟踪图像的位置和方向,即使图像暂时移出摄像头视图也是如此。
使用
AugmentedImage#getTrackingMethod()
(Java) 或ArAugmentedImage_getTrackingMethod()
(NDK) 确定相机当前跟踪的增强图像 (FULL_TRACKING
),还是根据其最后的已知位置 (LAST_KNOWN_POSE
) 跟踪增强图像。
现在,云锚点文档包含有关如何托管和解析锚点的更详细说明。
ARCore SDK for Unity 中的新功能
新的增强图像功能:
ARCore 现在会跟踪移动的增强图像。移动图像的示例包括路过公交车上的广告,或当用户移动时拿着的平面物体上的图像。
检测到图像后,ARCore 能够继续跟踪图像的位置和方向,即使图像暂时移出摄像头视图也是如此。
借助新的
AugmentedImage.GetTrackingMethod()
API,您的应用可以确定相机正在跟踪增强图像 (FullTracking
),还是根据其最近一次的已知位置 (LastKnownPose
) 跟踪增强图像。
现在,云锚点文档包含有关如何托管和解析锚点的更详细说明。
ARCore SDK for iOS 中的新功能
支持以下设备:
第五代 iPad Mini
第三代 iPad Air
现在,云锚点文档包含有关如何托管和解析锚点的更详细说明。