我有一个通过orbitTurntable / allowsCameraControl放置在SCNVector3.zero处的地球仪,以及一个使用SCNLookAtConstraint观察地球的相机。这运作得很好。我要添加的功能是清理旋转的能力,以便将自由旋转捕捉到最接近的5度,并且每次经过5度刻度时都会发出咔嗒声。解决此问题的最佳方法是什么?
我没有任何运气..在renderer()中,我尝试了SCNTransformConstraint,SCNMatrix4MakeRotation,SCNAction.rotateBy,当然,直接更改了eulerAngles.x / y。任何指导表示赞赏!谢谢!!
var scnView: SCNView = {
let v = SCNView()
v.autoenablesDefaultLighting = true
v.allowsCameraControl = true
v.defaultCameraController.interactionMode = .orbitTurntable
v.defaultCameraController.target = SCNVector3.zero
v.defaultCameraController.inertiaEnabled = true
return v
}()
let camConstraint = SCNLookAtConstraint(target: scene?.rootNode)
答案 0 :(得分:0)
我在关闭相机控制上取得了一些成功
v.allowsCameraControl = false
然后使用平移手势
let panGesture = UIPanGestureRecognizer(target: self, action: #selector(panHandler(_:)))
scnView.addGestureRecognizer(panGesture)
但是最终我使用了https://github.com/dclelland/DirectedPanGestureRecognizer
let gestureRecognizer = DirectedPanGestureRecognizer()
gestureRecognizer.delegate = self
scnView.addGestureRecognizer(gestureRecognizer)
我必须编写自己的旋转等代码,但这是值得的!