1.为什么使用光线追踪
a.光栅化局限:(以下三点)
软阴影:现实世界中阴影分界线是渐变的
glossy反射:带有镜面或者高光的反射
间接光照:光线只从窗户进来,但是整个屋子被照亮
2.光线追踪的问题
a.光线追踪常常用于离线渲染(追求质量)
b.渲染一帧需要花费 1000 CPU 小时(下图)
3.如何定义光线
光线定义假设:
1.光线沿着直线传播(实际上不正确)
2.光线不会互相碰撞(实际上不正确)
3.光线在场景中传播,最终进入人的眼睛(实际上不正确)
4.光路可逆
4.光线投射
1.处理场景中的每一个像素,也就是每一个点
2.从眼睛的方向到该点连线,判断该点是否也能够和光源连线,如果可以,则该点不在阴影里。从光源到眼睛,有一条光路,便可以计算该点的着色。
每一个像素,从眼睛到该像素点发出的光线,和场景中物体相交,交点和光源连线,如果没有遮挡,则将该点的颜色写入像素中。
Whitted-Style 光线追踪 (1980年)
递归算法:
1.光线可以无限传播(反射,折射,继续弹射)
2.如果能够找到可逆的光路,则叠加像素颜色
技术问题一:光线和物体表面的交点
光线数学定义:
o为光源的原点
d为光线的方向
t为时间
光线和球体相交
光线和隐式表面的交点:
![在这里插入图片描述](https://img-blog.csdnimg.cn/a2d4759a03d240b8a16d92f632c40ffd.png?x-oss-process=image/watermar
光线和三角形求交(划重点):
1.光线和平面求交点
2.交点是否在三角形内
平面的定义:
1.定义一个法向量
2.定义一个点,平面上任何点和该点的的向量乘以平面法向量结果为0
光线和平面相交
MT算法,计算光线和三角形相交
1.t大于0
2.b1,b2,b3 都是非负的
原理来自三角形重心坐标理论:参考文章
https://zhuanlan.zhihu.com/p/65495373
致谢:
截图和公式来源闫令琪老师games101课程 Ray Tracing 1
https://www.bilibili.com/video/BV1X7411F744?p=13
感谢闫令琪老师为我们带来这么精彩的图形学课程