如何在路径跟踪器中实现场的深度?我读过这个文章,它解释了一切背后的理论&我已经很好地理解了这种效果需要达到的效果,基于以前使用DSLR的经验,但是我对如何编写所有东西感到有点困惑,尽管我理解了大部分涉及的计算(在阅读了上面链接的文章之后)。
我知道如何计算焦点、焦距和二次射线。但我搞不懂如何把这一切结合起来,创造出所需要的“模糊”。我在网上没有发现多少,所以我希望这里的人能用一些代码来解释这个问题。
有人能给我看看他们的实施情况吗?

发布于 2016-12-03 15:23:44
如果你已经知道如何产生第二射线,那么你已经掌握了困难的部分。你现在要做的就是找到这个次级射线所产生的颜色。这是完全相同的过程,使用初级射线寻找颜色,在基本射线追踪。
在对大量的次级射线重复这一过程之后,所有这些颜色的平均值就是你分配给所讨论的像素的颜色(你不使用初级射线--它的唯一目的是产生次级射线)。这是与基本射线追踪的唯一区别。
当我试图理解这一点时,我个人的困难是,我试图理解光线是如何从镜头上的不同点返回到眼睛/摄像机的。需要理解的是,这只是镜头的近似值,光线根本不需要考虑眼睛/照相机。
镜头正被一个圆盘近似。
如果你直视某个点(焦点),所有这些不同的次级射线都向你展示了你从光盘上的不同点看到的东西。
如果一条初级射线在焦距处撞到一个物体,但是有一个较近的物体,它并不是完全阻挡在路上,但几乎,那么一些次射线会在到达焦点之前击中更近的物体。这将给更近的物体一个模糊的边缘,使焦点的物体部分模糊,即使物体本身是清晰的焦点。
所有这些都是我们所期望的。对于这个层次的解释,这模仿了一个真正的镜头的效果,根本不必考虑折射。
https://computergraphics.stackexchange.com/questions/4344
复制相似问题