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 基础)

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