阴影投射位置计算
问题
阴影效果,可以通过对模型的额外渲染来完成。
从光源(这里只考虑点光源)出发,经过顶点,发出一条射线。此射线与平面的交点,即为顶点阴影所在位置。
这里不涉及具体代码,只讨论阴影位置的计算方法。
推导
如图:
□IJKL\Box{IJKL}□IJKL是空间中的一个平面,其外有一点光源F,G为某模型上的一个顶点,要计算FG射线与平面的交点。
作辅助线FD,GH垂直于平面,FG延长线交平面于点E。下面推导E点位置:
由于两条垂线相互平等,所以有:∣GE∣∣FE∣=∣GH∣∣FD∣\frac{|GE|}{|FE|} = \frac{|GH|}{|FD|}∣FE∣∣GE∣=∣FD∣∣GH∣
稍做调整:
1−∣GE∣∣FE∣=1−∣GH∣∣FD∣ 1-\frac{|GE|}{|FE|} = 1-\frac{|GH|}{|FD|} 1−∣FE∣∣GE∣=1−∣FD∣∣GH∣
∣FE∣−∣GE∣∣FE∣=∣FG∣∣FE∣=∣FD∣−∣GH∣∣FD∣ \frac{|FE|-|GE|}{|FE|} = \frac{|FG|}{|FE|} = \frac{|FD|-|GH|}{|FD|} ∣FE∣∣FE∣−∣GE∣=∣FE∣∣FG∣=∣FD∣∣FD∣−∣GH∣
用t代表上面的比例。用n⃗\vec{n}n