Swift 3 - SceneKit得到3d模型X Y Z旋转值

时间:2017-06-15 23:59:56

标签: ios 3d rotation scenekit collada

我有一个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)

    }

1 个答案:

答案 0 :(得分:2)

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

您可以使用SCNSceneRenderer符合SCNView协议的pointOfView属性来获取当前用于呈现视图的相机的节点。

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