【GAMES101 课程小结】:Lecture 13 Ray Tracing

引言.引入光线追踪的目的

1. 光栅化不易实现一些全局的效果
在这里插入图片描述(1)阴影
(2)漫反射效果
(3)场景中的间接光照

2. 光栅化速度快,但真实感相对较差
在这里插入图片描述
光线追踪更符合物理规律,但计算量大。

一.基础光线追踪算法

1. 模型假设
(1)光线沿直线传播
(2)光线不会发生碰撞(两道光线交叉后,仍分别沿原方向传播)
(3)光路具有可逆性(光线从光源发出,经过一系列反射折射损耗,最终进入人眼)

2. 基本思路
(1)沿“视点” → “屏幕上的像素” 方向往场景中做射线。
在这里插入图片描述
(2)若而已eye ray 与场景中的物体有交点,则将该点与光源做一个连线。判断中间是否有其他物体阻挡:若有,该点在阴影里。若无,则通过着色模型计算该点着色。
在这里插入图片描述

(3). Whitted-风格 光线追踪(Whitted - Styled)
在这里插入图片描述

在这里插入图片描述

【1】光线在场景会被多次反射,折射。
【2】路径上的每个交点都做一次着色,然后叠加到像素上。
【3】考虑光线传播过程中的能量损失。

二. 具体实现

1. 光线与物体求交
(1)求光线与隐式表面的交点
在这里插入图片描述

求方程组的解,解得时间 t。

(2)求光线与显示表面的交点
方法:光线与三角形求交
思路:
[1].光线和平面求交
在这里插入图片描述
[2].判断交点是否在三角形内 — Moller Trumbore 算法

在这里插入图片描述

其中P1, P2, P3 分别是三角形的三个顶点。
求解出 t, b1, b2。
当解满足
    b1 >= 0
    b2 >= 0
    (1 - b1 - b2)  >= 0
    t >= 0
时,求出的交点在三角形中。 

2. 加速光线与物体表面求交的过程
(1) 采用包围盒方法(Bounding Volumes)
在这里插入图片描述

包围盒完完全全将物体包围,因而,当光线与包围和没有交点的情况下,也绝不会和物体有交点。

(2)判断光线与包围盒是否有交点

当光线满足与包围盒的三组对面都有交点时,可认定光线与包围盒有交点。
在这里插入图片描述
相当于求解,光线与三组对面相交的时间t
在这里插入图片描述
每组对面都可以求解出一个tmin 与 tmax。

·取t_enter = max(tmin) 表示光线进入包围盒的时间。
·取t_exit = min(tmax) 表示光线离开包围盒的时间。
·最后判断 若 t_exit < t_enter,则可认为光线穿过包围盒。
在这里插入图片描述
另外还需注意:
在这里插入图片描述
若t_exit < 0 则表示,包围盒在光线的反方向。
若t_exit >= 0, t_enter < 0,则认为光源在包围盒中。

综上,仅当 t_enter < t_exit && t_exit >= 0时,可判定光线穿过包围盒。

参考文档

【1】. https://www.bilibili.com/video/BV1X7411F744?p=13
【2】. http://games-cn.org/graphics-intro-ppt-video/

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值