课程笔记02 计算机图形学基础

铁名_IronName Lv4

第二章 颜色模型、图像基本知识、Phong光照模型


2.1 颜色模型

2.1.1 颜色模型的视觉基础

  • 什么是色彩?
    • 色彩是对不同波长的光的能量的感知
  • “光”是由不同波长的电磁波按照某种能量分布混合叠加而成。
    • 例如,“白光”则是由所有可见波长的电磁波以相等的强度混合得到。
  • 谱分布:光在各个可见波长的分量的强度分布函数称为光的谱分布。
  • 与光类似,色彩也可以使用谱分布函数来进行描述。

2.1.2 RGB 颜色模型

在所有用于表示色彩的各种色彩空间中,RGB(红绿蓝)色彩空间在计算机图形学中的使用最为广泛。

  • 色彩使用三通道RGB向量(r,g,b)来表示:
  • 在RGB色彩空间中,有部分的常用操作可以通过对RGB三通道分别处理而进行;
  • 通常可以将r,g,b分别规整化为[0,1] 内的浮点数;当使用 8bit进行存储时,r,g,b 通常取值为[0,255]内的整数。
为什么选择红绿蓝作为基本色彩?

以人类视觉的三刺激理论为基础:人眼的视网膜中有三种锥状视觉细胞,分别对红、绿、蓝三种光最敏感。

  • 然而,一部分色彩无法表示成R,G,B光波的正线性组合,这是RGB色彩空间的一个缺点。

CMY 色彩空间

CMY 是不同于RGB的另外一组基本色彩。Cyan(青),Magenta(品红),Yellow(黄):分别是 R,G, B的补色(complements)。
CMY被称为“减色系统”:

  • RGB为“加色系统”——(0, 0, 0)为黑,(1, 1, 1)为白;
  • CMY——(0,0,0)为白,(1,1,1)为黑。

2.1.3 HSV 颜色模型

HSV系统提供了一个直观的方法来对色彩进行准确的选择,比RGB更加用户友好

  • HSV: 圆锥形的色彩空间
  • Hue(色调)也叫色相,它描述了色彩的本征属性,即我们常说的一个色彩是红、橙、黄、绿青、蓝、紫,等等。
  • Saturation(饱和度)也叫u纯度:饱和度越低,色彩越白。
  • Valueofbrightness(亮度):亮度越低,色彩越黑。

2.1.4 其它颜色模型

CIE XYZ 色彩空间

CIE XYZ 色彩空间可以表示所有可感知的色彩 (而 RGB 空间却不能)。

  • 色彩基XYZ是色彩基RGB的线性变换。
  • 更多地应用于色彩科学的研究。
  • 与人类的感知系统密切相关。

2.2 图像基本知识

图像

  • 图像可以看成是一个二维离散函数:f(x,y)
  • 函数f的定义域是由矩阵排列着的许多格子组成,这些格子被称为像素(pixel)
  • 函数f的取值则为各个像素的色彩:对于彩色图像,可以是RGB或者RGBA;对于灰度图像,f为单值函数。

图形学的基本目标是什么?

  • 从虚拟的三维场景及相机的位置信息中,生成出一幅二维图像。
  • 而三维场景又以怎样的数据结构来表示?
    • 简单的球体,长方体可直接用其参数描述。
    • 对于复杂模型,则需要使用参数曲线和曲面或者更一般的网格模型来进行描述。
    • 网格模型之中又以三角网格最为常用。

三角网格模型

三角网格是由一系列欧式空间中的三维顶点以及连接这些顶点的若干三角面片组成,具体包括:顶点集合 V=(v1,v2,...,vn)V=(v_1,v_2,...,v_n) 和 面片集合F=(f1,f2,...,fm)F=(f_1,f_2,...,f_m),其中 FF 中的每个面片 ff 都是由 VV 中的顶点构成的空间三角形:f1=(va1,vb1,vc1),f2=(va2,vb2,vc2),...f_1=(v_{a1},v_{b1},v_{c1}),f_2=(v_{a2},v_{b2},v_{c2}),...

三角面片的 法向量(normal) 是垂直于该三角面片所在平面的非零向量;对于每个三角面片单独而言,其法向量都有两种可能的朝向;法向量的朝向决定了一个三角面片的正面与反面;对于连续可定向的三角网格整体而言,相邻的三角面片需要具备一致的法向量朝向。

三角网格顶点的法向量可以通过其周围的所有三角面片的法向量通过加权叠加计算:

  • 假设 vvkk 个三角面片 f1,f2,...,fkf_1,f_2,...,f_k 所共有的顶点;
  • 按算数平均计算:Nv=(Nf1+...+Nfk)/kN_v=(N_{f1}+...+N_{fk})/k
  • 按面积加权平均计算:Nv=(Sf1Nf1+...+SfkNfk)/(Sf1+...+Sfk)N_v=(S_{f1}N_{f1}+...+S_{fk}N_{fk})/(S_{f1}+...+S_{fk})
  • 按角度加权平均计算:Nv=(Angf1Nf1+...+AngfkNfk)/(Angf1+...+Angfk)N_v=(Ang_{f1}N_{f1}+...+Ang_{fk}N_{fk})/(Ang_{f1}+...+Ang_{fk})

三角网格的简单绘制

  • 三角网格模型的每个顶点需要指定一个色彩属性。
  • 基于色彩的绘制
    • 模型表面的每点的色彩通过其所在三角面片的顶点色彩插值得到。
  • 基于光照的绘制
    • 需要指定一个虚拟的光照环境;
    • 如何计算光照对色彩的影响是最大的问题。

