本节涉及内容:

  • 辐射度量学(Basic radiometry)
  • 光线的传播:反射方程以及渲染方程
  • 全局光照

为什么要学辐射度量学?
之前使用的Whittled style光线追踪很多物理量都没有精确的定义,导致生成的图像不真实。总之就是Whittled style光线追踪太拉了,需要一个更好的方法来代替。

辐射度量学(Basic radiometry)

  • 辐射度量学主要是用来描述光照的
  • 它定义了一系列的方法以及单位、属性
  • 精确测量光的空间特性
  • 以正确的物理方式进行光照计算

一些物理量的定义


Radiant flux还可以这样理解:假设前面有一个感光的平面,那么单位时间照射到这个平面的光线的强度

Radiant Intensity(辐射强度)

Radiant Intensity指每个单位立体角上的能量(power)

立体角(Solid Angles)

用弧度来表示一个角:
弧度:θ=l/r
一个圆的弧度:2π

立体角:
立体角就是弧度在三维空间的衍生,在三维空间中,从球心出发,射向球面,会形成一个锥体,然后用球面的面积A除以r2

一个球的立体角是4π

单位立体角

单位立体角就是单位面积然后除以r2
θ:表示经度方向的角度
Φ:表示纬度方向的角度
dA:单位面积

单位立体角:dω=dA/r2=sinθ dθ dΦ

对于一个球,所有的单位面积的积分为:

辐射度量中,表示三维空间中的方向通常使用ω(单位立体角)


知道了单位立体角,那么Radiant Intensity还可以从另一个角度进行理解。

Radiant Intensity其实就是这个光源在单位立体角上的能量,我们对所有方向进行积分,可以得到power

Radiant Intensity其实就是power除以4π

Irradiance

Irradiance是指物体表面单位面积上接收的能量

lux表示Irradiance的单位

这里的Irradiance必须是垂直于光线的面积,或者说投影到垂直方向上的面积
比如向下面这种情况:

如果是下面这种情况,物体是倾斜的那么它接收光线的面积其实是投影到垂直方向后的面积,即红色部分

Radiance

描述光在传播过程中的属性

Radiance是一个表面在单位立体角,单位投影面积的情况下接收的功率,

一个面的大小和辐射能量的方向是不固定的,我们要研究往一个方向辐射的能量就要确定这个面的大小和辐射方向。所以要结合两者,定义了某一个确定的微小的面dA,和某一个确定的方向dw

方向就用单位立体角dw来表示
面积就用单位面积dA来表示

Radiance和Irradiance、Intensity的联系

  • Irradiance:物体单位面积上接收的能量
  • Intensity:单位立体角上接收的能量

由上述定义可知:

  • Radiance:是Irradiance在单位立体角上的能量
  • Radiance:是Intensity在单位面积上的能量

Radiance:是Irradiance在单位立体角上的能量

这里理解成某一个确定微小面积上受到的所有能量(Irradiance),在一个方向ω上的分量

Radiance:是Intensity在单位面积上的能量

这里理解成一个确定的方向上辐射出来的所有能量(I),在一个微小面积上的分量。

Irradiance和Radiance比较

Irradiance:单位面积上所有方向接收的能量
Radiance:在单位面积上来自某一个方向的能量

双向辐射分布函数 (Bidirectional Reflectance Distribution Function 简称BRDF)

理解了前面的三个概念之后就可以重新定义反射的概念了。

反射可以理解为从某个方向进来然后反射到某个方向去的能量。可以用BRDF(反射方程)来描述这个过程。

就考虑某一个微小面积dA从某各微笑立体角dw接收到的Irradiance,会被如何分配到各个不同的立体角上面去。

BRDF就是 在微小面积dA,从某一个微小立体角dωi,接收到的Irradiance,会如何被分配到各个不同的立体角上去,算的是一个比例。

对于任何一个出射方向,算出其Radiance的微分,除以Irradiance的微分,这就是BRDF的定义。


以某一个方向为例,然后我认为某一个着色点可以接收来自四面八方不同的光照,那么对于每一个入射方向,都会对应一个“入射方向→着色点→出射方向”这样的一个BRDF,那么我们就可以把每一个方向上dω的入射光的强度Radiance乘以cosθ乘以BRDF,然后把每一个入射方向上对出射方向的贡献都加起来,就得到了从反射方向看过去这个点的样子了

