【发布时间】:2025-12-17 03:25:05
【问题描述】:
我正在尝试阅读并理解 Google ARCore 的域模型,尤其是 Android SDK 包。目前此 SDK 处于“预览”模式,因此没有关于如何使用此 API 的教程、博客、文章等。甚至 Google 本身也建议只阅读源代码、源代码 cmets 和 Javadocs 以了解如何使用 API。问题是:如果您还不是计算机视觉专家,您会觉得领域模型有点陌生和陌生。
具体来说,我有兴趣了解以下类之间的基本区别和正确用法:
根据Anchor的javadoc:
"描述现实世界中的一个固定位置和方向。要停留在物理空间中的一个固定位置,这个位置的数值描述会随着ARCore对空间理解的提高而更新。使用getPose()得到此锚点的当前数字位置。此位置可能会在调用 update() 时随时更改,但不会自发更改。"
所以锚有一个姿势。听起来你“放置一个锚点”到相机中可见的东西上,然后 ARCore 会跟踪该锚点并不断更新其Pose 以反映其屏幕坐标的性质?
来自Pose的javadoc:
"表示从一个坐标系到另一个坐标系的不可变刚性变换。正如所有 ARCore API 提供的那样,姿势总是描述从对象的局部坐标系到世界坐标系的变换(见下文)......这些变化意味着每一帧都应该被认为是在一个完全唯一的世界坐标系中。"
所以它听起来像 Pose 只是相机的“当前帧”独有的东西,并且每次更新帧时,所有可能会重新计算所有锚点的姿势?如果不是,那么 Anchor、它的 Pose、当前帧和世界坐标系之间的关系是什么?什么是姿势真的,反正? “姿势”是否只是一种存储矩阵/点数据的方式,以便您可以将锚点从当前帧转换为世界帧?还是别的什么?
最后,我看到帧、姿势和锚点之间存在很强的相关性,但还有PointCloud。我在com.google.ar.core 中看到的唯一使用这些的类是Frame。 PointClouds 似乎是 (x,y,z) - 坐标,具有代表 ARCore 对 x/y/z 分量实际上正确的“信心”的第四个属性。因此,如果 Anchor 有一个 Pose,我会想象一个 Pose 也会有一个 PointCloud 代表 Anchor 的坐标和对这些坐标的信心。但是 Pose 没有有 PointCloud,所以我一定完全误解了这两个类建模的概念。
问题
我在上面提出了几个不同的问题,但它们都归结为一个简洁、可回答的问题:
Frame、Anchor、Pose 和 PointCloud 背后的概念有什么区别?您何时使用它们(以及用于什么目的)?
【问题讨论】:
标签: computer-vision augmented-reality arcore android-sdk-2.3 android-augmented-reality