本文整理自西安交通大学软件学院祝继华老师的计算机图形学课件,请勿转载

基础概念

光源

发光体即为光源

  • 发射光源:反射表面
    • 通常在一个不透明且不发光的物体表面所观察到的光线是其反射光,由光源与其他物体表面的反射光所共同产生。
  • 光源向四周所辐射光的光谱分布
    • 漫反射:投射在粗糙表面上的光向各个方向反射的现象。物体颜色实际上是入射光线被漫反射后所表现出来的颜色;
    • 镜面反射:一束平行光射到平面镜上,反射光是平行的 。
  • 空间的光亮度分布
    • 图形学:光源通常朝空间各个方向发射的光强是相同的

材质

  • 材质的颜色是由它所反射的光的波长决定;
  • 如果光线被投射到一个不透明的物体表面,则部分光线被反射,部分被吸收:
    • 物体表面的材质类型决定了反射光的强弱;
    • 表面光滑较亮的材质将反射较多的入射光,比较暗的表面则吸收较多的入射光。
  • 对于一个半透明的物体表面,部分入射光会被反射,部分则被折射。

光照射到物体表面,可能被吸收、反射和透射

  • 被吸收的部分转化为热;
  • 反射、透射光进入人的视觉系统。

光照明模型:模拟物体表面的光照明物理现象的数学模型

简单光照明模型

  • 只考虑光源对物体的直接光照;
  • 景物表面常被假定为不透明,且具有均匀反射率;
  • 能表现由光源直接照射在漫射表面上形成的连续明暗色调,镜面上的高光以及由于景物互相遮挡而形成的阴影等

Phong光照明模型

光照到物体表面时,物体对光会发生反射、透射、吸收、衍射、折射和干涉

简单光照明模型模拟物体表面对光的反射作用。

  • 光源为点光源;
  • 反射作用分为:镜面反射和漫反射;
  • 物体间作用用环境光(Ambient Light)表示;
  • 典型:Phong光照明模型

Phong模型中的几何量示意图

image-20220216194522713

理想漫反射

当光源来自一个方向时,由于物体表面粗糙不平,导致反射光均匀向各方向传播,而与视点无关

镜面反射

理想镜面:反射光集中在一个方向并遵循反射定律。

光滑表面:反射光集中在一个范围内,且由反射定律决定的反射方向光强最大。对于同一点,不同位置观察到的镜面反射光强不同。

  • 镜面反射光将会在反射方向附近形成很亮的光斑,称为高光现象
  • 镜面反射光产生的高光区域只反映光源的颜色;
  • 镜面反射系数 是一个与物体的颜色无关的参数;
  • 只能通过改变物体的漫反射系数来控制物体的颜色

环境光

光源间接对物体施加的明暗影响,是在物体和环境之间多次反射,最终达到平衡时的一种光

同一环境下的环境光光强均匀分布,即在任一方向上的分布相同

Phong光照明模型:由物体表面上一点P反射到视点的光强 I I I为环境光的反射光强 I e I_e Ie、理想漫反射光强 I s I_s Is和镜面反射光 T d T_d Td的总和

image-20220216195133087

评价

  • Phong光照明模型:真实感图形学中提出的第一个有影响的光照明模型,生成图像的真实度已达到可以接受的程度。
  • 由于是经验模型,Phong模型存在不足:
    • 显示出的物体象塑料,无质感变化;
    • 环境光是常量,没有考虑物体间相互反射光;
    • 镜面反射颜色是光源颜色,与材质无关;
    • 镜面反射的计算在入射角很大时会产生失真现象

image-20220216195314325

增量式光照明模型

用多边形表示的物体

  • 每个多边形由于法向一致,多边形内部颜色相同;
  • 不同法向的多边形邻接处光强突变且有马赫带效应

增量式光照明模型:

  • 在每个多边形顶点处计算光照明强度或参数,然后在各个多边形内部进行双线性插值,得到多边形光滑均匀颜色分布;
  • 保证多边形之间的颜色光滑过渡。

两个主要算法

  • 双线性法向插值:Phong明暗处理
  • 双线性光强插值:Gouraud明暗处理

Gouraud双线性光强插值

思想:计算多边形各顶点的光强,再用双线性插值,求出多边形内部各点的光强。

算法步骤的基本描述
  • 计算多边形顶点的平均法向;
  • 用简单光照明模型计算顶点的平均光强;
  • 插值计算离散多边形边上的各点光强;
  • 插值计算多边形内域中各点的光强
顶点的计算

与某个顶点相邻的所有多边形的法向平均值近似作为该顶点的近似法向量;

顶点A相邻的多边形有k个,它的法向量计算为:

image-20220216200146213

计算出的平均法向一般与该多边形物体近似曲面的切平面比较接近

顶点平均光强计算

用Phong光照明模型及平均法向量计算在顶点A处的光强

双线性光强插值

线性插值与扫描线算法相互结合,用增量算法实现各点光强的计算

由顶点的光强插值计算各边的光强,然后由各边的光强插值计算出多边形内部点的光强

image-20220216200241190

增量算法

image-20220216200303703

评价
  • 计算速度比以往的简单光照明模型有了很大的提高,解决了相邻多边形之间的颜色突变问题,产生的真实感图象颜色过渡均匀,图形显得非常光滑;
  • 由于采用光强插值,镜面反射效果不太理想,而且相邻多边形的边界处的马赫带效应不能完全消除

Phong双线性法向插值

以时间为代价,可以部分解决上述的弊病;

将镜面反射引进到明暗处理中,解决了高光问题

特点
  • 保留双线性插值,对多边形边上的点和内域各点,采用增量法
  • 对顶点的法向量进行插值,而原顶点的法向量,仍用相邻多边形的法向作平均
  • 由插值得到法向,来计算多边形每个象素的光强度
  • 假定光源与视点均在无穷远处,光强只是法向量的函数

方法与光强插值类似,其中的光强项用法向量项来代替。基本公式

image-20220216200552417

增量插值计算也类似,用法向代替光强

两种模型对比

两类模型的特点:

  • 光强插值能有效的显示漫反射曲面,计算量小;
  • 法向插值可产生正确的高光区域,但计算量大。

增量式光照明模型的不足:

  • 此模型得到的物体边缘轮廓是折线段而非光滑曲线;
  • 由于透视原因,等间距扫描线会产生不均匀效果;
  • 插值结果决定于插值方向
Logo

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。

更多推荐