反射方程表明了光线到达着色点后被发射的光线属性。但是哪些光线可以到达着色点呢?
到达着色点的光线可以是光源发出的光线以及其他着色点反射的光线,所以任何出射的Radiance都可以作为其他着色点入射的Radiance,所以这是一个递归的过程。

渲染方程(Rendering Equation)

一个物体的光线照射到物体后经过BRDF反射的光线是Lr(p,ωr)

渲染方程:假如物体是一个自发光的物体,则直接把发出的光线加上就行

渲染方程将一个物体的出射光线分成两部分构成:

  • 自己发射出去的光
  • 通过其他光源射入的,经过反射后的光

理解渲染方程

对于只有一个点光源的情况

对于有多个点光源的情况

对于有面光源的情况,可以将一个面光源理解为由一堆点光源组成。只需要对面光源所有点发出的光进行积分即可,如果光不是由光源发出的,而是别的物体反射来的,则只需要将别的物体看作光源就行。

我们不知道反射光的Radiance是多少,同时也不知道从其他物体反射过来的光的Radiance是多少,其他白色部分是知道的。

上面的是原式,下面的是简写

渲染方程最终可以写成下面的形式:
对于所有物体辐射出来的所有能量(L)可以写成 所有光源本身辐射出来的能量(E)加上 辐射出来的能量被反射之后的能量(KL)。

写成这个形式是为了解出L
写成这种形式后就可以使用用泰勒展开,将其展开成I+K+K2+K3……


如果光线一次都不弹射直接打到人的眼睛里,那么看到的就是光源E;如果光线弹射一次后打到人的眼睛里,看到的就是直接光照KE(包括阴影);如果弹射两次,看到的就是间接光照;如果弹射多次就是间接光照的叠加。反射本身就是一种间接光照。

从光栅化可以做什么的角度来理解该公式

光栅化可以把物体投影到屏幕上,着色的工作对于的这里的直接光照。

光栅化能够告诉我们光线传播的内容只有0次(E)和一次(KE)的弹射,后面的部分光栅化比较难完成。因为光线追踪后面的部分比较容易,这就是为什么要用光线追踪来解决光照的问题

全局光照

光线弹射一次,就是直接光照;如果弹射两次,看到的就是间接光照。全局光照就是将光线弹射1次到n次所有的结果全部加起来。

全局光照是直接和间接光照的集合。

直接光照和间接光照的影响

这张图片只渲染了直接光照,也就是光源可以照到的地方是有颜色的,照不到的地方是黑色

直接光照 加上 弹射一次间接光照的结果

直接光照 加上弹射一次、两次和三次间接光照的结果

假设做无限次的光的弹射,那么最后会收敛到某一个亮度,之后就不会再出现剧烈的变化,会基本保持在某个亮度。(能量守恒和单位时间问题)

概率论基础

x指随机变量,p指出现某个随机变量的概率

所有概率之和等于1

数学期望


