Swift 3 - SceneKit获取3d模型X Y Z旋转值

Swift 3 - SceneKit get 3d model X Y Z rotation Value

我有一个 sceneView,我在其中加载了 3d 模型。模型显示正常,我可以触摸屏幕控制它。

我需要的是在 3d 模型旋转时获取 X、Y、Z 旋转的值。

如何实时获取这些值?

我尝试将相机旋转与手势识别器结合使用,但它们没有更新。

override func viewDidLoad() {
        super.viewDidLoad()

        sceneView.scene = SCNScene(named: "PKB2");

        sceneView.autoenablesDefaultLighting = true
        sceneView.allowsCameraControl = true

        // add a tap gesture recognizer
        let tapGesture = UITapGestureRecognizer(target: self, action:
            #selector(handleTap(_:)))
        sceneView.addGestureRecognizer(tapGesture)

    }


    func handleTap(_ gestureRecognize: UIGestureRecognizer) {
        // retrieve the SCNView

        let cameraNode = SCNNode()
        cameraNode.camera = SCNCamera()

        print(cameraNode.rotation)

    }

在您的handleTap(_:)中,您正在创建一个相机。该摄像机的位置和旋转(或包含摄像机的节点的旋转)与用于渲染场景的摄像机的旋转无关。 当您在视图上将 allowsCameraControl 设置为 true 时,SceneKit 正在创建一个用户可以通过触摸事件控制的新相机。

您可以通过SCNView遵循的SCNSceneRenderer协议的pointOfView属性获取包含当前用于渲染视图的摄像头的节点。

func handleTap(_ gestureRecognize: UIGestureRecognizer) {
    let cameraNode: SCNNode? = sceneView.pointOfView
    print(cameraNode?.rotation ?? "There is no camera set to the view")
}