GAMES101第十三讲Ray Tracing 1笔记

光线追踪1

  • 一、光栅化和光线追踪特点
  • 二、光线投射(Ray Casting)
  • 三、递归光线追踪 Recursive(Whitted-Style)Ray Tracing
  • 四、光线与面求交点
  • 五、加速求光线与面的交点
  • 参考文献

一、光栅化和光线追踪特点

(1)光栅化的特点:
GAMES101第十三讲Ray Tracing 1笔记_第1张图片
①不能很好地处理软阴影。
②无法很好地处理光线会反射多次的场景。
③光栅化的处理速度快,但质量相对较低。
④通常用于实时处理。
(2)光线追踪的特点:
①光线追踪的精度高,但处理速度很慢。
②通常用于离线处理。

二、光线投射(Ray Casting)

(1)图形学中关于光线的假设:
①光线沿直线传播。
②光线不会相互碰撞。
③光线从光源传播到人眼。(光的可逆性:由于光线是从光源传播到人眼,因此从人眼也可以得到一条线回到光源)
(2)光线投射
GAMES101第十三讲Ray Tracing 1笔记_第2张图片
①假设人眼和光源都是一个点。
②从人眼出发,穿过每个像素点与路径上所有的物体会有交点,找到最近的那个交点,将其投射回光源,该点与光源之前无遮挡,那么该点就会被照亮,根据着色算法就可以给这个点着色。

三、递归光线追踪 Recursive(Whitted-Style)Ray Tracing

(1)一根光线通常不会只弹射一次,尤其是当遇到玻璃等材质时,还会发生折射现象,本节介绍的Whitted风格光线追踪可以用来解决这一问题。
(2)Whitted风格光线追踪的例子
GAMES101第十三讲Ray Tracing 1笔记_第3张图片
①假设圆形为一个玻璃球,光线投射到球面显然会发生一次镜面反射。
②除了反射外,光线投射到球面还会发生一次折射,然后再投射出玻璃球。
③检查这些点是否被光源直射,然后就可以得到这些被光源照亮的点的着色情况。
④将所有被着色的值全部累加,则是这个像素点的着色值。
(3)使用Whitted风格光线追踪的一个效果图
GAMES101第十三讲Ray Tracing 1笔记_第4张图片
(4)了解光线追踪的大致流程后,接下来我们需要学习如何求光线和面的交点。

四、光线与面求交点

(1)光线是一条射线。以下是光线的表达式,其中o是光线的起点,d是光线的方向,t可以理解为时间。
GAMES101第十三讲Ray Tracing 1笔记_第5张图片
(2)光线与球求交点
GAMES101第十三讲Ray Tracing 1笔记_第6张图片
①交点指的是该点既在光线上,又在球上。那么将光线的表达式带入球面的表达式求解即可。
②表达式的求解如下。
GAMES101第十三讲Ray Tracing 1笔记_第7张图片
③将球形推广所以有隐式表面与光线求交点
GAMES101第十三讲Ray Tracing 1笔记_第8张图片
①同理,交点指的是该点既在光线上,又在隐式表面上。将光线的表达式带入球面的表达式求解即可。
(4)光线与显式表面的交点
GAMES101第十三讲Ray Tracing 1笔记_第9张图片
①我们之前学过的显式表面由许多三角形组成,那么光线与显式表面的交点就可以简单转化成光线与该显式表面所有的三角形求交点。
②如果我们与所有的三角形都求是否有交点,速度会非常慢。
③小知识:如果光线从物体的内部出发,那么与物体一定有奇数个交点;如果光线不是从物体的内部出发,那么与物体一定有偶数个交点。
(5)光线与三角形求交点
GAMES101第十三讲Ray Tracing 1笔记_第10张图片
①将光线与三角形求交点转化成,先求光线与三角形所在平面的交点,在求该交点是否在三角形内。
②平面p可以定义为平面的一条法线N和平面上的一个点p’。
GAMES101第十三讲Ray Tracing 1笔记_第11张图片
③接下来求光线与平面的交点,同样是把光线带入平面的等式中求解。解得交点后,在判断交点是否三角形内即可。
GAMES101第十三讲Ray Tracing 1笔记_第12张图片
(6)光线与平面求交点(重心坐标版)
GAMES101第十三讲Ray Tracing 1笔记_第13张图片

五、加速求光线与面的交点

(1)如果我们采用最简单的光线与面求交点方法,需要把每个像素点与所有物体(也就是所有的三角形)求交点,很显然这样的计算量非常大。我们需要加速求光线与面的交点的过程。
GAMES101第十三讲Ray Tracing 1笔记_第14张图片
(2)包围盒(Bounding Volumes)
GAMES101第十三讲Ray Tracing 1笔记_第15张图片
①使用一个简单的几何体,称之为包围盒,来将物体包围住。
②先检测光线与包围盒是否有交点,如果有在求光线与物体的交点,这样可以减少很多的计算量。
(3)轴对齐包围盒
GAMES101第十三讲Ray Tracing 1笔记_第16张图片
①长方体包围盒是三对两两平行的平面组成的包围盒。
②这种包围盒称为轴对齐包围盒AABB,并且其平面分别与x,y,z轴平面平行。
(4)光线与2D轴对齐包围盒求交点
GAMES101第十三讲Ray Tracing 1笔记_第17张图片
①光线与x方向的两个平面可以求得两个交点,分别表示光线在t_min进入这对平面,在t_max离开这对平面。
②光线与y方向的两个平面可以求得两个交点,同样分别表示光线在t_min进入这对平面,在t_max离开这对平面。
③综合这四个交点,也就是对这两段线段求交集,所得的两个t_min和t_max即为光线进出这个2D轴对齐包围盒的时间。
(5)光线与3D轴对齐包围盒求交点
①将2D的情况推广到3D的情况,可以得到:

  • 光线只有进入所有的平面,才算进入这个包围盒。
  • 光线一旦离开任意一对平面,则离开这个包围盒。

②因此对于一个3D轴对齐包围盒,我们可以求得进入盒子的时间为t_enter,离开盒子的时间为t_exit。
③我们还需要判断t_enter和t_exit的大小,才能判断出光线与包围盒的关系。
GAMES101第十三讲Ray Tracing 1笔记_第18张图片
(6)判断t_enter和t_exit的大小关系
GAMES101第十三讲Ray Tracing 1笔记_第19张图片
①由于光线是一条射线,因此t_enter和t_exit都需要大于0;
②如果t_exit小于0,那么盒子是在光线的背后,光线与盒子无交点。
③当且仅当t_enter小于t_exit,并且t_exit大于等于0时,光线与盒子存在交点。
(7)选择轴对齐包围盒的原因
GAMES101第十三讲Ray Tracing 1笔记_第20张图片
①对于任意一个平面,我们求光线与平面的交点需要求解上面的公式。
②对于与轴面平行的平面,我们只需要对其分量求解即可,这样可以简化计算量。以与x轴面平行为例子,我们只需要求p’与o在x轴上的分量差,然后与d在x轴上的分量差做除法,即可求得t。

参考文献

课程视频链接: GAMES101 Lecture13 Ray Tracing 1

你可能感兴趣的:(计算机图形学,图形学)