在对smallpt进行学习和实验后,我编写了一个小型的路径跟踪器。

我自己没有写(也不理解)的唯一事情是如何从相机计算和发射初始光线。我掌握了正确的原理,但我正在寻找一些资源来描述如何进行操作:


计算光线的初始方向
对真实的镜头进行建模(与针孔相机相反) ),据说可以允许像景深这样的效果?

不需要最先进的数学和物理学,但是如果进行了详尽的解释也可以。

#1 楼

针孔相机模型的下一步是薄透镜模型,我们将透镜建模为无限薄的光盘。这仍然是理想化,远不及模拟真实相机,但它会为您提供基本的景深效果。



上图来自panohelp.com ,显示了基本思想。对于图像上的每个点,都有多条光线经过2D透镜表面上的每个点到达该图像点。因此,使用蒙特卡洛(Monte Carlo)生成这样的图像将需要为每条光线同时拾取图像平面上的2D采样点和透镜表面上的独立2D采样点。

设置的参数将是镜头半径(以场景单位为物理半径),它控制聚焦范围的浅浅(较大的镜头=较浅的聚焦范围),以及希望物体聚焦的距离。

要生成场景中的眼睛光线,您可以计算光线离开镜头表面的位置和方向;在此模型中,无需显式模拟像平面和通过透镜的折射。基本上,请以镜头为中心位于相机位置并面向相机方向。

基于图像位置,从相机位置(镜头中心)到场景中构建光线,就像在针孔模型中一样;然后找到它与焦平面的交点。那是来自该图像位置的所有光线都应该会聚的地方。现在,您可以将光线的起点偏移到镜头上的随机选择的点,并将其方向设置为朝向会聚点。

您可以通过允许焦平面为平面以外的物体或镜头为圆盘以外的物体并遵循相同的过程来对此进行概括。这可能会产生一些有趣的,甚至不是相当物理的效果。也可以通过对相机镜头元素进行更真实逼真的模拟来超越此简单模型,但这超出了我的专业知识。

#2 楼

请参阅Kolb等人的“用于计算机图形的逼真的相机模型”,SIGGRAPH95。

但是请记住,模仿真实相机的相机模型不一定是您想要的。渲染阶段。在视觉效果/后期制作场景中,相机模型引入的模糊/渐晕/失真越多,合成器/色彩计时器的效果就越差。通常最好将其作为后期通过。