总览:
假设眼睛是点光源,光线只会发生镜面反射和折射,从眼睛射出的一条光线穿过一个像素,这个像素的颜色等于所有到达光源的光线与物体交点上的能量合。光线当然是有衰减的,例如打在圆上的光可能有40%发生镜面发射,60%发生了折射。
平面:如果满足 ,那么这个点就在平面上
光线:
用三个等式可以解出左边的三个未知量,此外我们还可以通过重心坐标的系数来判断这个点是否在三角形内。但是这个算法的缺点是太慢了,每个光线都要和所有三角形进行计算,在发生反射后还要重新计算,计算量很大。解决办法是包围盒,如果光线连外面的包围盒都没有打到的话就肯定达不到里面的物体:
光线进入盒子:当它进入了所有的面,即取所有t_min的最大值
光线出去盒子:当它出了一个面就算