2.3 Phong光照模型

光照模型

光照模型(lighting model 或 illumination model)用于计算光的强度。

  • 局部光照明(Local Lighting)关注物体直接受到光源影响所产生的光照效果。
  • 全局光照明(Global Lighting)关注阴影效果;关注所有不是直接与光源位置相关的光照效果,例如反射和折射效果,等等…

光照模型的历史

  • 1967年,Wylie 等人第一次在显示物体时加入了光照明效果,认为光的强度与物体到光源的距离成反比关系。

  • 1970年,Bouknight 提出了第一个光反射模型:Lambert 漫反射光+环境光;发表于Communication of ACM

  • 1971年,Gouraud 提出了漫反射模型加插值的思想:Lambert 漫反射光+Barycentric 插值;发表于IEEE transactions on Computers

  • 1975年,Phong提出了图形学中第一个有影响也是最有影响的光照模型:Phong模型:漫反射(diffuse light)+环境光(ambient light)+高光(specular light);发表于Communication of ACM

  • 光的传播遵循能量守恒定律:Ii=Id+Is+It+IvI_i=I_d+I_s+I_t+I_v

    • IiI_i:入射光的能量
    • IdI_d:漫反射(diffuse reflection)光的能量
    • IsI_s:镜面反射(specular reflection)光的能量
    • ItI_t:折射(refraction)光的能量
    • IvI_v:被介质和物体所吸收的能量

光的度量方法

  • 立体角(Solid Angle):衡量物体相对于某一视点P的视角大小;立体角最大为4π。
  • 光通量(Luminous Flux):单位时间内通过面元dSdS的光能量,记为dFdF
  • 发光强度(Radiance):单位立体角内的光通量,记为II

Phong 光照模型

  • Phong 模型支持点光源和方向光源

  • Phong 模型是局部光照模型,将局部光照明效果分解为三个部分:漫反射;镜面反射;环境光

  • 漫反射光效果

    • 漫反射光的传播是各向同性的;
    • 漫反射光的强度为:
    Id=IiKd(LN)I_d = I_iK_d*(L·N)
    • KdK_d 是漫反射系数。
    • KdK_d 具有三个分量 kdr,kdg,kdbk_{dr},k_{dg},k_{db} 分别代表 R,G,B 三个通道的漫反射系数。
    • KdK_d 与模型自身的色彩紧密相关。
  • 镜面反射光效果

    • 对于光滑的平面,依据反射定律,反射光线往往集中在一个小的立体角内,这些反射光我们称之为镜面反射光;
    • 镜面反射光的强度为:
    Is=IiKs(RV)nI_s = I_iK_s*(R·V)^n
    • KsK_s 是镜面反射系数,与物体表面光滑程度相关。
    • nn 是反射指数;nn 越大,则高光区域越集中。
  • 环境光效果

    • 环境光的强度为:
    Ia=IiKaI_a = I_iK_a
    • KaK_a 是物体对环境光的反射系数。
  • 视角方向的发光强度为漫反射光分量、镜面反射光分量,以及环境光分量的发光强度之和:

I=IiKa+IiKs(RV)n+IiKd(LN)I=I_iK_a+I_iK_s*(R·V)^n+I_iK_d*(L·N)

明暗处理(Shading)

考虑到物体表面的几何细节往往并不规则,为了减缓由模型离散化所导致的不光滑的色彩效果,通常的明暗处理除了使用光照模型外,还需要进行插值。

  • Gouraud 明暗处理是对色彩进行差值;
  • Phong 明暗处理则是对顶点法向进行插值。

一个逐顶点光照,一个逐像素光照。

  • 可以通过增量算法加速

第三章 视图模型变换

知识点大同《Unity Shader 入门精要》第四章。

图形学关注于如何将由几何模型组成的三维场景绘制成高质量的彩色图像。
变换在图形学中至关重要:通过变换,可以简洁高效地设置和编辑三维场景,光照位置,以及是视点方向。

变换是一个将空间中的点 x 映射成其他点 x’ 的函数。
广泛应用于:Morphing(渐变), Deformation(变形), Viewing, Projection, Real-time shadows..

简单变换

  • 不变(Identity),平移多(Translation),旋转 (Rotation),均衡缩放(Isotropic scaling)
  • 变换可以相互复合和嵌套:
    • 例如:先旋转,再缩放,最后再平移,
  • 简单变换都是可逆的。
  • 常见的变换有如下几类:
    • 刚体变换 (Rigid-body Transformation)不变/平移/旋转
    • 相似变换(Similarity Transformation)不变/平移/旋转/均衡缩放
    • 线性变换(Linear Transformation)不变/旋转/缩放/对称(Reflection)/错切(Shear)
    • 仿射变换(Affine Transformation)线性变换/相似变换
    • 投影变换(Projective Transformation)以上

齐次坐标(Homogeneous Coordinates)

齐次坐标的本质是使用四维数组来表示三维空间中的点和向量。
由于引入了新的维度,我们使用 444*4 的作用矩阵,同时使用 (x,y,z,w)(x,y,z,w) 来表示一个点或向量。

视点和投影模式

  • 视点变换:与相机位置及朝向相关。
  • 投影模式:是将3D变换成为2D的变换模式,常用的包括正交投影和透视投影。

透视投影矩阵

  • 标题: 课程笔记02 计算机图形学基础
  • 作者: 铁名_IronName
  • 创建于 : 2026-02-08 09:48:10
  • 更新于 : 2026-02-15 15:21:31
  • 链接: https://blog.ironname.top/2026/02/08/课程笔记02-计算机图形学基础/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论