繁体   English   中英

SceneKit:允许沿X轴和Y轴平移相机节点

[英]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属性。 transformeulerAnglesorientation都contgrol节点的旋转,但它们使用不同的参数。

请参阅“ 旋转SCNCamera”节点,以其围绕假想球体的角度查看对象 ,以彻底了解/解释相机旋转。

另一种方法是旋转场景而不是移动相机。 看一下SCNActionrotateBy...rotateTo...函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM