【发布时间】:2021-10-05 11:40:51
【问题描述】:
这是我的透视相机的 FOV 问题吗?在我的场景中,球体在到达屏幕边缘时看起来像鸡蛋/椭圆形而不是球体。有人知道为什么会这样吗?
【问题讨论】:
标签: three.js
这是我的透视相机的 FOV 问题吗?在我的场景中,球体在到达屏幕边缘时看起来像鸡蛋/椭圆形而不是球体。有人知道为什么会这样吗?
【问题讨论】:
标签: three.js
听起来您遇到了 3D 的不幸现实之一。
在任何 3 维场景中,来自给定点的视图最自然地被认为是一个球体。当我们渲染场景时,我们正在渲染该球体的一部分,但我们需要以某种方式将球体的那一部分转换为平面矩形,因为我们的计算机屏幕是平面的,而不是圆形的。
因此,为了将 3D 场景渲染为矩形,软件需要使用投影。对于 3D 渲染,最常见的投影可能是直线投影,也称为指针投影。 (在 Wikipedia 上,有关摄影中的直线投影的讨论,请参阅“Rectilinear lens”,有关制图中的直线投影的讨论,请参阅“Gnomonic projection”。)
直线投影的最大优点是场景中的直线在渲染中显示为直线。一个很大的缺点是远离中心的物体会变形:小圆圈会变成大椭圆。
这种现象是不可改变的数学事实,任何软件都无法克服。但是,您可以采取一些措施来缓解这种情况。一种选择是使用更窄的视野。另一种选择是使用不同的投影;这里的答案对如何做到这一点有一些建议:Three.js - Fisheye effect
【讨论】: