2022 年 5 月(ARCore SDK 版本 1.31)更改为深度

本文档中列出的变更仅适用于使用 ARCore SDK 1.31 或更高版本编译的应用。使用旧版 ARCore 编译的应用不会受到影响。

在 2022 年 5 月的 1.31 版中,ARCore 的深度最大范围已从 8.191 米升级到 65.535 米。Depth API 现在使用每个像素的所有 16 位来表示深度,而之前仅使用 13 位来表示深度值。虽然在旧版 ARCore SDK 中使用以下方法的应用仍可使用以前的深度范围运行,但我们建议您在代码库中更新这些方法,以获得更好的功能。

针对具体平台的更改

Android (Kotlin/Java)

以前的方法名称和功能 新的方法名称和功能
最大范围为 8.191 米 最大范围为 65.535 米
Frame.acquireDepthImage() Frame.acquireDepthImage16Bits()
Frame.acquireRawDepthImage() Frame.acquireRawDepthImage16Bits()
Image.getFormat() 返回 ImageFormat.DEPTH16 Image.getFormat() 返回 HardwareBuffer.D_16

Android NDK (C)

以前的方法名称和功能 新的方法名称和功能
最大范围为 8.191 米 最大范围为 65.535 米
ArFrame_acquireDepthImage() ArFrame_acquireDepthImage16Bits()
ArFrame_acquireRawDepthImage() ArFrame_acquireRawDepthImage16Bits()
ArImage_getFormat() 返回 AR_IMAGE_FORMAT_DEPTH16 ArImage_getFormat() 返回 AR_IMAGE_FORMAT_D_16

Unity(AR Foundation)

所有更改均由 AR Foundation 处理。使用 AR Foundation 版本 1.31 或更高版本的 ARCore Extensions 进行构建时,AROcclusionManager.TryAcquireEnvironmentDepthCpuImage 会使用新的最大范围 65.535 米返回图片。