chapter 11:离焦模糊
文章翻译
现在我们来实现最后一个功能:离焦模糊,请注意,很多摄影爱好者都称之为"景深",所以"离焦模糊"仅在朋友之间使用。
在真实相机中,离焦模糊产生的原因是这需要一个大孔(而非仅是一个小孔)来收集光线。这将会对任何事物散焦,但是如果我们坚持使用小孔的镜头,那么在一个确定的距离下,任何事物都在焦点内。到物体聚焦的平面距离是由镜头和胶片/传感器之间的距离来控制,这就是为什么当你改变在什么事物在焦点内时,你看到镜头相对相机移动了(这也会在你的相机相机内发现,只不过是传感器在移动),光圈是一个能有效控制镜头多大的一个孔。对于一个真实的相机来说,如果你需要更多的光线,你可以让光圈变得更大,并且将得到更多的离焦模糊。对于我们的虚拟相机,我们可以有一个完美的传感器并且不需要更多的光线,因此当我们想要离焦模糊,我们仅有一个光圈就够了。
真实的相机有一个复杂的复合镜头,我们的代码可以依次模拟:镜头、光圈和计算出向哪发送光线,计算好后翻转图像(图像在胶片上的投影是翻转后的),图形学人员通常使用薄镜头近似。
我们也不需要模拟相机内的任何器件,我们的目的是渲染相机外的图像,那是不必要的复杂性。相反,我通常让光线从镜头表面出发,通过发现聚焦的投影平面幕布,把它们送往这个虚拟的屏幕(在 focus_dist 距离处)
为了实现离焦模糊,我们仅需要有一个在 lookfrom 周围圆盘内的光线源点,而不是一个具体的点:
使用一个大光圈:
我们可以得到: