Ios Swift 3-SceneKit获取三维模型X Y Z旋转值
我有一个Ios Swift 3-SceneKit获取三维模型X Y Z旋转值,ios,3d,rotation,scenekit,collada,Ios,3d,Rotation,Scenekit,Collada,我有一个sceneView,在那里我加载了一个三维模型。模型显示良好,我可以通过触摸屏幕控制它 我需要的是在3d模型旋转时获得X,Y,Z旋转的值 如何实时获取这些值 我曾尝试使用带有手势识别器的相机旋转,但它们没有更新 override func viewDidLoad() { super.viewDidLoad() sceneView.scene = SCNScene(named: "PKB2"); sceneView.autoenables
sceneView
,在那里我加载了一个三维模型。模型显示良好,我可以通过触摸屏幕控制它
我需要的是在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
时,它正在创建一个用户可以通过触摸事件控制的新摄像头
您可以使用SCNSceneRenderer
协议的属性获取包含当前用于渲染视图的摄影机的节点,该协议符合SCNView
func handleTap(_ gestureRecognize: UIGestureRecognizer) {
let cameraNode: SCNNode? = sceneView.pointOfView
print(cameraNode?.rotation ?? "There is no camera set to the view")
}
在handleTap(:)
中,您正在创建一个新的摄像头。此摄影机的位置和旋转(或包含摄影机的节点的旋转)与用于渲染场景的摄影机的旋转无关。
在视图场景中将allowsCameraControl
设置为true
时,它正在创建一个用户可以通过触摸事件控制的新摄像头
您可以使用SCNSceneRenderer
协议的属性获取包含当前用于渲染视图的摄影机的节点,该协议符合SCNView
func handleTap(_ gestureRecognize: UIGestureRecognizer) {
let cameraNode: SCNNode? = sceneView.pointOfView
print(cameraNode?.rotation ?? "There is no camera set to the view")
}
非常感谢。知道了。当用两个手指移动对象时,是否有方法仅禁用相机的位置?我只想在使用
AllowCameraControl
时启用旋转e缩放。SceneKit团队仅将此属性视为调试工具。iOS 11添加了许多有用的功能来控制摄像头,但目前您必须手动响应事件并更改节点位置。检查帖子作为出发点谢谢。。知道了。当用两个手指移动对象时,是否有方法仅禁用相机的位置?我只想在使用AllowCameraControl
时启用旋转e缩放。SceneKit团队仅将此属性视为调试工具。iOS 11添加了许多有用的功能来控制摄像头,但目前您必须手动响应事件并更改节点位置。以检查柱为起点