相关疑难解决方法(0)

如何使用平移手势使用四元数在SceneKit中旋转相机

我正在使用iOS SceneKit框架构建360视频查看器.

我想使用UIPanGestureRecognizer来控制相机的方向.

SCNNode有几个属性我们可以用来指定它们的旋转:( rotation旋转矩阵),orientation(四元数),eulerAngles(每个轴角度).

我读过的所有内容都说避免使用欧拉角来避免万向节锁定.

我想使用四元数有几个原因,我不会在这里讨论.

我无法让它正常工作.相机控制几乎就是我想要的地方,但有些不对劲.尽管我试图仅影响X和Y轴,但看起来好像相机正绕着Z轴旋转.

我相信这个问题与我的四元数乘法逻辑有关.多年来我没有做过与四元数相关的任何事情:(我的平移手势处理程序在这里:

func didPan(recognizer: UIPanGestureRecognizer)
{
    switch recognizer.state
    {
    case .Began:
        self.previousPanTranslation = .zero

    case .Changed:
        guard let previous = self.previousPanTranslation else
        {
            assertionFailure("Attempt to unwrap previous pan translation failed.")

            return
        }

        // Calculate how much translation occurred between this step and the previous step
        let translation = recognizer.translationInView(recognizer.view)
        let translationDelta = CGPoint(x: translation.x - previous.x, y: translation.y - previous.y)

        // Use …
Run Code Online (Sandbox Code Playgroud)

quaternions ios scenekit swift

3
推荐指数
1
解决办法
2005
查看次数

标签 统计

ios ×1

quaternions ×1

scenekit ×1

swift ×1