从0开始的技术美术之路(九)传统光照模型

本篇参考B站视频 “技术美术百人计划”·霜狼_may
《Shader入门精要》·冯乐乐女神著;
基于物理的渲染(PBR)白皮书·毛星云大佬

本篇主要用于自我复习,如有疑问或发现有什么错误,请多指教~
本篇内容主要包括Lamert,Phong,Blinn-Phong等传统经验光照模型介绍;


一.光照模型

1.什么是光照模型?

它也称为明暗模型,用于计算物体某点处的光强(颜色值)。从算法理论基础而言,光照模型可分为两类:基于物理的(PBR),以及基于经验的;

  • 基于物理的光照模型:偏重于使用物理的度量与统计方法,效果真实,但计算复杂,实现较难;
  • 经验模型:对光照的一种模拟,通过实践总结出的简化的方法,简化真实的光照计算,且能达到不错的效果;

在这里插入图片描述2.为什么需要光照模型
现实中的光照极其复杂,受诸多因素影响,有限的计算能力无法模拟,使用简化的光照模型对现实情况进行近似,使得计算处理起来会更为容易,且令效果更符合需求。

3.光照模型发展

在这里插入图片描述


二.局部光照模型

在这里插入图片描述

1.定义
局部光照模型只关心直接光照部分,即直接从光源发出并照射到物体表面并反射至摄像头的光线。在《shader入门精要》中也称作标准光照模型;
图中,左图是局部光照,右边则是全局光照模型;
在这里插入图片描述
2.组成
可分为漫反射,高光反射,环境光,和自发光四个部分;
3.漫反射
光照模型定义中,光线从光源照射到模型表面,均匀反射到各个方向,这种现象就是漫反射;

  • 漫反射过程中,光线发生吸收(改变颜色)与散射(改变方向);
  • 漫反射光照符合兰伯特定律(Lambert’s law),反射光线的强度与表面法线和光源方向间的夹角的余弦值成正比,其计算如图, n是表面法线,I是指向光源的单位矢量;
    在这里插入图片描述
  • Lambert余弦定律:在光学中通常使用辐射度来量化光。其中光源每秒发出的能量为辐射通量P,单位面积接受光量为辐射通量密度P/A,当光源垂直照射的单位面积的辐照度为E1=P/A1将光束以某个角度照射到更大的平面上的辐射度为E2=P/A2,可以认为A1与A2的关系是Cosθ=A1/A2, E2=P/A2=(P/A1)cosθ=E1cosθ=E1dot(n,l);

简而言之:反射光强度与表面法线与光源方向间的夹角的余弦成正比

  • 漫反射效果与观察者位置无关,与光源位置有关
  • 单纯的Lambert模型效果偏向水泥和橡胶;
    在这里插入图片描述动态图中主要表现漫反射与入射光方向和视见方向的关系;
    在这里插入图片描述

4.高光反射(镜面反射)
当光线到达物体表面并发生反射,观察视线在反射光线的附近时,便能够观察到高光反射;
高光反射描述了光线与物体表面发生的反射(光强不变,方向改变),它的反射率根据菲涅尔效应这种物理现象决定,通常使用对应的反射贴图描述物体表面的反射率,且使用光泽度(粗糙度,反光度)来描述高光的大小。

  • 下图中圆锥是由名为光泽度的变量进行控制,在圆锥范围内才可以看见高光反射,越靠近圆锥边缘,衰减越强;

在这里插入图片描述

  • 下图公式中,mgloss为光泽度,也称为反光度,v为视见向量,r表示反射光线

在这里插入图片描述- 反射方向的计算

在这里插入图片描述

  • 下图是随光泽度变换的高光反射;
    在这里插入图片描述

5.环境光
在局部光照模型中,由于没有考虑间接光照的影响,因此为了处理这种间接光照,引入环境光;
如下图环境光的计算即漫反射材质乘上一个环境光量;
在这里插入图片描述

  • 通常情况下,使用漫反射的反照率来指示环境光照的反射光量,该模型假定场景中发生多次散射与反射,并在所有方向上均等的射向目标物体。
    在这里插入图片描述
    6.自发光
    顾名思义,物体自身发射的光线,通常作为单独的一项加入光照模型,一般使用一张发光贴图描述物体的自发光;(其实自发光贴图可以作为黑白遮罩的单通道图与其他贴图合并成一张贴图)

三.经验模型

1.Lambert模型

在前面的漫反射中有所提及,关键点在于法线向量与光向量的点积;

2.Phong模型
Phong模型是第一个有影响力的光照模型,考虑直接光照的反射作用,使用环境光代替间接光照;

在这里插入图片描述加粗样式
其实就是将前面所讲的各光照部分进行相加;

3.Blinn-Phong模型
Blinn-Phong是Phong的变种,它是采用的半角向量与法线的点积代替反射向量与视线的点积结果。下面两张图分别是Phong与Blinn-Phong的shaderforge的节点图。

在这里插入图片描述在这里插入图片描述关于使用半角向量的变化

  • 计算更为简洁,半角向量比反射向量计算更为简洁,Phong比 Blinn-Phong的性能消耗大致多1/3左右;
  • 当光源与视线都在物体表面上时,半角向量与发现角度永远不大于90度;
    当材质的反光度很低时,物体被光线照射的大部分区域都会发生高光反射。区域中的一部分高光部分的反射向量与视线的夹角超过了90度。
    若使用Phong会导致高光区域一部分发生缺少,因为Phong只考虑视线与光照分布在法线两侧的情况而没考虑同侧情况,当视线与光照在法线同侧时,且高光反射对亮度有较大的影响时,会发生断层;

4.Gourand模型
以顶点为单位计算光量再通过插值获得每个像素点的光亮度。
在表现物体光滑性上有较好的表现,当值不再为线性变换时,如镜面高光,线性插值导致内插值不可能大于顶点指,因此高光只能出现在顶点。使用颜色插值会使镜面高光蔓延到周边。
左为其漫反射效果,右为其高光反射的对比
在这里插入图片描述5.Flat模型
平面着色模型,计算多边形的单个强度,每个三角形只有一个法线方向,以相同的光强度值显示多边形所有点,通常适用于lowpoly风格场景。
在这里插入图片描述6.光照模型小结
在这里插入图片描述

  • Lambert仅考虑表面的漫反射部分;
  • Phong模型能够较好的呈现镜面高光的效果,也是四种模型中最接近真实的效果,需要计算较复杂的反射向量
  • Blinn-Phong模型效果与Phong相近,偏向艺术,使用方便计算的半角向量替代较为复杂的反射向量,计算量小于Phong,大多数情况下的默认光照模型;
  • Gourand模型计算顶点光照并通过增量法插值计算多边形内部的光强,顶点密度较低时,表现效果差,高光也不能很好表现,优点是计算量较小;

突如其来的项目压身忙活了好久,闭关搞了一个星期,至于额外的课题就来不及搞了,抽空发完这篇记录又该继续忙活了…

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值