如何使用Sceneform SDK和ARCore(如Google Measure应用程序)获取特定对象的宽度和高度?

时间:2018-08-24 06:46:11

标签: android kotlin arcore sceneform

我想获取诸如水壶,笔记本,键盘等活动对象的宽度和高度。所以我的问题是如何使用ARCore和Sceneform SDK android获取活动对象的宽度和高度。

示例: 就像Google测量应用一样。

2 个答案:

答案 0 :(得分:0)

ARCore的坐标系正在使用仪表,因此您必须创建两个锚并计算它们之间的距离。只需使用锚点的世界位置,减去它们以及所得向量的长度即可。

答案 1 :(得分:0)

这里是您获取两个锚点之间距离的方法:

float getMetersBetweenAnchors(Anchor anchor1, Anchor anchor2) {
    float[] distance_vector = anchor1.getPose().inverse()
            .compose(anchor2.getPose()).getTranslation();
    float totalDistanceSquared = 0;
    for (int i = 0; i < 3; ++i)
        totalDistanceSquared += distance_vector[i] * distance_vector[i];
    return (float) Math.sqrt(totalDistanceSquared);
}