【问题标题】:SceneKit: allow panning along X-axis and Y-axis for camera nodeSceneKit:允许相机节点沿 X 轴和 Y 轴平移
【发布时间】:2016-05-16 03:46:50
【问题描述】:

目标是在 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
    }
}

【问题讨论】:

    标签: ios swift scenekit


    【解决方案1】:

    您可以将旋转矩阵相乘以获得新的变换。

    另一种方法是使用相机节点的eulerAngles 属性。 transformeulerAnglesorientation 都控制节点的旋转,但它们使用不同的参数化。

    请参阅Rotate SCNCamera node looking at an object around an imaginary sphere 以获得有关相机旋转的完整答案/解释。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-04
      • 1970-01-01
      • 1970-01-01
      • 2017-12-25
      相关资源
      最近更新 更多