检测ARCore中的垂直平面

时间:2017-08-31 09:06:07

标签: java kotlin augmented-reality arcore

我想知道是否有人使用ARCore SDK实时识别设备前面的垂直平面。

通过使用线方程定义墙来设法获得不错的结果:

z = Multiplier * x + Constant (For every y)

通过“for every y”评论我的意思是我忽略y轴(从房间的2d映射看上面的墙),以便计算定义墙的线。

乘数是点之间的旋转:

let angleDeg = Float((360 - angle + 360) % 360) * Float.pi / 180.0;

所有计算是:

let angle: Int = Int((atan2(pointA.z - pointB.z, pointA.x - pointB.x) * 180) / Float.pi) % 360
     yRotation = Float((360 - angle + 360) % 360) * Float.pi / 180.0

    if pointA.x == pointB.x {
         multiplier = Float.infinity
    } else {
         multiplier = (pointA.z - pointB.z) / (pointA.x - pointB.x)
    }
    constant = pointA.z - multiplier * pointA.x
}

现在,当用户四处走动并对许多点云点进行采样时,我会触发该计算。

结果很好,但不如ARCore的水平面检测精确。

3 个答案:

答案 0 :(得分:3)

您可以在官方Google AR Core github repo https://github.com/google-ar/arcore-unity-sdk/issues/31上查看此问题。如本问题所述,此功能在ARCore SDK中发布,用于统一(v1.2.0)SDK link。希望这有帮助:)

答案 1 :(得分:1)

现在是ARCore的一部分,已在version 1.2.0上为Android发行

答案 2 :(得分:0)

自ARCore 1.2发布以来,我们可以使用Config.PlaneFindingMode枚举的四个值。

这是代码的样子:

public static final Config.PlaneFindingMode DISABLED
// Plane detection is disabled.

public static final Config.PlaneFindingMode HORIZONTAL
// Detection of only horizontal planes is enabled.

public static final Config.PlaneFindingMode VERTICAL
// Detection of only vertical planes is enabled.

public static final Config.PlaneFindingMode HORIZONTAL_AND_VERTICAL
// Detection of both horizontal and vertical planes is enabled.

希望这会有所帮助。