如何使用ARCore测量距离?
2022-09-02 08:59:21
是否可以计算两个 之间的距离?HitResult
或者,我们如何使用ARCore计算实际距离(例如米)?
是否可以计算两个 之间的距离?HitResult
或者,我们如何使用ARCore计算实际距离(例如米)?
在Java ARCore世界中,单位是米(我刚刚意识到我们可能不会记录这一点......aaaand看起来像没有。哎呀,错误提交)。通过减去两个 s 的平移分量,您可以获得它们之间的距离。您的代码将如下所示:Pose
首次点击时为:hitResult
startAnchor = session.addAnchor(hitResult.getHitPose());
在第二次命中时为:hitResult
Pose startPose = startAnchor.getPose();
Pose endPose = hitResult.getHitPose();
// Clean up the anchor
session.removeAnchors(Collections.singleton(startAnchor));
startAnchor = null;
// Compute the difference vector between the two hit locations.
float dx = startPose.tx() - endPose.tx();
float dy = startPose.ty() - endPose.ty();
float dz = startPose.tz() - endPose.tz();
// Compute the straight-line distance.
float distanceMeters = (float) Math.sqrt(dx*dx + dy*dy + dz*dz);
假设这些命中结果不会发生在同一帧上,那么创建一个很重要,因为每次调用时都可以重塑虚拟世界。通过使用锚点(而不仅仅是姿势)来保持该位置,其姿势将更新以跟踪这些重塑中的物理特征。Anchor
Session.update()
您可以使用 getHitPose() 提取两个姿势,然后比较它们的翻译组件 (getTranslation())。翻译定义为HitResult
...从目的地(通常是世界)坐标系到局部坐标系的位置矢量,以目的地(世界)坐标表示。
至于这个物理单位,我找不到任何评论。使用经过校准的相机,这在数学上应该是可能的,但我不知道他们是否真的为此提供了API。