测量方程通过对一系列携带radiance的光线进行积分,去描述对一个抽象测量数值的计算。比如,当计算图像上第j个像素的数值时,希望对相邻像素的光线(每束光线都带有图像重构函数的权重)进行积分。
这里忽略景深效果(因此,胶片平面上的每个点,对应从相机出去的一根光线)。因此像素数值,可以写作,对胶片平面每一个点上,对每一束相机光线的入射radiance乘以一个权重函数的积分。
其中,是对第j个像素的测量,是胶片上的一点。在这个设置中,是像素的滤波函数,delta函数选择了从出发的相机方向。
如果我们将这个积分展开,可以看到一个出射辐射度(光源发光)和权重函数(第j个像素对光线的敏感度)之间完美的对称。从这里,可以引出一个概念,emission和measurement在数学上可以交换。
这种对称很重要:它意味着,可以用两种不同的方式去思考渲染的过程。第一种方式是,光可以被从光源发射,在场景中反弹多次,最终到达相机,传感器的We描述了它的贡献。或者,可以认为是从传感器发出了一个虚拟的量,这个量是一种对光源的测量。
这个思想不仅仅是理论上的,可以被用于实际。一个例子是Dual Photography,他表明通过对其他相机拍摄的输入图片进行处理,可以从视频投影的视角拍摄照片 - 这可以认为吧投影仪当做相机,然后用原始相机作为光源去照亮场景。
通常称作到场景中某一点 之间的光线的importance。当用测量放出去计算像素是,importance通常部分或者全部由delta函数描述。对于其他不是图像合成的测量来说,importance可以自由构造,因此这里描述的方法可以用于展示,测量方程描述的在路径上的积分,如何也是一个需要计算的积分。
16.1.1 sampling cameras
双向光线传输算法需要能估计场景中任意一点的importance函数的数值。这在计算从光源出发的一条路径上一点的importance很有用。Camera::We()方法,计算了相机上原点p出发,向w方向前进的光线的importance。如果提供了,pRaster2返回了光线在胶片上的光栅化的坐标;概念上,这可以认为是离散的索引j,然后包含了它的最大值;实际上,这个函数返回很小的数值,去更精确的指定光栅化的位置。
这里推导了投影相机的We,其他相机没有。
PerspectiveCamera::We
- 给定相机-世界坐标转换,方法首先将相机的(0,0,1)主方向转到世界空间,计算给定方向是否朝外。否则不对。
- 第二个检查需要考察光线的起始位置是否在胶片上,如果在胶片以外,则不对。
对于带有有限光圈的相机。我们在镜片上有一个交点,及其方向。但是不知道胶片上对应的点,但是,我们又知道所有离开这一点的光线都在z=focalDistance平面上聚焦(这里因为光线都聚焦了,所以,胶片平面在焦平面上)。因此,可以计算光线与焦平面的交点,然后将这一点使用透视投影举证,转换成对应胶片上的一点。对于针孔光圈,这里和任意平面(z=1)相交,去得到沿着光线的一个点。
注意,这里的计算,依赖于一个条件,即:胶片平面在焦平面上!
网友评论