大家好,欢迎来到IT知识分享网。
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/i/)
[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。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/160245.html