Ray Tracing
基本原理:
我们知道为什么会看到物体的颜色,因为光线照射物体,未被吸收的光线反射到人眼,因此,我们看到的颜色,就是光的一部分,光线追踪就是模拟这个过程
光线假设:
延直线传播,光线间不会碰撞,光线会反射和折射,可逆性:人眼(相机)可以发射光线经过一系列反射传回光源
假设从摄像机(一个位置)发射光线primaryRay,穿过摄像机前平面的每个像素,投射到世界场景中(找到第一个投射到的物体)point,
可能和场景相交也可能不相交,其中相交的和光源做连线shadowRay,如果没有物体遮挡即对光源可见,
如果可见,point位于非阴影,根据光照模型算法计算着色,写入这个像素
whitted-style光线追踪:
穿过一个像素的光线primaryRay,投射到世界包含反射和折射secondaryRay,每次交点和光源连线shadowRay,只要这个光线路径未被遮挡,就将计算交点的着色颜色值加到像素中
求primaryRay与世界交点:
从光源(相机)的射线:o光源起点 + td(t:0---无穷参数,d是光方向)的线性插值
球几何的隐式函数:从表面任何点p到圆心距离平方 == 半径的平方
如何求交点?应即在光线又在球体表面的某个点,也就是同时满足这两个方程,即将ray表示某个点,传入球函数中,仅有一个参数t是未知的
根据数学公式,变换为2次多项式,有3中光线和球体的可能(相交相切相离),其中相交取首次的交点,相切取交点
其中结果需要为实数不能为虚数,并且结果需要为正数
如果用显示描述方法如何判断点(光线起点)是否和几何内,从光线向任意方向发送射线,看焦点个数,如果为偶数,则在几何外,为奇数在几何内