Games101 计算机图形学课程笔记: Lecture14 Ray Tracing 2

目录
加速结构
均匀空间划分(Uniform Spatial Partitions)
空间划分
空间划分例子
KD-Tree
KD-Tree存储数据结构
KD-Tree结构中进行光线追踪
KD-Tree的缺点
物体划分
Bounding Volume Hierarchy(BVH)结构
如何划分一个节点
BVH的存储
BVH算法
空间划分 vs 物体划分
辐射度量学
Radiant Energy and Flux(Power)
Radiant Intensity
加速结构
对AABB结构进行优化来加速光线追踪的速度

均匀网格(Uniform grids)
空间划分(Spatial partitions)
均匀空间划分(Uniform Spatial Partitions)
对整个空间用小格子进行划分,判定哪个格子与物体的表面相交。

先判断格子与光线是否相交,若相交,进一步再判断格子里的物体是否与光线相交。

可以通过格子的结构排列很快求出与光线相交的格子。因此这种方法可以提高算法的速度。

当格子过大或者过小时,效果都不好,因此根据经验,格子的数量由以下公式决定(格子数量 = 常数C×场景中物体的数量)

PS:当场景中物体分布不均匀时,不适合使用这种方法。

空间划分
空间划分例子

Oct-Tree:八叉树(在二维是四叉树)
KD-Tree:每次划分只沿着一条轴砍一刀,分成两块。竖直和水平在树的层次中交替。例:第一层一个节点水平分割,第二层两个节点竖直分割。
BSP-Tree:二分法,每次选一个方向将空间分割开。
KD-Tree

KD-Tree将空间划分为一个二叉树结构。

KD-Tree存储数据结构
非叶子节点存储:

划分轴:xyz轴
划分的位置:划分平面的沿轴位置
指向子节点的指针
非叶子节点不存储物体
叶子节点存储:
对应区域包含的物体
KD-Tree结构中进行光线追踪

对树结构进行逐级判断,判断每个节点表示的包围盒与光线是否有交点。

若一个节点与光线有交点,则其子节点都必须进行下一步判断。
若一个节点与光线没有交点,则可直接忽略该节点及其子节点,不用进行下一步判断。

KD-Tree的缺点
KD-Tree很难建立,因为判断三角形和盒子是否相交是困难的。三角形可能三个顶点都不在盒子中,但与盒子相交,这种情况很难判断。
上图一个圆圈与3,4,5节点都相交,则这三个节点都必须存储该圆圈。
物体划分
Bounding Volume Hierarchy(BVH)结构
BVH是将物体划分为多个部分。将多个三角形划分为一堆一堆的,再分别求不同堆的包围盒。

一个物体只会出现在一个节点中。先划分再求包围盒。
包围盒是有可能相交的。为了提高效率,应该让包围盒的相交尽可能小。

总结,BVH过程:

先为整个场景计算一个包围盒
把包围盒中的物体根据物体数量划分为两个部分
重新计算划分后的两个部分的包围盒
递归进行计算
停止条件:如当叶子节点内部有足够少的三角形
如何划分一个节点
选择一个维度来划分
技巧1:总是选择最长的轴来进行划分,让最长的轴变短
技巧2:选择中间的物体作为划分。
三角形从左到右进行排列,找到中位数三角形进行划分,这样可以使两个节点的三角形数平衡。(快速选择:可在O(n)时间内完成找到第K大的数字)
BVH的存储
非叶子节点存储:

包围盒
子节点指针
叶子节点存储:
包围盒
包含的物体
BVH算法

空间划分 vs 物体划分

辐射度量学
可以精确的定义光,光与物体的交互,实现真实的光照。
在物理上精确的定义了光的各个属性

Radiant Energy and Flux(Power)
Radiant Energy:是光源辐射出来的能量总量(Q),单位是焦耳(J)。
Radiant Flux(power) : 是单位时间内光源辐射出的能量,单位是瓦特(W)。

FLux还可理解为单位时间内通过的sensor(光子)
Radiant Intensity
单位时间内光源向单位立体角(Solid Angles)所辐射出的能量。

Angle:使用弧长来定义,弧长/半径

立体角:三维空间内的角,面积/半径平方

单位立体角:

对于整个球来说,立体角为:

使用立体角可以代表从秋心发出的光线的方向。
Intensity就是光源在任何方向的亮度。将每个立体角方向的randiant Intensity积分得到radiant flux。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值