9

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

通过使用线方程定义墙,我设法取得了不错的结果:

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

通过“对于每个 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 的水平面检测准确。

4

3 回答 3

2

您可以在官方 Google AR Core github repo https://github.com/google-ar/arcore-unity-sdk/issues/31上参考此问题。如问题中所述,此功能在 ARCore SDK for unity (v1.2.0) SDK 链接中发布。希望这可以帮助 :)

于 2018-06-13T07:10:18.043 回答
2

自 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.

希望这可以帮助。

于 2019-04-07T06:36:17.083 回答
0

现在是 ARCore 的一部分,在1.2.0版上发布,适用于 android

于 2018-08-09T08:53:34.887 回答