计算机图形学GAMES101(十四)光线追踪(辐射度量学、渲染方程与全局光照)相关推荐

  1. GAMES101课程学习笔记—Lec 14(2)~16:Ray Tracing(2) BRDF、渲染方程、全局光照、路径追踪

    GAMES101课程学习笔记-Lec 14(2)~16:Ray Tracing(2) BRDF.渲染方程.全局光照.路径追踪 0 引入--辐射度量学概述 1 相关概念 1.1 Radiant Ener ...

  2. [计算机图形学]辐射度量学、渲染方程与全局光照(前瞻预习/复习回顾)

    一.前言 我们前面讲到的Blinn-Phong着色,Whitted-Style光线追踪都有一定问题,那就是它们并没有严格的按照物理规则定义各个变量.比如,Blinn-Phong中的光的强度,并没有一个 ...

  3. 计算机图形学GAMES101(十二)光线追踪(基本原理)

    我们是怎么解决阴影问题? 当对物体着色的时候,只考虑了像素点自己,没有考虑物体遮挡.所以着色不能解决阴影.那么怎么解决阴影问题呢? 阴影映射(Shadow mapping) 可以使用阴影映射来渲染阴影 ...

  4. 计算机二级 word 论文,最新计算机二级第十四套word题目要求

    最新计算机二级第十四套word题目要求 计算机二级第十四套word题目要求 习题十四 北京XX大学信息工程学院讲师张东明撰写了一篇名为"基于频率域特性的闭合轮廓描述子对比分析"的学 ...

  5. 计算机图形学(第四版)-第一个画线例子- 读书笔记P30

    说明:内容为计算机图形学(第四版)这本书的读书笔记,会记录这本书的一些编码知识和其他内容,目标:将厚书读薄yeah~ 1.OpenGL基本语法: 2.附加库: 3.OpenGL的安装和环境配置: 参考 ...

  6. 计算机图形Opengl的实验报告,计算机图形学OpenGL实验四.doc

    计算机图形学OpenGL实验四 实验报告 学院(系)名称: 姓名学号专业班级实验项目实验四:场景漫游课程名称计算机图形学课程代码实验时间实验地点批改意见成绩教师签字:实验环境(软.硬件环境) 实验目的 ...

  7. OpenGL南邮计算机图形学实验报告四——用键盘控制物体

    OpenGL南邮计算机图形学实验报告四--用键盘控制物体 计算机图形学的新题目要求 OpenGL配置参考: 南邮老前辈wonz哥的OpenGL配置(Shader.h始终不用改).SOIL2 环境配置. ...

  8. GAMES101-现代计算机图形学入门09(光线追踪)

    基本光线跟踪算法 光线定义 首先先要对光线定义 ●光沿直线传播: ●不发生碰撞: ●是从光源到人眼的--对于第三个性质,我们在根据光路可逆性,会采取从人眼到光源的方法 光线追踪是从人的眼睛(摄像机)出 ...

  9. 16、计算机图形学——基于AABB进行光线追踪的加速(下)

    三.KD-tree加速光线追踪 前面已经说过,均匀空间划分存在一个划分粒度的问题,所以,为了解决这个问题,就出现了基于树形结构的空间划分.基于KD-tree进行空间划分就是其中一种 KD-tree每次 ...

最新文章

  1. 多模态人物识别技术及其在爱奇艺视频场景中的应用 | 公开课笔记
  2. 压力测试对于BCH真的有意义吗?
  3. NetBeans 时事通讯(刊号 # 124 - Nov 11, 2010)
  4. dataloader 源码_带你从零掌握迭代器及构建最简DataLoader
  5. 通过QML定义对象类型
  6. Fragment 键盘弹出方式设置
  7. python最大约数是_python – 找到最大的公约数(赋值错误,我迫切需要你的帮助)
  8. springSecurity 登录以及用户账号密码解析原理
  9. oracle在日本遇到的技术问题
  10. “独裁者”Google:开发者别无他选!| 极客头条
  11. 整合TextBox与Label 创建新控件--EFLabelText
  12. sas table将缺失值计入百分比_SAS系列28:SAS宏语言(一)
  13. HTTP基础(图解HTTP笔记)幕布
  14. 阿里矢量图标库字体图标使用(胎教)
  15. Vuepress-theme-reco 构建博客上传GitHub可以访问,无法正常显示。
  16. SysTick系统滴答定时器
  17. [编程入门]猴子吃桃的问题(JAVA解法)
  18. 关于云开发数据库的使用经验和建议
  19. UE、UI、UCD、UED?你知道你是干啥的吗
  20. 轻松学会linux下查看内存频率,内核函数,cpu频率

热门文章

  1. VC MFC(Custom Control)自定义控件
  2. Hadoop的集群搭建及HDFS命令
  3. WinCC 7.0 安装及使用过程部分注意事项
  4. 【附源码】Python计算机毕业设计水库洪水预报调度系统
  5. 小程序Android分享朋友圈
  6. 从NMEA0183到GNSS定位数据获取(一)原理篇
  7. 学生优化(一)------输入文本限制
  8. 【Allegro 17.4软件操作保姆级教程六】布线操作基础之一
  9. 忆往昔,看今朝,望未来
  10. c# listview控件上移下移功能函数