参考视频:Lecture 13 Ray Tracing 1_哔哩哔哩_bilibili
Ray tracing
原因
Rasterization 格栅话不能处理好global effects,如↓
简介反射:光线在到达人眼前不止弹射一次
基本假设
1)光是沿着直线传播
2)光线交叉的时候不会发生碰撞
3)reciprocity 可逆性- 光线从光源发出并进入人眼
Ray Casting- Generating Eye Rays
Pinghole Camera Model
眼睛发出的光线只能看到最近的!
有入射方向,出射方向就可以算法线,然后算着色
shadow mapping
实现步骤
步骤1:从光源出发看场景,记录看到场景的深度
步骤2:从相机角度观察,再投影回光源
实际操作
1)光源记录深度
step2:实际到光源看到的集合形状
问题
硬vs软阴影
本影/半影原理
Whitted-Style Ray Tracing
1)光滑表面,光线折射
2)漫反射物体,光线停止
Recursive Ray Tracing
每一个弹射的点都去算它着色的值
Ray-Surface Intersection 交点
Ray Euation
Ray Intersection with sphere
Ray Intersection with Implicit Surface 隐式表面
Ray Intersection with Triangle Mesh 显式表面
!随便在一个封闭图形内取一个点,从中间作一条射线,和这个图形的交点一定是奇数个!
解决三角形和光线的交点问题
定义平面(好熟悉的内容啊,好像高数学过...?)
光和平面交点
再判定点是否在三角形内
Moller Trumbore Algorithm
克拉默法则有点忘了
Accelerating Ray-Surface Intersection
Bounding Box 包围盒,包围体积(AABB)
光线如果盒都碰不到,哪里碰得到物体呢↓
此处理解:长方体是三个对面形成的交集
看光线和包围盒有没有交点
2D
取交集!↓
3D
三个对面都满足光线已经进去了,才能说光线在盒子内;只要光线离开任意一个对面就已经离开盒子了
第三种情况就是光源在盒子里!
Uniform partitions (Grids)
一般划分的个数
Spatial Partitions
解决场景中格子分布不均匀的问题
Oct-Tree效果不好,BSP-Tree不好计算
KD-Tree(对空间划分)
*实际物体不存放在中间节点上,只存放在叶子节点上
光线和格子没交点,不用判定;有交点则和盒子里所有的物体求交点
缺点:
1)同一个物体
2)kt tree 建立并不简单,需要考虑三角形和盒子的相交
解决方法↓
Object Partitions & Bounding Volumen Hierarchy(BVH) (对物体的划分)
划分的不是空间,是把物体划分成两个部分
步骤
划分小技巧
尽量沿着最长轴,并且保证里面三角形数目差不多
伪代码
Spacial vs Object Partitions
Basic radiometry(辐射度量学)
在物理上准确定义光照
Radiant Energy and Flux(Power)
能量和功率
几个重要概念,后面详细介绍
Radiant Intensity
每个角度分到的能量
Solid Angles 立体角
Differential Solid Angles 单位立体角
Isotropic Point Source
如果一个点光源均匀往各个方向上辐射出光,任何方向上的能量都是power/4Π
Irradiance
一个物体表面接受到多少光的能量
随着距离增加intensity没变,irradiance衰减
Radiance
光线在传播中的度量
能量在单位立体角并且在单位的面积上
和Irradiance的区别是是否有方向性
da从每一个可能的方向获取的能量求和
Bidirectional Reflectance Distribution Function (BRDF) 双向反射分布函数
单位 面积中吸收多少入射能量再原样发射回去,不同方向的能量分布
Recursive Equation
递归:任何一个出射光线都有可能是其他平面的入射光线,其中这个H^2指的是半球
Rendering Equation
物体自己会发光怎么办:把自己发的光加上去就ok
Reflection Equation
点光源
面光源
简写
物体所辐射出来的所有能量=所有光源辐射出来的能量+辐射出来的能量被反射之后的
黄色部分是光栅化能实现的范围,而后面的多次反射则是光追范围
Probability Review 概率论回顾
Random Variable 随机变量
Probability 概率
Expected Value 期望
概率密度函数
Monte Carlo Integration 蒙特卡罗积分
算任何一个函数的定积分
在pdf上以一定的蒙特卡洛积分进行采样,每个样本算f(x)/p(x)然后进行平均
Path Tracing 路径追踪
witted style解决不了这个glossy的问题
能比较好的处理漫反射效果
已经可以算出任意一个着色点的出射!
间接光照 Global llumination
但是!以↑方式解决全局光光线数量会爆炸!
所以N=1的时候不会指数级增长!路径追踪就是N=1!
Ray Generation
Russian Roulette(RR)
解决光线弹射多少次的问题
一定的概率停下追踪
效率
在物体上采样效率低?
不如直接在光源上采样
所以要对光源面积进行积分
已经开始头疼了...........
所以光线来自:光源,以及其他所有非光源
如果中间有遮挡物:
直接算光源与被观测物连线
总算看完了,感觉一刷有点一知半解的(摊