iOS14 SceneKit Camera 的视角

fieldOfView 是什么

在SceneKit里,我们需要可以调整相机的视角,显示不同内容。看下图很好理解:
image

但是iOS14里, SCNCamera的xFov,yFov属性都被废弃了,用 fieldOfView 和projectionDirection代替:当projectionDirection为水平方向时,设置fieldOfView就代表设置了xFov,而yFov会根据scene view的长宽比例,自动计算。

调整fieldOfView的作用

当摄像机和物体的距离不变时,把摄像机的视角 调大,相机看到的范围就变大,而视野里的物体就会变小,这个物体看起来更远。这个效果和把相机在自己z轴方向前后移动的效果类似,可以根据实际情况,选择一种方法。
下面是2副截图,调整了fieldOfView:
image
image

这个角度可以无限趋近于180度,但是当过大时,摄像机近处物体根据透视法则,形变地厉害,人无法识别图像。
image

sensorHeight,focalLength 和 fieldOfView 的关系

下图是一个成像原理图,其中 Angle of View 就是 ios的Field of View,通过这个图,可以知道如何使用sensorHeight,focalLength 计算 fieldOfView
image

另外,apple 的官方说明对于他们3者的计算,好像是说错了,见下图:
image
这里说 sensorHeight 为24, focalLenght为50的时候,fieldOfView是60度,和我们上面的计算方法不符合。之后我用xcode的工具计算了一下,证明确实是文档说错了。
image

posted @ 2021-03-17 11:00  幻化成疯  阅读(726)  评论(0编辑  收藏  举报