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