我正在使用 ARKit 在运行时检测墙壁,当触摸屏幕的某个点时,我会使用类型为.estimatedVerticalPlane 的点击测试。我正在尝试将 Y 旋转应用于与检测到的平面方向相对应的节点。
我想计算旋转:
private func computeYRotationForHitLocation(hitTestResult: ARHitTestResult) -> Float {
guard hitTestResult.type == .estimatedVerticalPlane else { return 0.0 }
// guard let planeAnchor = hitTestResult.anchor as? ARPlaneAnchor else { return 0.0 }
// guard let anchoredNode = sceneView.node(for: planeAnchor) else { return 0.0 }
let worldTransform = hitTestResult.worldTransform
let anchorNodeOrientation = ???
return .pi * anchorNodeOrientation.y
}
如何推断给定墙的方向来应用 anchorNodeOrientation,本文对提供 ARAnchor 的命中测试类型很好地说明了这一点,但对于估计的 VerticalPlane 则为零。 (ARKit 1.5 如何获得垂直平面的旋转)。
另外,当我这样做时:在调试器上安装 hitTestResult.worldTransform 会打印 worldTransform 91 度等的旋转值,但是我无法从转换中获取它。
1 回答
我终于设法通过以下转换从转换中获得了欧拉角,仍然必须检查结果的正确性: