文章所用图片来自相关领域文献,如有侵权请联系撤除, 转载本文请注明出处
1.关于光照模型
对于图形学领域和图形学开发来说,实时渲染的光照模型是一个最最基础的问题,简单的来讲,光照模型就是用来描述在真实环境下,物体表面一点在在光照下的反射颜色值.有许许多多的光照模型试图用数学的公式来模拟这个问题,当然这即是一个物理问题,也是一个数学问题.大学时最初接触计算机图形学时,对书本上关于光照模型的推到过程就极为不解,最近为了研究基于物理的光照模型看到一篇10年siggrgrah的course,(<
Physically-Based Shading Models inFilm and Game Production
>中的background部分,
Physically-Based Shading,其实现今大多流行于产业渲染如游戏中的技术集中来自己过去5-10年前这时间段的会议论文,读这期间的论文最能反应如今视频游戏渲染的前沿
)他是一个对基于物理的光照模型的很详细的教程,对光照模型的很多问题突然很多清晰明了了起来,尤其这篇文章中对于diffuse的解释让我顿感我一直在误解"漫反射"的意思,突然感觉很多国内基础教材的译文不准和推导不仔细会误导初学者,感觉这是篇好文,好文一定要分享,所以就有了把它较完整翻译下来的想法.
首先本文先概述一下目前流行的几种光照模型,在图形学产业,尤其是游戏,实时的渲染要求我们不能完整的模拟自然界的光照,所以人们都是用各种计算上相对简单的光照模型去模拟.
Lambert模型:
用来描述Diffuse Reflection,也就是被翻译为所谓的漫反射,愚以为这里漫反射翻译的并不准确,因为漫字偏晦涩,很多人会把它理解为"普通的"反射,但其实这里Diffuse的原意是弥散,散射的意思,其实更准确的物理学上的意思应该是"物体内部大量微粒子表面的反射"或者说是物体内部的散射,和直接的反射意义不同,下图可以直观的告诉我们什么是漫反射
,漫反射不是光线从一个点直接反出来的另一个光线,而是进入物体内部被各种子微粒散射出来的n条光线
Lambert模型这样近似的描述某一点的反射光强度:
![I_{D}=\mathbf{L}\cdot\mathbf{N} C I_{L}](http://upload.wikimedia.org/math/a/d/d/addafd79ec0208a5445f77360f63797d.png)
即入射光和法线的点乘再乘以材质颜色和入射光颜色,这里为什么是入射光和法线的点乘其实国内教科书上的解释很难让人信服甚至没有解释,这里还是要从上图那个散射里面来解释,入射光的散射程度可以粗略的认为同夹角(入射光和法线)的增大而减小,比如当垂直入射时,光线完全射入物体,如果不考虑物体的吸收和折射,那这部分光线完全被散射后反射出来,认为这时反射出来的光是最强的,但是这是一个很粗略的模型,除了物体的吸收和折射,其实角度很大时,散射的区域很大,我们不能认为所有反射的光都是从入射点发出来的,不过这个模型还是可以近似描述一些塑料,大理石等亚光材质(不吸收,不折射).
Phong模型
给定上面的光线,Phong模型描述为
![I_\text{p} = k_\text{a} i_\text{a} + \sum_{m\;\in\;\text{lights}} (k_\text{d} (\hat{L}_m \cdot \hat{N}) i_{m,\text{d}} + k_\text{s} (\hat{R}_m \cdot \hat{V})^{\alpha}i_{m,\text{s}}).](http://upload.wikimedia.org/math/c/8/d/c8d48a83ae9c0a55afcf183b9b1ba585.png)
第一项表示为环境光影响,第二项是所有光照的lambert反射,第三项是反射光线和实现的点乘后alpha次幂,这里面不仅包括了环境光和漫散射,还考虑第三项的高光,让物体能够表现出高光斑,当实现和反射线重合时,认为高光最强.这个模型复杂了一些,但是能够表现金属这种有光泽的材质,事实上这个模型也没有遵从真正的物理原理,某种程度上是为了让物体看上去有个光斑而作的模拟.
Blinn-Phong模型
Blinn Phong基本假设与Phong是一样的,只是提高了运算效率,用
替代上面的
,其中
![N \cdot H](http://upload.wikimedia.org/math/c/8/e/c8e0b31af76039c876c0c09600eb3e23.png)
![R \cdot V](http://upload.wikimedia.org/math/2/3/4/23472b0b7eb806f14a81ab0031b0ecb7.png)