9.Phong式高光反射必备知识点

9.光照模型-高光反射光照模型-Phong式高光反射模型-必备知识点


9.1 知识点

Phong式高光反射光照模型的来历和原理

来历

高光反射光照模型没有单一的发明者,因为有多种计算方式。与半兰伯特光照模型类似,它是通过多位从业者的研究和发展逐步演化出来的。

  • Phong光照模型的提出者: 裴祥风(Bui-Tuong Phong,越南裔美国计算机学家)
  • Blinn-Phong光照模型的提出者: 吉姆·布林(Jim Blinn,美国计算机科学家)

原理

  • Phong式高光反射光照模型的基本理论:基于光的反射行为和观察者的位置决定了高光反射的表现效果。
  • 高光反射颜色光源的反射光线 以及 观察者位置方向向量夹角的余弦 成正比。
  • 通过对余弦值取 n 次幂来表示物体的光泽度或反光度。

Phong式高光反射光照模型的公式

公式

  • 高光反射光照的颜色可以通过以下公式计算:

  • 高光反射光照颜色 = 光源的颜色 * 材质高光反射颜色 * max(0, 标准化后的观察方向向量 · 标准化后的反射方向)^n次幂

  • 观察方向向量反射方向向量 的点乘结果就是 cosθ

  • cosθn 次幂表示物体的光泽度,最终结果与光源的颜色和材质的高光反射颜色相乘。

如何在Shader中获取公式中的关键信息

  1. 观察者的位置
    摄像机的位置可以通过 _WorldSpaceCameraPos 获取。

  2. 反射向量
    可以通过 reflect(入射向量, 顶点法向量) 方法计算反射向量。

  3. 指数幂计算
    使用 pow(底数, 指数) 计算反射光的强度。

总结

Phong式高光反射光照模型的计算过程总结如下:

高光反射光照颜色 = 光源的颜色 * 材质高光反射颜色 * max(0, 标准化后的观察方向向量 · 标准化后的反射方向)^n次幂

这一公式通过对反射角度的余弦值取幂,能够表现物体表面的高光反射效果,体现了光线的反射特性及材质的光泽度。


9.2 知识点代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Lesson09_光照模型_高光反射光照模型_Phong式高光反射模型_必备知识点 : MonoBehaviour
{
    void Start()
    {
        #region 知识点一 Phong式高光反射光照模型的来历和原理

        //来历:
        //高光反射光照模型没有单一的发明者,因为有多种计算的方式
        //和半兰伯特光照模型一样,是经过很多从业者的研究和发展而演化出来的
        //其中比较关键的几位贡献者为
        //Phong光照模型的提出者:
        //  裴祥风(Bui-Tuong Phong,越南裔美国计算机学家)
        //Blinn-Phone光照模型的提出者:
        //  吉姆·布林(Jim Blinn,美国计算机科学家)

        //原理:
        //Phong式高光反射光照模型的理论是
        //基于光的反射行为和观察者的位置决定高光反射的表现效果
        //认为高光反射的颜色和 光源的反射光线以及观察者位置方向向量夹角的余弦成正比
        //并且通过对余弦值取n次幂来表示光泽度(或反光度)

        #endregion

        #region 知识点二 Phong式高光反射光照模型的公式

        //公式:
        //高光反射光照颜色 = 光源的颜色 * 材质高光反射颜色 * max(0, 标准化后观察方向向量· 标准化后的反射方向)幂
        //1.标准化后观察方向向量· 标准化后的反射方向 得到的结果就是 cosθ
        //2.幂 代表的是光泽度  把余弦值cosθ取n次幂 得到结果 再去和光源的颜色 * 材质高光反射颜色相乘

        #endregion

        #region 知识点三 如何在Shader中获取公式中的关键信息

        //1.观察者的位置(摄像机的位置)
        //  _WorldSpaceCameraPos
        //2.相对于法向量的反射向量 方法
        //  reflect(入射向量,顶点法向量) 返回反射向量
        //3.指数幂 方法
        //  pow(底数,指数) 返回计算结果

        #endregion

        #region 总结

        //Phong式高光反射
        //高光反射光照颜色 = 光源的颜色 * 材质高光反射颜色 * max(0, 标准化后观察方向向量· 标准化后的反射方向)幂

        #endregion
    }
}


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

×

喜欢就点赞,疼爱就打赏