阿昌学习《RayTraing in one week》 (十一)
《第十一章》
《ray traing in one week》最后一个概念就是给摄像机添加一个消音模糊/聚焦模糊,或者通俗点就叫景深。
而对于景深这个概念,就关系到摄像机的原理了
我用我自己学习理解到的说一下景深是什么样子的:
一束平行光摄入凸透镜之后,光线会汇聚在一点上,延长,那么光线会在这一点之后离散,这个点就叫做焦点
离散后这束光就像一个圆锥体一样传播,而这个圆锥体的底部圆形就叫做弥散圆
人眼是有识别弥散圆的范围的,就是弥散圆的直径放的太大了或者太小了就看不清了,那么在能看清的范围内就叫做容许弥散圆(焦点前和焦点后各有一个)
而2个容许弥散圆之间的距离就叫做景深

1)光圈:光圈越大,景深越小。光圈越小,景深越大。
2)镜头焦距:镜头焦距越长,景深越小。焦距越短,景深越大。
3)拍摄距离:距离越远,景深越大。距离越近,景深越小。

而这个原理我们需要简化一下,需要从一个虚拟的透镜范围中发射射线,而这个透镜与平面的距离就是焦距。

简单点说就是,我们光线的创建就是经历了下边三个步骤:
1.原来是从一个点发射一条光线,最后获取颜色成像。
2.之后加入了多重采样,从一个点发射多条光线取平均值,最后获取颜色成像。
3.现在则是将从不同的点来发射光线。
既然发射光线是在一个圆形的透镜内随机产生点的,那么就写一个方法生成这个位置:

全新的摄像机来咯,加入透镜等参数:

主函数我们修改一下这个快门光圈,看看效果:

得到的图和书中基本一致的:

《第十二章》
最后一个部分就是书中的那张图,没有额外的太多,我直接把主函数截图给家看一下,基本就可以了:

既然是最后的图,分辨率也是使用了400*300,看一下我的输出结果吧:

到这里呢,One weenkend就是结束了,接下来就是 next week了,我也会持续更新的。
也给自己打个气,目前学了raytracing这个书,接下来一定要把光线追踪的圣经《Physically Based Rendering:From Theory To Implementation》(PBRT)好好学一下,加油啦!
如果有兴趣可以私信我,一起努力。