本文主要是概念的总结,并不会讲述具体的算法,如需查看详细内容,请点击相关博客。
一、颜色视觉
1.1、基本概念
从心理学和视觉的角度出发,颜色具有三个特性:
色调(hue):一种颜色区别于其他颜色的因素,就是日常中的红绿蓝。
饱和度(saturation):颜色的纯度,如鲜红色的饱和度高、粉红色的饱和度低。
亮度(lightness):光的强度,光给予人刺激的强度。
从光学物理学的角度出发,颜色的三个特性:
主波长(dominant):产生颜色的光的波长,对应于视觉感知的色调。
光的波长(purity):类似于饱和度。
明度(luminance):光的亮度。
1.2、三色学说
三色学说:人眼的视网膜中存在着3种椎体细胞,他们包含不同的色素,对光的吸收和反射特性
不同,对于不同的光就有不同的颜色感觉。如1号锥体细胞专门感受红色,2号绿色,3号蓝色。
因此红绿蓝三种单色光可以作为基本的颜色,通过调整这种三种单色光的比例,可以调配出许多
种不同的颜色。
1.3、CIE色度图
GIE-XYZ系统利用三种假想的标准原色X(红)、Y(绿)和Z(蓝)混合出任何颜色,解决了
如何用三原色混合来复现给定颜色光的问题。
三刺激空间:使用R,G,B三原色的单位向量所定义的一个三维颜色空间。
色度图:在三刺激空间的坐标轴上对称的取一个截面,该截面与三个坐标平面构成的一个三角形。
GIE色度图:将色度图投影到XY平面得到的一个马蹄形的区域。
1.4、常用的颜色模型
颜色模型:某些三维颜色空间中的一个可见子集,它包含某个颜色域的所有颜色。
例如:RGB颜色模型就是三维直角坐标颜色系统中的一个单位正方体。
颜色模型的用途:在某一个颜色域内方便地指定颜色,由于每一个颜色域都是可见光的子集,所
以任何一个颜色模型都无法包含所有的可见光。
RGB颜色模型:以红绿蓝三种原色为基础,混合出复合色。其常常用于彩色阴极射线管等彩色光
栅图形显示设备中,属于最常用的颜色模型。
CMY颜色模型:以红绿蓝的补色青、品红、黄为颜色来构成混合色。其常常用于从白光中过滤某
种颜色。
RGB颜色模型和CMY颜色模型的区别:RGB颜色模型是加性原色系统,CMY颜色模型是减性原色系
统。RGB颜色模型的坐标原点为黑色,主要就是在黑色中加入原色来定义一种颜色。CMY颜色的坐
标原点是白色,主要是在白色中减去某种原色来定义一种颜色。
HSV颜色模型:借鉴自画家通过改变色浓和色深的方法从某种纯色获得不同色调的颜色。其所用方
法为:在一种纯色中加入白色得以改变色浓,加入黑色改变色深,同时加入不同比例的白色和黑色
即可得到不同色调的颜色。
RGB颜色模型、CMY颜色模型为:面向硬件的。
HSV颜色模型为:面向用户的。
二、简单光照模型
2.1、基本概念
光照明模型(明暗效应模型):当光照射到物体表面中,光线可能被吸收、反射和透射。被物体
吸收的部分转换为热,反射、透射的光部分进入人的视觉系统,使人们能看见物体。为模拟这一
现象,而建立的一些数学模型。
光的传播:
正常情况下,光沿直线传播。当遇到不同介质的分界面时,会产生反射和折射现象,而在反射和
折射的时候,它们分别遵循反射定律和折射定律。
反射定律:入射角等于反射角,而且反射光线、入射光线与法向量在同一平面上。
折射定律:折射角与入射角满足n1/n2=sinx/siny,且折射线在入射线与法线构成的平面上,
其中n1和n2是对应介质的折射率。
能量关系:在光的反射与折射现象中,能力是守恒的,能量分布情况满足:入射光强=漫反射光强
Id+镜面反射光强Is+投射光强It+被物体所吸收的光强Iv。
光的度量:
立体角:面元dS向点光源P所张的角dw。其dw=dS/(r^2);
光通量:单位时间内通过面元dS的光能量dF。
发光强度(光强):该方向上单位立体角内的光通量,即称为点光源在某个方向上的发光强度。
I=dF/dw。
2.2 Phong 光照明模型
当光找到物体表面时,物体对光产生反射(reflection)、透射(transmission)、吸收
(absorption)、衍射(diffraction)、折射(refraction)和干涉(interference)
等作用。
简单光照明模型模拟物体表面对光的反射作用。光源被假定为点光源,反射作用被细分为镜面反
射(specular reflection)和漫反射(diffuse reflection)。简单光照明模型只考虑
物体对直接光照的反射作用,而物体间的光反射作用,只用环境光(ambient light)统一表示。
理想漫反射:
当光源来自一个方向时,漫反射光均匀地向各方向传播,与视点无关。其主要是由表面的粗糙不平
引起的,漫反射光的空间分布是均匀的。
当只有一个光源时,漫反射光强Id=点光源的入射光强Ip 乘以 物体相关的漫反射系数Kd 点乘
(物体表面上点P的法向N 点乘 点P指向光源的向量L)。
当只有多个光源时,漫反射光强Id=多个点光源的入射光强I(p,i) 乘以 物体相关的漫反射系
数Kd 点乘(物体表面上点P的法向N 点乘 点Pi指向光源的向量Li)。
镜面反射光:
对于理想镜面,反射光集中在一个方向,并遵循反射定律。对一般的光滑表面,反射光集中在一
个范围内,且由反射定律决定的反射方向光强最大。
当只有一个光源时,镜面反射光强Is=点光源的入射光强Ip 乘以 物体相关的镜面反射系数Ks
点乘((反射方向R 点乘 视线方向V)^反射指数n)。
当只有多个光源时,漫反射光强Is=多个点光源的入射光强I(p,i) 乘以 物体相关的漫反射系
数Ks点乘((反射方向Ri 点乘 视线方向V)^反射指数n)。
高光现象:镜面反射光将会在反射方向附近形成很亮的光斑。
环境光:
环境光是指光源间接对物体施加的明暗影响,是在物体和环境之间多次反射,最终达到平衡时的一
种光。在简单光照模型中,常常使用一个常数来模拟环境光,环境光Ie=环境光强Ia 点乘 物体对
环境光的反射系数Ka。
由此Phong 光照明模型可表示为:
有物体表面上一点P反射到视点的光强I为环境光的反射光强Ie、理想漫反射光强Id和镜面反射光
Is的总和。
此外,为了便于实现,将镜面漫反射中的(R·V)使用(H·N),其中的H为点P指向光源的向量L和点
P指向视点的向量V的平分向量。
此外,Phong模型显示出来的物体会出现没什么质感的效果;因为环境光是常量,所有没有考虑
物体之间相互的反射光;镜面反射的颜色是光源的颜色,与物体无关;镜面反射的计算在入射角
很大时容易产生失真。
2.3 增量式光照明模型
增量式光照明模型主要用于保证多边形之间的光滑过渡,使连续的多边形呈现均匀的光强分布。
基本思想;在每一个多边形的顶点处,计算合适的光照明强度或其他参数;然后在多个多边形内
部进行均匀插值;最后得到多边形的光滑颜色分布。
根据插值的方式可以分为:双线性光强插值(Gouraud明暗处理)和双线性法向插值(Phong明
暗处理)。
双线性光强插值的基本思想:先计算物体表面多边形各顶点的光强,然后用双线性插值,求出多
边形内部区域中各点的光强。
双线性法向插值的基本思想:使用相邻多边形的法向量的平均值作为顶点的法向向量,使用双线
性插值对顶点的法向量进行插值,根据插值所得的法向量,计算各个像素的光亮度。
双线性法向插值引入了镜面反射,解决了高光问题。
增量式光照明模型的缺点:得到的物体边缘轮廓是折线段而非光滑曲线;由于透视的原因,使等
间距扫描线产生不均匀的效果;插值结果取决于插值方向,不同的插值方向会得到不同的插值结果。
2.4 阴影的生成
阴影:由光源被物体遮挡而在该物体后面产生的较暗的区域。
阴影多边形算法:首先用传统的隐藏面消除技术,相对于光源,把物体上的多边形区分为阴影多
边形和非阴影多边形。然后计算物体表面各个多边形的光强。对非阴影表面,用某种方法来减少
正常计算出来的光强值,使其有阴影的效果。
阴影域多面体算法:
阴影域:在物体空间中,按照阴影的定义,若光源照射到的物体表面是不透明的,那么就会在该
表面后面形成的一个三维的多面体阴影区域。
阴影域多面体:在透视变换生成图像的过程中,屏幕视域空间常常是一个四棱锥,用这个四棱锥
对物体的阴影区域进行裁剪,裁剪后得到的三维阴影域变成的封闭多边体。
该算法的关键就是如何有效的判断一个物体表面是否包含在阴影域多边形之内。如:使用扫描线
求交。
三、局部光照明模型
3.1、基本概念
局部光照明模型:处理光源直接照射物体表面的光照明模型。
整体光照明模型:可以处理物体之间光照的相互作用的模型。
平面偏振光:电磁量的振动只限于某一确定方向的振动。
光波:光波由矢量E和磁矢量H组成。
微平面理论:将粗糙物体表面看成是由无数个微小的理想镜面组成的。这些平面朝向各异,随机
分布。对每个微平面,只有在它的反射方向上才有反射光,在其他方向上都没有光出现。
3.2、局部光照明模型
反射光能力Ei等于(入射光强Ii乘以(点P的法向N·点P指向光源的向量L)乘以立体角)。
反射率系数等于(漫反射系数Kd 乘以漫反射率)加上(镜面反射系数Ks 乘以 镜面反射率Rs)。
局部光照明模型等于环境光 加上 入射光能量 乘以 反射率系数。
四、光透射模型
4.1、 透明效果的简单模拟
对于透明或半透明的物体,在光线与物体表面相交时,一般会产生反射与折射,经折射后的光线
将穿过物体而在物体的另一面射出,形成透射光。如果视点在折射光线方向上,即可看见透射光。
颜色调和法:
透明效果的简单模拟常用的是颜色调和法。该方法不考虑透明体对光的折射以及透明物体本身的
厚度,光通过物体表面是不会改变方向的,故可以模拟平面玻璃,可用隐藏面消除算法来模拟。
某一点的颜色=透明度t*视线穿过透明体与另一物体相交处的颜色(光强)Ib+(1-透明度t)*
视线与透明体相交处的颜色(光强)Ia。
颜色调和法只能模拟玻璃的透明或半透明效果。
4.2、Whitted光透射模型
Whitted光透射模型就是在简单光照明模型的基础上增加了透射光的一项。
透射光=折射方向的入射光强度*透射系数。
如果该透明体又是一个镜面反射体,应加上环境反射光一项,以模拟由四周环境引起的镜面反射
效果。
环境反射光=镜面反射方向的入射光强度*镜面反射系数。
4.3、Hall光透射模型
Halll光透射模型是在Whitted光透射模型的基础上得来的。主要就是在Whitted模型的光强
计算中加入光源引起的规则透射分量,同时还会处理理想的漫透射。
漫透射:透明体的粗糙表面对透射光的作用表现。
漫透射面:透明体的粗糙表面,如毛玻璃表面。
当光线透过漫透射表面射出时,光线将向各个方向散射,而理想漫透射面,透射光的光强在各个
方向上均相等。
使用Hall光透射模型时:
点P处的漫透射光的光强为:
Idt=入射光的强度Ip·物体的漫透射系数Kdt·(点P的负法向·点P指向光源的向量L)。
透射高光现象:规则透射光在视线方向的强度It=点光源的强度Ip·物体的透明系数·((光线的
折射方向T·视线V)^物体表面光泽的常数n)。
4.4、简单光反射透射模型
综合简单光照明模型,由Whitted光透射模型和Hall光透射模型可得到简单光反射透射模型。
4.5、纹理及纹理映射
几何纹理:基于物体表面的微观几何形状的表面纹理。
最常用的几何纹理:对物体表面的法向进行微小扰动来表现物体表面的细节。
纹理映射:把指定纹理映射到三维物体表面上的技术。
纹理映射需要考虑以下三个方向的问题:
(1)对于简单光照明模型,需要了解当物体上什么属性被改变时,可产生纹理的效果。
① 改变漫反射系数来改变物体的颜色。
② 改变物体表面的法向量。
(2)在真实感图形学中,如何定义纹理。
图像纹理:将二维纹理图案映射到三维物体表面,绘制物体表面上一点时,采用相应的纹理图案
中相应点的颜色值。
函数纹理:用数学函数定义简单的二维纹理图案,如方格地毯;或用数学函数定义随机高度长,
生成表面粗糙纹理即几何纹理。
(3)定义完纹理之后,还需要处理如何对纹理进行映射的问题。
对于二维图像纹理,就是如何建立纹理与三维物体之间的对应关系,而对于几何纹理,就是如何
扰动法向量。
纹理一般都定义在单位正方形区域中,称为纹理空间。常用的纹理空间定义方法有以下三种:
①用参数曲面的参数域作为纹理空间(二维)。
②用辅助平面、圆柱、球定义纹理空间(二维)。
③用三维直角坐标系作为纹理空间(三维)。
5.2 二维纹理域的映射
在纹理映射技术中,最常见的纹理是二维纹理,通过映射将二维纹理变换到三维物体的表面,形
成最终的图像。
二维纹理可以通过函数和图像的方式表示。当使用函数的方式来表示的时候,使用将参数代入的
方式来获取对应的纹理图像。当使用图像的方式来表示的时候,用一个m*n的二维数组存放一副
数字化图像,用插值法构造纹理函数,然后将该二维图像映射到三维的物体表面。
如何二维纹理到底应该如何纹理映射呢?
首先需要建立物体空间坐标(x,y,z)和纹理空间坐标(u,v)之间的对应关系,相当于对物体
表面进行参数化;反求出物体表面的参数,然后根据(u,v)得到该点的纹理值,并用此值取代
光照明模型中的相应项。
5.3 三维纹理域的映射
三维纹理的基本思想:假如在三维物体空间中,物体中每一个点(x,y,z)均有一个纹理值
t(x,y,z),其值有纹理函数(x,y,z)唯一确定,那么对于物体上的空间点,就可以映射
到定义了纹理函数的三维空间当中。
三维纹理的映射:由于三维纹理映射的纹理空间与物体空间维数相同,所以在纹理映射的时候,
只需要将场景中的物体变换到纹理空间的局部坐标系中去即可。
5.4 几何纹理
几何纹理(凹凸映射):为了给物体表面加上一个粗糙的外观,可以对物体的表面几何性质做
微小的扰动,产生凹凸不平的细节效果。
具体做法是:
(1)扰动获取几何纹理
在物体表面上的每一个点P(u,v),都沿该点处的法向量方向位移F(u,v)个单位长度,根据
新表面的法向量可以通过对两个两个偏导数求叉积,对向量进行扰动。对扰动后的向量单位化,
用于计算曲面的明暗度,这样可以产生貌似凹凸不平的几何纹理。
(2)几何纹理映射
由于几何纹理函数的定义与颜色纹理的定义方法相同,可以使用统一的图案纹理记录。因此将图
案中较暗的颜色对应于较小的F值,较亮的颜色对应较大的F值,把各像素的值用一个二维数组记
录下来,再用二维纹理映射的方法映射到物体表面,就可以成为一个几何纹理映射。
六、整体光照明模型
现有的整体光照明模型中,主要有光线追踪和辐射度两种方法。
6.1、光线追踪算法
直接光:由光源发出的光。
直接反射、直接折射:物体对直接光的反射或折射。
间接光:把物体表面间反射和折射的光。
间接反射、间接折射:物体对间接光的反射或折射。
阴影测试线:物体表面上点与光源的连线。
基本的光线跟踪算法是跟踪镜面反射和折射。
实际光线跟踪算法与光传播的方向是相反的,是一种视线跟踪。比如希望对某一个物体进行光线
追踪,就是由视点经像素(x,y)发出一根射线(视线),与第一个物体相交后,在其反射与折
射方向上进行追踪。
当光线V与物体表面交于点P时,光在点P对光线V方向的贡献分为三部分,由光源产生的直接光照
射线强、反射方向上由其他物体引起的间接光照光强和折射方向上由其他物体引起的间接光照光强。
光线与物体的求交:
关线与球的求交:
代数方法:将点(x0,y0,z0)代入参数方程,求解参数方程,由k=B^2-4C。如果k<0,则光
线与球无交,如果k==0,则光线与球相切,如果K>0,则光线与球有两个交点。其实这个参数方
程就代表着这个球在坐标系中的空间,如果这点与球相交,则有解。
几何解法:先计算光线起点到球心的距离平方,再计算光线起点到光线离球心最近点A的距离tca。
当光线起点在球外时,若tca<0,则球在光线的背面,且两者无交。如果不能由此判断,则计算
半弦长的平方(thc)^2来判定交点个数。(thc)^2<0,则无交,(thc)^2==0,则相切,
(thc)^2>0,则有两个交点。
几何解法比代数法少一次加减计算和4次乘法运算。
光线与多边形和光线与二次曲面的求交,和前面几何造型技术中的《求交分类》部分中的差不多,
这里。
光线追踪算法的加速:
加速技术主要分为以下几个方面:提高求交速度,减少求交次数,减少光线条数,采用广义光线
和采用并行算法等。
常见的几种为:
(1)自适应深度控制:对于复杂的场景没必要全部都追踪到很深,可以根据光线所穿过的区域的
性质来改变跟踪深度。
(2)包围盒及层次结构
包围盒技术的基本思想:用一些形状简单的包围盒将复杂景物包围起来,求交光线首先对包围盒
进行求交测试。(感觉碰撞体技术就是从这里面出来的)。
包围盒技术改进层次结构的基本原理:根据景物的分布情况,将相距相近的景物组成一组局部场
景,相邻各组又组成更大的组,将整个景物空间组织成树状的层次结构。进行求交测试的光线,
先进入该树结构的根节点,并从根节点开始,从上向下与各相关节点的包围盒进行求交测试。若
一节点的包围盒与光线有交,则递归地与其子节点进行求交测试,否则,该节点的所有景物均与
光线无交。
(3)三维DDA算法
基本思想:首先通过将景物空间均匀分割为一系列均匀的三维网格。在光线追踪时,只需依次与
其经过的空间网格中所含有的景物面片进行求交测试。然后将直线光栅化的DDA算法推广到三维
当中。
(4)空间八叉树剖分技术
基本思想:将含有整个场景的空间立方体按三个方向中的剖面分割为8个子立方体网格,组织成
一棵八叉树。若某一子立方体网格中所含景物面片数大于给定的阀值,则再将该子立方体作进一
步剖分。
直至八叉树的每个叶子节点所含面片数均小于给定的阀值为止。
6.2、辐射度方法
辐射度方法主要是基于物理学的能量平衡原理,采用数值求解技术来近似每一个景物表面的辐射
度分布。这个能量平衡原理指的是基于热辐射工程的能量传递和守恒理论,即封闭环境中能量经
过多重反射之后,最终会达到一种平衡状态。
几何光学的能量守恒定律:在单位时间内通过一个光线管中任一截面的能量是恒定的。
光通量:单位时间内通过某一面积ds的光能量。
立体角dw:光能流传播是在立体锥角中进行的,这个立体锥角就是立体角。
光强度:某方向上的单位立体角内的光通量。
光亮度:面元单位面积上向某方向辐射的光能。
7、实时真实感图形学技术
实时真实感图形学技术(LOD(层次细节)显示和简化技术):在当前图形算法和硬件条件的
限制下,提出的在一定时间内完成真实感图形图像绘制的技术。通常都是通过损失一定的图形
质量来达到实时的目的。
7.1、层次细节显示与简化
基本思想:当从近处观察物体时,采用精细的模型,而当从远处观察物体时,采用较为粗糙的
模型。
几何形状过渡:为了防止不同层次的模型之间存在一个明显的跳跃,在相邻层次的模型之间形
成光滑的视觉过渡。基本方法是:通过插值对应网格基本元素的位置来进行光滑过渡。
建立不同层次的模型可以通过三种操作:
顶点删除操作:删除网格中的一个顶点,然后对它的相邻三角形形成的空洞重新做三角剖分,
以保持网格的拓扑一致性。
边压缩操作:把网格上的一条边压缩为一个顶点,与该边相邻的两个三角形退化,然后它的两
个顶点融合为一个顶点。
面片收缩操作:把网格上的面片收缩为一个顶点,该三角形本身和其相邻的三个三角形都退化,
而它的三个顶点融合成一个顶点。
7.2、基于图像的绘制技术
基于图像的绘制技术基本思想:使用预先生成好的真实感图像,通过一定的插入、混合、变形
等操作,来生成不同视点处的真实感图像。
计算机图形学完整笔记(九):真实感图形学
参考书籍:
《计算机图形学基础教程》 孙家广 胡事民著