将 allowsCameraControl SCNView 属性 限制为 pinch/zoom 手势
Constraining allowsCameraControl SCNView property to just pinch/zoom gesture
我有一个场景,在某些事件发生后,我希望用户能够与相机进行交互,但只是为了 pinch/zoom gesture
。为此,我想启用 allowsCameraControl
SCNView 属性。
当您启用 allowsCameraControl
时,所有手势都会启用,其中一些手势使用起来不是很直观也不容易控制。我还需要将滑动手势用于不同于控制相机的操作。
有没有办法将相机控制限制为 pinch/zoom gesture
?在文档中我找到了一个SCNCameraController
class,但是它的描述非常稀疏,一直没有弄清楚如何使用它。
allowsCameraControl 对于通用的东西来说有点酷,但同意,稀疏的文档。可能最好实现自己的相机控制。这还不错——添加一个 cameraEye 和 cameraFocus 节点,然后使用 SCNLookAtConstraint 进行设置。像这样:
func setView()
{
cameraEye.constraints = []
cameraEye.position = SCNVector3(x: 0, y: 10, z: 12)
cameraFocus.position = SCNVector3Make(0, 0, 0)
let vConstraint = SCNLookAtConstraint(target: cameraFocus)
vConstraint.isGimbalLockEnabled = true
cameraEye.constraints = [vConstraint]
}
从那里 - 缩放 in/out 只是改变 cameraFocus.position 的问题,具体取决于您想要的复杂程度。希望对您有所帮助!
我有一个场景,在某些事件发生后,我希望用户能够与相机进行交互,但只是为了 pinch/zoom gesture
。为此,我想启用 allowsCameraControl
SCNView 属性。
当您启用 allowsCameraControl
时,所有手势都会启用,其中一些手势使用起来不是很直观也不容易控制。我还需要将滑动手势用于不同于控制相机的操作。
有没有办法将相机控制限制为 pinch/zoom gesture
?在文档中我找到了一个SCNCameraController
class,但是它的描述非常稀疏,一直没有弄清楚如何使用它。
allowsCameraControl 对于通用的东西来说有点酷,但同意,稀疏的文档。可能最好实现自己的相机控制。这还不错——添加一个 cameraEye 和 cameraFocus 节点,然后使用 SCNLookAtConstraint 进行设置。像这样:
func setView()
{
cameraEye.constraints = []
cameraEye.position = SCNVector3(x: 0, y: 10, z: 12)
cameraFocus.position = SCNVector3Make(0, 0, 0)
let vConstraint = SCNLookAtConstraint(target: cameraFocus)
vConstraint.isGimbalLockEnabled = true
cameraEye.constraints = [vConstraint]
}
从那里 - 缩放 in/out 只是改变 cameraFocus.position 的问题,具体取决于您想要的复杂程度。希望对您有所帮助!