我想知道是否有人使用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的水平面检测准确。
最佳答案
现在是ARCore的一部分,已在version 1.2.0上发布,适用于Android