Table of Contents
渲染方程
Kajiya发布了一篇标题只有三个单词的文章:渲染方程。该文章不但综合了以前的多种模型,还发布了一种比较新的技术。不过其实这篇文章主要还是讲述的光在不同表面如何进行散射的问题。注意这种散射与粒子中的体渲染散射还是不一样的,但是基本思路差不太多。
我们先看一下这个渲染方程:
如果之前看过体渲染方程,对这个肯定非常熟悉。但是这个方程并不是体渲染的方程,而是比较简单的表面渲染。几何项可以理解为一个缩放关系,表示从x'到x点的图中被其他微粒表面遮挡多少。整个方程可以理解为:
从x'到x的光 = 从x'自发出的光 + 全部从四面八方射到x'然后再散射到x方向的光
从x''射到x'上再反射到x方向的光有多少,这个比例就是 。
渲染方程深入
我们定义能量:
表示的是每个时间微元,从 x 微面到 x' 微面传递的能量。
只看 x' 点发射的能量:
这里的1/r^2意思是能量随着距离 r 变长,呈r^2倍衰减。
我们只看从 x'' 处发射到 x' 然后散射到 x点的能量:
辐射度强度定义为单位时间单位立体角中投射到单位面积上的能量:
立体角可以这么进行计算: 表示的是光投影到的面的面积。
然后对前面的公式进行替换,最后可以得到:
即 。
还有自发射能量 :
渲染方程在多个表面的散射
就是光从 x'' 这里发出来,经过表面 x' 反射到 x 上的能量。这里面主要是由 来控制传输到 x 方向上的能量比例的。这个函数叫做BRDF双向反射分布函数(在论文中称作BRF,双向反射函数,估计是那个年代BRDF理论还不是很完备)
优化(简化)方案
我们把一开始的方程进行变形:
变形为:
M是一个线性操作符,对应着积分。
然后再进行整理:
无穷级数收敛的一个条件是算子M的谱半径小于1。对该展开式的物理解释很有吸引力。给出了 x 点与 x' 点间辐射传输的最终密度,即直接项()、一次散射项()、二次散射项()等的总和。
我们叫 Utah 近似(来自Utah 大学):
注意这个近似中,M只作用域后面的。
还有一种近似方案,是基于辐射度的近似——近似BRDF积分,但是因为也与后面的其他研究意义不是很大,所以就不再介绍了。
虽然近似的方法有很多,包括使用后面的MC蒙特卡洛来计算积分,以及分层MC计算积分,但是万变不离其宗,都是研究的如何近似积分的,因为与渲染的关系并不是很大,这里就不再详细展开。
结论
这篇文章介绍的技术,主要是光从一个表面散射到另外一个表面的过程的方程及其计算方案(简化和优化计算),其实,所有的光照模型无非都是这种思想:
- 光跟物体接触以后是穿透还是反射(散射)还是两者都有?
- 光散射的能量是怎么分布的
理解了这个目标,就能很清楚的知道每一个论文具体研究的是什么内容了。