理解Phong光照模型

科技一点鑫得 2024-03-09 01:58:10
Phong是谁

Phong光照模型是20世纪70年代被提出的一种渲染逼真图像的方法,模型的提出者是越南出生的计算机图形学研究员Bui Tuong Phong(1942-1975),他提出的近似方法实现了较逼真的图像。

Phong模型在当今硬件性能下已显得无法满足高质量真实图像的要求,但是在对真实感要求不太高的情况下依然有着广泛的应用,因为该模型所需要的计算性能性价比非常高。

Phong在发表了相关算法的论文之后不久,在1975因白血病去世,享年32岁。访问下面的链接可以查看这位计算机图形学先驱当年发表的论文:

https://users.cs.northwestern.edu/~ago820/cs395/Papers/Phong_1975.pdf

反射光的三种类型

光照模型也可以称为反射光模型,因为之所以能看见物体的样子是因为光反射到了我们的眼睛,经过视觉系统的处理之后才形成了对物体的影像。

光的特性本身很复杂,这里以简单的RGB红绿蓝三个分量来近似表示光,各分量的组合表示光的颜色,每个分量的取值范围为0.0~1.0,可以表达光的强度。

Phong模型由三种反射光组成,分别是漫反射光、环境光、镜面反射光。

1. 漫反射在物理学上,漫反射表示粗糙物体表面向四面八方反射入射光的现象,这样不论你从哪个位置观察同一个点的光强都是一样的,也就是漫反射光跟观察者的方位无关。

针对物体表面不同的点,反射的光强并不一定是一样的,针对点光源,参见下图随着入射角的增加反射光强逐渐减弱,我们常说阳光直射时最晒也就是这个意思;而针对平行光,各个点的入射角相同,因此反射光强度也相同。

针对漫反射光反射光强受入射角θ影响的特性,漫反射光颜色可以表示如下:<漫反射光颜色> = <入射光颜色> * cos(θ) * <物体本身的颜色>

2. 环境光除了光源发出的光之外,物体也会受周围环境反射光线的影响,而且存在多重反射光线,Phong模型采用简单的常数来近似模拟环境光。

<环境反射光颜色> = <环境光颜色> * <物体本身的颜色>

3. 镜面反射光较光滑的物体表面还能看到高光,为了模拟这种效果还需要引入镜面反射,镜面反射的反射角和入射角相同。

下图中的δ为物体表面入射点到观察者方向与反射光的夹角,δ角度的变化模拟的就是观察者从不同的位置观察入射点,显然根据经验观察者正对着反射光时(δ为0°)亮度最强,随着偏离的角度增加而减弱。

为了模拟不同材质的镜面反射特性引入了高光指数s,来模拟高光的急剧衰减程度。

镜面反射光颜色的计算可以表示如下:

用WebGL验证Phong模型

不写就无法思考,即使你看懂了,当亲自动手去编写代码去实现时还是会发现很多细节是自己不懂的,因此建议自己动手实现一下。

我在《WebGL编程指南》第8章光照的代码基础上,分别验证了仅环境光、仅漫反射光、仅镜面反射光、叠加效果四种情况下生成的图像效果,见下图。由于本文主要目的在于理解Phong反射光模型,不具体列出实现代码,代码可以访问https://github.com/PepperPapa/WebGL-Programming-Guide_with_TypeScript/blob/main/src/PhongilluminationModel.ts查看,仅供参考。

1. 实现最终叠加效果,我使用了点光源、平行光两个光源,使用单个光源似乎达不到这个效果。

2. 《WebGL编程指南》中没有涉及镜面反射光的部分,这部分的实现参考了参考文献6中的内容。

参考文献

[1]. [The Phong illumination model (mtrebi.github.io)](https://mtrebi.github.io/2017/01/25/phong-illumination.html)

[2]. [Phong_1975.pdf (northwestern.edu)](https://users.cs.northwestern.edu/~ago820/cs395/Papers/Phong_1975.pdf) Phong光照模型发明者的原始论文。

[3]. [使用WPF学习图形学——光反射模型 (toutiao.com)](https://www.toutiao.com/i7019666448616538654/)

[4]. [Bui Tuong Phong Biography | HowOld.co](https://www.howold.co/person/bui-tuong-phong/biography)

[5]. 《WebGL编程指南》第八章 光照。

[6]. 《Fundamentals of Computer Graphics》第10章Surface Shading。

0 阅读:0

科技一点鑫得

简介:感谢大家的关注