我想知道是否有人使用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
}
现在,当用户四处走动并对许多点 Cloud 点进行采样时,我会触发该计算 .
结果很好但不如ARCore的水平面检测精确 .
2 回答
您可以在官方Google AR Core github repo https://github.com/google-ar/arcore-unity-sdk/issues/31上参考此问题 . 如本问题中所述,此功能在ARCore SDK中发布,用于统一(v1.2.0)SDK link . 希望这可以帮助 :)
现在是ARCore的一部分,发布于version 1.2.0 for android