PBRT里的相机系统

PBRT中,他定义的NDC坐标系和我们图形学里的不一样。

图形学中NDC是[-1, 1]³;

而PBRT中的NDC如下图:

PBRT里的相机系统

正交投影

摄像机当前的坐标是原点坐标,正交投影的width和height暂时未知。

这里可以平移-n把n移到原点。

PBRT里的相机系统

缩放矩阵:

PBRT里的相机系统

因此正交投影矩阵是:

PBRT里的相机系统

由于在pbrt中的NDC,左上角是(0, 0, 0),右下角是(1, 1, 0)。

所以y的缩放要取负数。

而且pbrt把正交投影的l r t b的操作放到了ScreenToRaster的矩阵里。

他定义了一个ScreenWindow来代替l r t b。

既然我们要把ScreenWindow的左下角作为原点

PBRT里的相机系统

那么把左上角平移到原点,再经过scale变换后得到最后的NDC:

PBRT里的相机系统

那么定义如下矩阵:

PBRT里的相机系统            PBRT里的相机系统

最后的再把矩阵放大到Raster的大小:

PBRT里的相机系统

PBRT里的相机系统

那矩阵ScreenToRaster就是上面矩阵乘法结果:

PBRT里的相机系统