[英]SceneKit: allow panning along X-axis and Y-axis for camera node
目的是在SceneKit中模拟摄像机,并让用户通过平移屏幕来平移摄像机的视点。
下面的代码模拟了摄像机在水平方向上的平移,但是您如何考虑在垂直方向上的同时平移呢?
您是否会进行另一次旋转,但更改X轴并基于translation.y(以使用户垂直平移数量)? 或者,还有更好的方法?
func doPan(sender: UIPanGestureRecognizer) {
// Get horizonal pan distance & convert to radians
let translation = sender.translationInView(sender.view!)
var xRadians = GLKMathDegreesToRadians(Float(translation.x))
// Rotate camera
xRadians = (xRadians / 20) + currentAngle
cameraNode.transform = SCNMatrix4MakeRotation(xRadians, 0, 1, 0)
// Update preview block
setPreviewBlock(cameraNode.position)
// Save value for next rotation
if (sender.state == UIGestureRecognizerState.Ended) {
currentAngle = xRadians
}
}
您可以将旋转矩阵相乘以获得新的变换。
另一种方法是使用相机节点的eulerAngles
属性。 该transform
, eulerAngles
和orientation
都contgrol节点的旋转,但它们使用不同的参数。
请参阅“ 旋转SCNCamera”节点,以其围绕假想球体的角度查看对象 ,以彻底了解/解释相机旋转。
另一种方法是旋转场景而不是移动相机。 看一下SCNAction
, rotateBy...
和rotateTo...
函数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.