以下答案仅供参考,有错欢迎留言。
Chapter 10 : Stenciling
1. Prove that the general shadow matrix S reduced to Sdir if Lw = 0 and S reduces to Spoint for Lw = 1.
P.833~834的C.4.7 Ray/Plane Intersection给出了S的推导过程,Sdir和Spoint唯一的区别在于Sdir所用的L为(Lx,Ly,Lz,0), 而Spoint所用的L为(Lx,Ly,Lz,1),为了在处理阴影时统一用一个Shadow Matrix计算,引入Lw来表示0和1,具体证明可用笔验算。
2. Prove that by doing the matrix multiplication for each component, as was done in §10.5.1 for directional lights.
// Lw=1
首先把变形为s = (-p*n·(p-L) + (n·p+d)*(p-L))/(-n·(p-L))
由S’ = [Px, Py, Pz, 1] * S,
Sw = -PxNx - PyNy - PzNz + n·L= -n·(p-L),
即上式的分母(在投影到齐次空间w=1上时会自动做除法,所以接下来只要证明[Px, Py, Pz, 1] * S计算得出的分子与公式变形得到的分子(-p*n·(p-L) + (n·p+d)*(p-L))是相同的即可)。
将分子(-p*n·(p-L) + (n·p+d)*(p-L))
化简:-p*n·p + p*n·L + n·p*p - n·p*L + d*p - d*L = p*n·L - L*n·p + d*p - d*L = p*(n·L+d) - L*(n·p+d)
由S’ = [Px, Py, Pz, 1] * S,
Si = Pi*(n·L + d) - Li*(PxNx+PyNy+PzNz+d) = Pi*(n·L + d) - Li*(n·p + d),
即计算所得的Si与上述由分子得到的化简式相同,证毕。