Games101 学习笔记06

光线追踪

为什么需要光线追踪

光栅化

难以做全局光照、不好做软阴影,glossy refection、难以处理间接光照、虽然计算速度快但是效果差。

光线追踪

慢、质量高。

光线

  • 光线沿直线传播
  • 光线不会发生碰撞
  • 光线从光源到人眼里,光路具有可逆性。
光线投射
image-20220321101358896

发生多次折射Whitted-Style光线追踪

image-20220321101811993
光线定义
image-20220321141232791
光线和球的交点
image-20220321141433378 image-20220321141629417

根据t的值可以有三种情况,相交,相切和相离。对于所有的隐式表面都可以用同样的方法求交点,只要保证t有意义和二次方程有解。

光线和三角形网格求交

可以先求出平面和光线的交点,然后判断交点是否再三角形内。

平面可以用点法向式定义。

image-20220321143051032

下面算法可以直接判断三角形和光线相交。

image-20220321143617299

n=3的线性方程组,可以用克莱姆法则求解,需要判断解的正确性,t大于0,b1、b2、1-b1-b2都在0到1之间。

光线和几何求交

把几何的所有三角形求交,找出距离最近的点、但是会非常慢,复杂度为像素个数 * 三角形个数 * 反射次数。

引入包围盒(Bounding Box),经常用Axis-Aligned Bounding Box(AABB)。

和包围盒求交

二维情况

image-20220321165255302

三维情况

进入所有的对面才能进入盒子,从任意对面出去都会从盒子离开。

image-20220321165530146 image-20220321165734090

当包围盒和坐标轴平行时,计算相交时间非常快!

加速效率结构

均匀空间划分(Uniform Spatial Partition)
  1. 找到包围盒
  2. 划分网格
  3. 光栅化一条直线,找出所有相交的网格
  4. 对含有物体网格判断其物体和光线是否相交

因为对网格的相交判断速度大于对物体的求交,网格不能划分太细和太疏。

局限:对于分布不均匀的场景不太实用。

空间划分(Spatial Partition)
image-20220322102331711

做光线追踪之前,提前建立好KD-Tree,KD-Tree存储如下

image-20220322102720044

局限:aabb和三角形的求交不好判断、三角形可能和多个aabb有交集,会产生多次判断。

物体划分和层次包围盒(Object Partitions & Bounding Volume Hierarchy)
image-20220322105637999 image-20220322110614939

BVH存储如下

image-20220322110806470 image-20220322111002195
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值