Phong Illumination(冯氏光照模型)浅析

news/2025/2/4 22:44:45/

原作者Paul Nettle,感谢!需要原文的朋友可以google之 (^ ^)

很多人把冯氏光照(Phong Illumination)和冯氏渲染(phong shading)混淆到一起。冯氏渲染是指计算基于每像素的与表面相交的法向量的插值过程。你可以对每个像素做你喜欢的光照效果,或者对每个顶点做冯氏光照计算,在物体表面使用高洛德着色(Gouradu shading)。

 

冯氏光照是由Phong Bui-Tuong(冯布桐?抱歉我不知道怎么翻译,看着这个名字我想起来我第一次见到c++之父,bjarne stroustrup时的迷惑。。。。 PS:我见到对C++老爹比较权威的翻译是:比亚尼,斯特鲁普 >_<,如果你知道冯先生/女士的名字,请告诉我怎么翻译,谢谢!!!)在1975年提出的.由于冯氏模型使用一般的文本比较难表示(主要是缺乏希腊字母),所以下面使用简称代替希腊字母所代替的意思:

Ix = 最终结果的色彩

Lx = 光照色彩

Ax = 环境光色彩

Dx = 漫反射色彩

Sx = 镜面反射色彩

Ka = 环境系数

Kd = 漫反射系数

Ks = 镜面反射系数

Att = 衰减系数

n = 光滑或者粗糙度

N = 物体表面的法向量

L = 指向光源的向量

R = 反射向量

V = 视点向量

下面就是冯氏模型:

 Ix = Ax*Ka*Dx + Att*Lx[Kd*Dx( N dot L) + Ks*Sx(R dot V)^n]

Ix~Sx的值都含有组件值.对于RGB模型来说,这些组件值分别代表着(R,G,B)分量,范围为[0.0,1.0],所以这个模型对应的RGB解决方案如下:

Ir  = ArKaDr + AttLr [KdDr(N dot L) + KsSr(R dot V)^n]
Ig = AgKaDg + AttLg [KdDg(N dot L) + KsSg(R dot V)^n]
Ib = AbKaDb + AttLb [KdDb(N dot L) + KsSb(R dot V)^n]

Ka~Ks这三个值范围为[0.0,1.0],一般作为材质(material)信息存储在材质表面定义中.Ka表示物体表面受环境光照影响的的程度.Kd表示物体自身反射光的程度.Ks表示光被反射后的强度.Att用于表示光线的衰减,指光源到物体光线的衰减.你可以定义另一个衰减表示物体到观察者之间光线的衰减.n用来判断镜面反射的范围,值越大,范围越小.这个值的选择主要靠经验,为了获得一个感性认识,可以试试3.0,200.0,和10000.0这几个值.

在冯氏渲染中,N是与表面相交的一个插值.在每个像素上,它被标准化用于冯氏光照等式上.L是指向光源的向量,R是被表面反射后的光向量,R的计算可以使用下面式子计算:

2N(N dot L) – L

V是从物体表面到观察者的向量.

以上信息可以从下面资料中获得:

"Computer Graphics Principles and Practice, 2nd edition" by Foley, van Dam, Feiner, Hughes

转载于:https://www.cnblogs.com/Baesky/archive/2010/11/12/1876157.html


http://www.ppmy.cn/news/764126.html

相关文章

光照模型

Gouraud Gouraud Shading (高洛德着色/高氏着色)是一种平滑着色方式,常用于三维软件,如Cinema4D,来源于法国计算机科学家Henri Gouraud(亨利高洛德),它有一套复杂的光影数学计算。 这种着色的效果要好得多,也是在游戏中使用最广泛的一种着色方式。它可对3D模型各顶点的…

MyEclipse2014配置2.5版本的struts2

原创 配置struts2一般来说需要以下步骤&#xff1a; 将项目所需要的Jar包导入项目webRoot/WEB-INF/lib下&#xff08;包不追求多&#xff0c;容易导致冲突或者其他问题&#xff0c;需要多少导入多少&#xff09;配置struts.xml文件配置web.xml文件 2.5版本的struts2 链接&#…

ORA-600(KSSRMP2)错误

详细错误信息为&#xff1a; Wed Dec 14 21:10:27 2005Errors in file /oracle/admin/ocrl/bdump/ocrl_smon_160060.trc:ORA-00600: internal error code, arguments: [KSSRMP2], [0x1102F0128], [0], [0], [], [], [], []ORA-01157: cannot identify/lock data file 201 - see…

【机器学习笔记】:大话线性回归(二)拟合优度和假设检验

大家好&#xff0c;我是东哥。 前一篇文章给大家介绍了线性回归的模型假设&#xff0c;损失函数&#xff0c;参数估计&#xff0c;和简单的预测。具体内容请看下面链接&#xff1a;【机器学习笔记】&#xff1a;大话线性回归&#xff08;一&#xff09; 但其实还有很多问题需…

【统计学笔记】方差分析表和回归分析表的解读

F M S ⊙ M S E ∼ F ( d f ( ⊙ ) , d f ( E ) ) ( ⊙ 表 示 误 差 来 源 中 因 素 的 简 写 &#xff0c; M S ⊙ 表 示 M S A 、 M S R 或 M S C 等 &#xff0c; d f ( ⊙ ) 表 示 因 素 ⊙ 的 自 由 度 ) F \frac{MS⊙}{MSE} \sim F(\quad df( ⊙),df(E)\quad) \\ \qqua…

SmartBi参数传值与JS报表宏及Mysql数据集特殊功能总结

SmartBi参数传值与JS报表宏及Mysql数据集特殊功能总结 一、含名称代码无真实名称的表内联动 1、展示效果 ​ 如下图所示&#xff1a;实现的效果是&#xff1a;打开报表页面&#xff0c;默认机构选择所有机构&#xff0c;且机构可以人为手工输入&#xff0c;且在机构中不选择…

Mybatis Plus(初识一)

Mybatis Plus简介 Mybatis-Plus&#xff08;简称MP&#xff09;是一个 Mybatis 的增强工具&#xff0c;在 Mybatis 的基础上只做增强不做改变&#xff0c;避免了我们重复CRUD语句。 搭建使用环境&#xff08;SpringBoot) 1.创建一个简单点的maven工程 2.在pom.xml中引入依赖 …

统计学习笔记:方差分析

方差分析&#xff08;ANOVA&#xff09;又称F检验。方差分析是判定方差在组间和组内是否&#xff08;明显&#xff09;具有区别的一种方法。如果组内差异相对于组间差异较小&#xff0c;则可以推断出组与组之间是有明显差异的。 从形式上看&#xff0c;方差分析与t检验或z检验区…