光线追踪:为什么下图中的球体会被拉伸?


8

在此处输入图片说明 在此处输入图片说明

一些背景。上面是彼得·雪莉(Peter Shirley)在一个周末的书中的“光线追踪”中的代码和得到的图像。从代码中可以看到,他添加了一些领域。但在最终图像中,并排有两个椭圆体。无论我看了多少次代码,我都无法理解为什么会这样。谁能向我解释?这是源代码的链接。 https://github.com/petershirley/raytracinginoneweekend


2
这看起来很正常,这是由于透视相机靠近球体并且具有较大的FOV值所致。
PaulHK '18

顺便说一句,这不是光线跟踪的专有功能。
塞巴斯蒂安·马赫

Answers:


16

在外围出现拉伸的形状是透视投影的结果。视场(FOV)越宽,拉伸效果越强。

为了演示效果,我在ShaderToy上写了一个简单的示例:https ://www.shadertoy.com/view/MltBW2

正如您在下面的图片中所看到的(对应于40、80和120的FOV;如果我没有记错的话),这对于宽视角(例如90°及以上)尤其明显。

视野40° 视野80° 视野120°


很好的例子。不过,在地平面上具有某种纹理(例如网格)可能会有所帮助;否则,很难说出改变视角和移动相机之间的区别。(另请参见:多莉变焦。)
Ilmari Karonen

1
还应注意,相对于物体到相机的距离,FOV较高时通常会发生这种效果。这看起来很不自然,因为您通常看不到眼睛附近的物体。至少,并非没有迅速转过眼睛。
Nicol Bolas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.