空间变化
从上一篇技术博客 软件光栅器三之世界矩阵,相机变换矩阵,透视投影矩阵,透视除法,视口变换矩阵 我们直接给出了各大变换矩阵的表示形式以及实现的代码
这一节博客 我将讲述从一个顶点从相机空间到到视平面的坐标变化过程,理解这个过程坐标值大小的范围对于实现ShadowMap,ProjectiveTexture,Pick技术来说至关重要。当然我还是省略掉大量详细的推导过程,只是给出结果。
如下面图所示,红色圈住的部分,
一,从ViewSpace到HomogeneousSpace(CVV)
就想下面的图一样:
实际上D3D11的CVV体和齐次裁剪空间是同样的概念,假设透视投影变换之后顶点为(X,Y,Z,W),则CVV体或者齐次裁剪体为一个长为2W,高为2W,宽为W的长方体,而不是长为2高为2宽为1的规格化的长方体,更不是所谓的单位立方体。
二,从HomogeneousSpace到NDC
NDC空间其实就是一个长为2高为2宽为1的长方体,如下面图所示:
感觉CVV和NDC其实长得好像,就是单位不一样。当然请记住,裁剪是发生在CVV空间的,很多人误以为CVV体就是单位立方体或者长为2高为2宽为1的长方体,这种想法是不对的。
三,从NDC空间到视平面
演变过程如下面所示: