图文讲解:图形学基础之光线追踪

来源:博客园 - 捞的不谈


光栅化在软阴影和光线多次弹射上的实现比较麻烦,所以引入了光线追踪的方法。光栅化通过Shadow Mapping来实现阴影的效果,它应用于点光源上。

光栅化是光线从相机沿着每个像素的方向打到场景上,然后弹射到光源,即只有一次的光线弹射。

图形学基础之光线追踪

光栅化的质量会比较低,但也有着它的好处,就是非常快。光线追踪根据实际物理规律来模仿的,会非常逼真,但是会非常慢

图形学基础之光线追踪

光栅化可用于实时渲染,光线追踪一般用于线下渲染

图形学基础之光线追踪

光线追踪:光线从摄像机穿过屏幕上像素,向场景内发射,光线有可能打到物体,也有可能打不到物体上,如果打到物体上,就向光源连去,如果能到达光源说明不在阴影里,如果无法到达,就是在阴影里。

图形学基础之光线追踪

它也是记录光线打到最近的物体上

图形学基础之光线追踪

然后向光源连线,有了入射方向和出射方向和法向量,就可以计算这点的着色,然后写回到像素内

图形学基础之光线追踪

(Whitted-Style) Ray Tracing:当光线打到某个光滑物体的表面,会发生反射,或者打到玻璃材质时会发生折射,考虑折射和反射光线打到的物体表面,

分别都对光源连线,计算所有点的着色,都加到同一个像素内。也要考虑光线能量的损失,不能无限反射。

图形学基础之光线追踪

先是定义光线,光线有一个起点,和一个方向,以及时间t。

图形学基础之光线追踪

光线与场景中的物体会发生交互,所以需要判断光线与物体上三角形的交点是否在三角形内。先需要判断交点是否在三角形所在平面内,然后判断交点是否在三角形内。

定义平面:过平面的法向量,和平面上的点p'确定一个平面,某个点p和p'的连线与法向量垂直,说明p点在该平面内。

图形学基础之光线追踪

计算光线与平面的交点,然后判断交点是否在三角形内。

图形学基础之光线追踪

也有算法可以直接算出交点是否在三角形内,用重心坐标来计算,要保证t>0,才有实际意义,当1-b1-b2,b1,b2非负说明交点在三角形内。

图形学基础之光线追踪

考虑光线与场景中所有的三角形求交,这样会非常非常慢,需要方法来加速这个过程,可以给一个物体加一个包围盒,这个包围盒会把物体完整的包围住,

如果光线都没有和包围盒交互,那么肯定不会和包围盒内的场景有交互。

图形学基础之光线追踪

包围盒是由三对平行的平面相交,产生的一个box

图形学基础之光线追踪

先考虑在二维平面下,然后在三维场景下。求出光线进入和离开每一对平面的时间

图形学基础之光线追踪

在求出三对进入和离开的时间后,当光线进入box时,光线必须在三对平面内都进入,所以t必须要大于最大的进入时间才能保证光线进入box

当光线离开box时,光线只需要离开任意一对的平面就说明光线离开box了,所以t要大于最小的离开时间。

图形学基础之光线追踪

总结如下:进入时间必须要小于离开时间,且离开时间要大于等于0,才能保证光线与box有交点

图形学基础之光线追踪

包围盒的平面与轴平行是为了简化计算

图形学基础之光线追踪


本文转自:博客园 - 捞的不谈,转载此文目的在于传递更多信息,版权归原作者所有。如不支持转载,请联系小编demi@eetrend.com删除。

最新文章