如何将相机朝它所面对的方向缩放?

How can I zoom a camera in the direction it is facing?

我正在 swift 使用 scenekit 制作 3d 游戏。我有一个捏合手势识别器,这样用户可以在捏合时缩放 in/out。

我可以轻松访问当前的 x、y、z 坐标以及围绕每个轴的旋转。

我的问题实际上是想出将我的相机移到哪里。

起初我花了一些时间用三角函数来解决这个问题,但我很难想出一个适用于所有情况的通用解决方案。我现在相信解决方案在于矩阵。但是,我不确定实现它们的准确方法。

例如,在每次调用我的捏合处理程序函数时调用旋转矩阵显然是不好的,会让我的相机疯狂旋转。

为方便起见,我为 SCNNode 和场景矩阵链接了苹果参考:

SCNNode

Scenekit Matrices and vectors

不要移动相机,只需更改其 xFovyFov 属性:

https://developer.apple.com/library/prerelease/ios/documentation/SceneKit/Reference/SCNCamera_Class/index.html#//apple_ref/occ/instp/SCNCamera/yFov

在此处查看答案:

请注意,更改相机的 FOV 会影响视角,并且物体在某些时候会显得非常扭曲。将相机移近这些物体可以解决此问题。