gpt4 book ai didi

ios - 如何删除 SceneKit 相机上的 "Fish Eye"效果?

转载 作者:搜寻专家 更新时间:2023-11-01 06:39:39 25 4
gpt4 key购买 nike

我正在使用 SceneKit。我创建了自己的相机并将其分配给场景,并且调整了它的 xFov 和 yFov。当我设置一个高于 50 的值时,开始出现一些失真。屏幕边缘附近的所有内容都被拉伸(stretch) - 几乎就像相机突然变成了“鱼眼”。

我需要 xFov 和 yFov 高于 50(我实际上需要它是 100),但我不能有那种失真。我该怎么办?

最佳答案

您所问的问题在理论上并非不可能,但至少在理论上很有趣。

当您增加视野时,物理相机会发生什么变化?它变得越宽,它看起来就越“鱼眼”。像 SceneKit 这样的 3D 图形管道的投影矩阵和透视划分以类似的方式工作。它看起来有点不同,因为它是直线变换而不是球面透镜的效果,但它的总体思想是相同的——它将相机“看到”的 3D 空间体积(称为截锥体)映射到观察平面上。这是 3D 图形的一般方面,而不是 SceneKit 特有的东西,所以你可以找到很多 good tutorials涵盖 underlying math很不错。

平截头体投影确定了某物占据的视角量与其在观察平面上的宽度之间的某种关系。您无法真正改变这种关系,并且仍然具有 3D 硬件可以通过单个矩阵乘法(和透视除法)应用的线性(好吧,有理数,但主要是线性)变换。

从理论上讲,您可以定义一种不同的关系 - 例如,大角度对应于靠近 View 中心的 View 平面的更大部分,但对应于远离中心的更小部分.但是你不能在相机变换中这样做......你必须在 some kind of post-processing shader 中逐个像素地进行这样的计算。 . (事实上​​ ,这通常是 rendering for the lenses of a VR headset 的工作方式。)

关于ios - 如何删除 SceneKit 相机上的 "Fish Eye"效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37127637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com