第八讲消隐与光照模型
光影分离知识点梳理总结
光影分离知识点梳理总结光影分离是指根据光的物理特性,将光和影分开的一种技术。
在现实世界中,光和影常常是不可分割的,但是在数字图像处理中,我们可以通过一系列算法和技术,将光和影分离开来,使得图像处理更加精确和高效。
光影分离的目的是为了更好地理解和处理图像中的光和影,从而使得图像处理更加准确和可靠。
通过光影分离,我们可以更清晰地了解图像中的光照情况、材质特性以及遮挡关系,这些信息对于图像处理和计算机视觉应用非常重要。
在光影分离中,一些重要的知识点包括光照模型、遮挡关系、高光和阴影等。
下面将对这些知识点进行详细的梳理和总结。
一、光照模型光照模型是描述光照和表面反射之间关系的数学模型。
常见的光照模型包括环境光照、漫反射光照、镜面光照等。
环境光照是指物体表面吸收周围环境中的光,然后均匀地反射出来的光。
漫反射光照是指光线照射到物体表面后,均匀地向各个方向散射的光。
镜面光照是指光线照射到物体表面后,呈现明亮的高光效果。
了解光照模型可以帮助我们更好地理解图像中的光照信息,从而进行光影分离处理。
二、遮挡关系遮挡关系是指在图像中物体之间相互遮挡的关系。
通过分析图像中的遮挡关系,可以更好地理解图像中的三维空间结构,从而进行光影分离处理。
常见的遮挡关系包括遮挡、透明和半透明等。
遮挡是指一个物体完全遮挡了另一个物体,透明是指一个物体通过另一个物体的情况,半透明是指一个物体部分遮挡了另一个物体。
通过分析这些遮挡关系,可以更准确地进行光影分离处理。
三、高光和阴影高光是指物体表面被光照射最强、反射最亮的部分,而阴影是指物体表面受到遮挡而无法被光线直接照射到的部分。
通过分析图像中物体的高光和阴影信息,可以更准确地进行光影分离处理。
高光和阴影的存在对于图像中的光照情况和表面材质有很大的影响,了解这些特征可以帮助我们更好地进行图像处理和分析。
综上所述,光影分离是一项非常重要的图像处理技术,通过光影分离,我们可以更准确地理解和处理图像中的光照情况、遮挡关系以及表面特性。
计算机图形学究极题库-副本
计算机图形学究极题库-副本名词解释:1.图形:能够在⼈们视觉系统中形成视觉印象的对象称为图形,包括⾃然景物和⼈⼯绘图。
2.像素图:点阵法列举图形中的所有点。
⽤点阵法描述的图形称为像素图。
3.参数图:参数法描述图形的形状参数和属性参数。
⽤参数法描述的图形称为参数图。
4.扫描线:在光栅扫描显⽰器中,电⼦枪扫过的⼀⾏称为⼀条扫描线。
5.构造实体⼏何表⽰法:⽤简单的实体(也称为体素)通过集合运算组合成所需的物体的⽅法称为构造实体⼏何表⽰法。
6.投影:投影是从⾼维(物体)空间到低维(投影)空间的⼀种映射。
7.参数向量⽅程:参数向量⽅程是包含参数和向量的⽅程。
8.⾃由曲线:形状⽐较复杂、不能⽤⼆次⽅程来表⽰的曲线称为⾃由曲线,通常以三次参数⽅程来表⽰9.曲线拟合:给定⼀个点列,⽤该点列来构造曲线的⽅法称为曲线拟合。
10.曲线插值:已知曲线上的⼀个点列,求曲线上的其他点的⽅法称为曲线插值。
11.区域填充:根据像素的属性值、边或顶点的简单描述,⽣成区域的过程称为区域填充。
12.扫描转换:在⽮量图形中,多边形⽤顶点序列来表⽰,为了在光栅显⽰器或打印机等设备上显⽰多边形,必须把它转换为点阵表⽰。
这种转换称为扫描转换。
1、计算机图形学:⽤计算机建⽴、存储、处理某个对象的模型,并根据模型产⽣该对象图形输出的有关理论、⽅法与技术,称为计算机图形学。
2、计算机图形标准:计算机图形标准是指图形系统及其相关应⽤程序中各界⾯之间进⾏数据传送和通信的接⼝标准。
3、图形消隐:计算机为了反映真实的图形,把隐藏的部分从图中消除。
4、⼏何变换:⼏何变换的基本⽅法是把变换矩阵作为⼀个算⼦,作⽤到图形⼀系列顶点的位置⽮量,从⽽得到这些顶点在⼏何变换后的新的顶点序列,连接新的顶点序列即可得到变换后的图形。
5、计算⼏何:计算⼏何研究⼏何模型和数据处理的学科,讨论⼏何形体的计算机表⽰、分析和综合,研究如何⽅便灵活、有效地建⽴⼏何形体的数学模型以及在计算机中更好地存贮和管理这些模型数据。
计算机图形学中的光照模型
计算机图形学中的光照模型在计算机图形学中,光照模型是模拟现实世界中光线与物体之间相互作用的模型。
通过使用光照模型,计算机可以在虚拟场景中模拟光线的传播和反射,从而创建出真实感和逼真感的图像。
因此,光照模型是计算机图形学中非常重要的一个组成部分。
光照模型的基本原理是从光源发出的光线经过物体表面的反射、折射和透射等变换,最终到达观察者的眼睛,从而形成人们所看到的图像。
在光照模型中,光源可以是点光源、定向光源和面光源等不同类型的光源,而物体的材质属性和表面形状也会对光线的传播和反射产生影响。
常见的光照模型包括冯氏光照模型、布林-菲菲(Blinn-Phong)光照模型、库克-托伯汉姆(Cook-Torrance)光照模型等。
下面,我们分别对这三种光照模型进行介绍。
冯氏光照模型是最早被提出的光照模型之一,它是由斯特恩伯格(Phong)在上世纪70年代提出的。
冯氏光照模型假设物体表面的亮度与其漫反射和镜面反射成分的线性组合有关。
其中,漫反射成分是从各个方向均匀地反射出来的光线,而镜面反射成分则是由光源直接反射回观察者的光线。
冯氏光照模型还考虑了环境光的影响,该影响是由光源外发射的光线在场景中反射和折射,并最终到达物体表面的。
布林-菲菲光照模型是另一种常用的光照模型,它是由布林(Blinn)和菲菲(Phong)在上世纪80年代提出的。
相比于冯氏光照模型,布林-菲菲光照模型增加了一个半角向量的概念。
半角向量是入射光线和出射光线的平均方向,它可以更加准确地描述物体表面的反射特性。
此外,布林-菲菲光照模型还加入了柔光和高光衰减等特性,从而使得被渲染的图像更加真实。
库克-托伯汉姆光照模型是一种物理模拟的光照模型,它是由库克(Cook)和托伯汉姆(Torrance)在上世纪80年代提出的。
该光照模型基于微观的物理原理,考虑了光线与物体表面微观结构之间的相互作用。
库克-托伯汉姆光照模型因其真实感和准确性而被广泛应用于计算机图形学、计算机游戏等领域。
三维物体消隐算法
----本文将分析当前在CAD三维图形处理中最主要的12中消隐算法,其中8种属于物体空间法,4种属于图象空间法。在实际处理中,由于物体表面形态的复杂性和提高消隐处理的效率,通常都是结合使用多种消隐算法来完成物体的消隐处理的。
----一、物体空间法
----物体空间法是在三维坐标系中,通过分析物体模型间的几何关系,如物体的几何位置、与观察点的相对位置等,来进行隐藏面判断的消隐算法。世界坐标系是描述物体的原始坐标系,物体的世界坐标描述了物体的基本形状。为了更好地观察和描述物体,经常需要对其世界坐标进行平移和旋转,而得到物体的观察坐标。物体的观察坐标能得到描述物体的更好视角,所以物体空间法通常都是在观察坐标系中进行的。观察坐标系的原点一般即是观察点。
[x*y*z*1]=[xyz][cosβ0-sinβ0
0100
sinβ0cosβ0
0001]
物体绕X轴旋转的角度γ的三维旋转变换公式为
[x*y*z*1]=[xyz][1000
0corγsinγ0
0-sinγcosγ0
0001]
将上述表达式展开后可得如下公式
{x'=cosα×x-sinα×z;
三维坐标变换
透视投影变换
基本图形元素间的求交计算
两个区域重叠判断
点与区域的包含测试
面的朝向测试
----S为消隐策略,即规定P中各基本操作过程被采用的先后次序。
----因此,设计消隐算法时应考虑上述五个要素及它们之间的相互关系。
----在计算机图形学中,为了简化算法,一般是利用多面体去逼近曲面体,因此多面体的消隐算法是曲面体的基础。本文的消隐算法讨论主要是基于多面体的消隐问题,对曲面体进行多次多面体近似,对每一多面体运用多面体消隐算法就能实现曲面体的消隐。
虚拟现实技术的复习资料
虚拟现实技术第一章1、虚拟现实的概念:用计算机技术来生成一个逼真的三维视觉、听觉、触觉或嗅觉等感觉世界;让用户可以从自己的视点出发,利用自然的技能和某些设备对这一生成的虚拟世界客体进行浏览和交互考察。
虚拟现实是计算机与用户之间的一种理想化的人-机界面形式。
通常用户戴一个头盔(用来显示立体图象的头式显示器),手持传感手套,仿佛置身于一个幻觉世界中,在虚拟环境中漫游,并允许操作其中的“物体”。
2、虚拟现实的特征与传统计算机相比,虚拟现实系统具有四个重要特征:临界性,交互性,想象性,多感知性3、虚拟现实系统的构成:a.虚拟世界(包含三维模型或环境定义的数据库) b.虚拟现实软件(提供实现观察和参与虚拟世界的能力) c.计算机 d.输入设别(观察和构造虚拟世界;如三维鼠标,数据手套,定义跟踪器等) e.输出设备(现实虚拟世界;如显示器,头盔等)4、虚拟现实系统的类型桌面虚拟现实系统,沉浸式虚拟现实系统,混合虚拟现实系统5、虚拟现实的硬件设备跟踪系统(把使用者身体位置的变动反馈给主机,以实时改变图像和声音)知觉系统(人及交互的各种界面,包括视觉装置:头盔显示器等;触觉装置:数据手套跟踪球等)音频系统:立体声耳机等图像生成和现实系统:产生视觉图象和立体显示6、虚拟现实有哪些软件VR系统开发工具:能够接受各种高性能传感器的信息,如头盔的跟踪信息;能生成立体显示图行;能把各种数据库,各种CAD软件进行调用和互联3DSMax:三维制作软件Maya:三维动画以及虚拟现实制作软件,实时三维模型创建软件Multigen Creator7、眼睛的作用、视觉暂留和临界融合频率的概念眼睛的作用:调节和聚焦,明暗适应,视觉暂留,立体视觉,视场视觉暂留:视觉暂留是视网膜的电化学县乡造成视觉的反应时间。
当观看很短的光脉冲时,视杆细胞得到越0.25s的峰,视椎细胞快4倍(0.04s)。
这种现象造成视觉暂留。
临界融合频率:临界融合频率(CFF)效果会产生把离散图像序列组合成连续视觉的能力,CFF最低20Hz,冰取决于图像尺寸和亮度。
06-消隐
点与多边形的包含性检测: (1)射线法
P P1 P2 P3 P P1 P2
由被测点P处向 y = - 方向作射线 交点个数是奇数,则被测点在多边形内部。否则,偶数 表示在多边形外部。
若射线正好经过多边形的顶点 ,则采用“左开右闭”的原则来 实现。即:当射线与某条边的顶 点相交时,若边在射线的左侧, 交点有效,计数;若边在射线的 右侧,交点无效,不计数。 用射线法来判断一个点是否 在多边形内一是计算量大,二 是不稳定。原因是射线在经过 多边形顶点时,由于计算机本 身的误差(也许多了0.00001), 把本该无效的交点变成有效的 交点了。所以这种算法是不稳 定的。
上图所画的仅仅是一个简单的立方体,如果一个物体是由多 个形体所组成的,或者整个三维场景是由多个物体构成的,情 况就更为复杂了。 因此,要绘制出意义明确的、富有真实感的立体图形,首 先必须消去形体中的不可见部分,而只在图形中表现可见部 分。这就要去寻求解决显示三维物体的图形中消去不可见部 分的方法,也就是所谓的“消隐”问题。消隐包括消除“隐 藏线”和“隐藏面”两个问题。
消 隐
三维物体的显示和真实感图形是当今计算机图形学研究的 一个焦点。在二维显示设备上显示三维图像, 必须对三维图像 进行消隐处理, 通过消隐处理的物体才能很好的表现三维立体 效果, 但是这种物体明显缺乏真实感, 还需要对物体进行真实 感的处理, 这样才能逼真的显示物体。
主要讲述的内容:
消隐的分类,如何消除隐藏线、隐藏面,主要介绍以 下几个算法:
Z-Buffer算法() { 帧缓存全臵为背景色
深度缓存全臵为最小Z值(比如赋一个10-8次方)
for(每一个多边形)
{扫描转换该多边形
for(该多边形所覆盖的每个象素(x,y) )
第7章 消隐
深度缓冲器算法
深度值的计算 若已知多边形的方程,则可用增量法计算扫描 线每一个像素的深度。设平面方程为:
Ax + By + Cz + D = 0
则多边形面上的点(x,y)所对应的深度值为: (7-6)
( Ax + By + D) z= C
C≠0
深度缓冲器算法
由于所有扫描线上相邻点间的水平间距为1个 像素单位,扫描线行与行之间的垂直间距也为 1。因此可以利用这种连贯性来简化计算过程, 如图7-13所示。
扫描线算法
扫描线与多边形面片求交算法的实现 - 扫描线算法的三表数据结构 边表(ET) 对投影到屏幕上的这些多边形的所有非水平边 建立ET表,边结点结构如下:
扫描线算法
多边形表(PT) 多边形表的结构如下:
活性边表(AET) 为了计算扫描线与各边的交点,还需活性边表 (AET) AET是与当前扫描线相交的多边形边结点链接 而成的表。
v
S
3
S
2
S
1
(x, y)
Xv
Zv
图7-12 Z缓冲器算法基本思想
深度缓冲器算法
算法描述 深度缓冲器所有单元均置为最小z值,帧缓冲器各单 元均置为背景色,然后逐个处理多边形表中的各面片。 每扫描一行,计算该行各像素点(x,y)所对应的深 度值z(x,y),并将结果与深度缓冲器中该像素单 元所存储的深度值ZB(x,y)进行比较。 若z>ZB(x,y),则ZB(x,y)= z,同时将该像素 的属性值I(x,y)写入帧缓冲器,即FB(x,y)= I (x,y);否则不变。
扫描线算法
多边形发生相互贯穿 在多边形发生相互贯穿的情况下,仍可以使用 扫描线消隐算法。如图7-15所示,多边形GHI 和JKL发生相互贯穿。此时,可将多边形GHI 分为两个多边形GHH‘G’和H‘G’I,引入了虚边 J G‘H’。 H
《计算机图形学》--试卷A及参考答案
()4. EGA/VGA为增强图形显示效果的一种图形处理软件的名称。
()5. 对山、水等不规则对象进行造型时,大多采用过程式模拟方法。
()6. 实体的边界由平面多边形或空间曲面片组成。
()7. 平面多面体表面的平面多边形的边最多属于两个多边形,即它的表面具有二维流形的性质。
()8. 观察空间位于前后裁剪面之间的部分称为裁剪空间或视见体。
()9. 找出并消除物体中的不可见部分,称为消隐。
()10. 使用齐次坐标可以将n维空间的一个点向量唯一的映射到n+1维空间中。
三、填空题(将正确答案填入横线上,每空2分,共20分)1.直线的属性包括线型、和颜色。
2.颜色通常用红、绿和蓝三原色的含量来表示。
对于不具有彩色功能的显示系统,颜色显示为。
3.平面图形在内存中有两种表示方法,即和矢量表示法。
4.将三维物体变为二维图形的变换称为,其有两种基本方式:平行投影、。
5. 边界点组成的集合称为集合的。
6.对于一个占据有限空间的正则(点)集,如果其表面是,则该正则集为一个实体有效物体。
7.通过实体的边界来表示一个实体的方法称为。
8.表面由平面多边形构成的空间三维体称为。
9. 标量:一个标量表示。
四、简答题(每小题5分,共20分)1. 什么是图像的分辨率?2. 局部光照模型和全局光照模型的不同之处是什么?3.实体采用八叉树表示法有哪些缺点?4. 消隐算法有哪些类型,它们各有什么特点?五、计算题(每小题11分,共22分)1. 写出直线方程b mx y +=''对应的xy 坐标方程,假设''y x 坐标系是由xy 坐标系旋转90°得到。
2. 写出从),(111y x P 到),(222y x P 的段与(a )垂直线x =a ,(b )水平线y =b 的交点。
以下为本试卷的参考答案一、名词解释(每小题3分,共18分)1.图形:能够在人们视觉系统中形成视觉印象的对象称为图形,包括自然景物和人工绘图。
第八章 三维消隐
8.1.6 深度检验
深度检验的目的是为了判别线段与多边形沿 着视线方向的前后遮挡关系。在同一投影点上, 离视点近的对象会挡住离视点远的对象。为了减 少比较和计算的工作量,检验分两步进行:粗略 检验和精确检验。 1.粗略检验 粗略检验是将那些对某条线段不构成遮挡的 多边形排除,不再进行下面的精确检验。 设视点在z轴正向无穷远处。如果线段两端点 的z坐标均大于多边形每一顶点的z坐标,则线段 在该多边形之前,那么线段不可能被多边形遮挡。
2016/3/10 23
8.1.3 包含性检验
x=x0+u (u≥0) y=y0 求出射线与多边形投影(一般仍为多边 形)各边的交点个数: 1、当交点数为奇数时,点在多边形投影 内; 2、若交点数为偶数时,点在多边形投影 外。
2016/3/10 248Fra bibliotek1.3 包含性检验
包含性检验
2016/3/10
第八章 三维消隐
for(场景中的每一个物体) { 将该物体与场景中的其它物体进 行比较,确定其表面的可见部分; 显示该物体表面的可见部分; } 此类算法通常用于线框图的消隐。 如果场景中有k个物体,这类算法的 计算量正比于k2。
2016/3/10 11
第八章 三维消隐
2、图像空间消隐算法 以窗口内的每个像素为处理单元。确定在每 一个像素处,场景中的k个物体哪一个距离观察点 最近,从而用它的颜色来显示该像素。 算法描述如下: for(窗口中的每一个像素) { 确定距视点最近的物体,以该物体表面的颜 色来显示像素; } 如果场景中有k个物体,屏幕分辨率为m×n, 则这类算法的计算量为:mnk。
2016/3/10
17
8.1.2 平面多边形的外法矢量
计算机图形学-消隐
共四十四页
1. 消除 自隐线、面 (xiāochú)
对于多面体的任一个面,可以根据其外法向
E
n和视矢量E的夹角θ来进行可见性检测。
法向n:规定每个多边形的法向都是指向物 体外部(wàibù)的。
前向面: θ∈(-90°,90°)时,表示该表 E 面可见,称为前向面。
后向面: θ∈[90°, -90°]时,表示该表 面不可见,称为后向面 。
θn
n 前向面 n
后向面
剔除依据:后向面总是被前向面所遮挡,从而不可见。不会 由于后向面的遮挡,而使别的棱成为不可见的。因此计算时, 可以把这些后向面全部去掉,这并不影响消隐结果。
17
共四十四页
1. 消除 自隐线、面 (xiāochú)
图中的JFAE、HCBG和 DEABC所在(suǒzài)的面均 为后向面。其它为前向 J
也称表优先级算法。
30
共四十四页
1. 画家 算法 (huàjiā)
关键:如何对场景中的物体表面按深度(远近(yuǎnjìn))排序,建立深 度优先级表?
先讨论在深度优先级排序中两个多边形P和Q之间的关系。多边形可以 按其最大或最小z值徘序,不妨假设按多边形的最大z值进行预排序,即
zmax(P)>zmax(Q)。
消隐(xiāo yǐn)
1
共四十四页
消隐(xiāo yǐn)
1 概述(ɡài shù) 2 线消隐 3 提高消隐算法的效率 4 面消隐
2
共四十四页
1 概述(ɡài shù)
什么叫做“消隐”?为什么要进行(jìnxíng)“消隐”?
将三维场景绘制在计算机二维显示屏上必须经过投影变换,投影 变换将三维信息变换到二维平面上,这个过程中深度信息被丢失, 生成的图形往往具有二义性。
整体光照模型概念
整体光照模型概念
整体光照模型是计算机图形学和计算机视觉领域的重要概念,用于描述物体表面的光照和阴影效果。
它是一种数学模型,用于模拟物体表面在不同光照条件下的表现,以便在计算机图形渲染中生成逼真的图像。
整体光照模型通常包括以下几个方面的内容:
环境光照(Ambient Lighting):描述了物体表面在周围环境光线的作用下的整体亮度。
环境光照通常是均匀分布的,用于模拟物体受到周围环境光的普遍影响。
漫反射光照(Diffuse Reflection):描述了光线在物体表面上均匀反射的情况,模拟了光线照射到物体表面后向各个方向发射的情况,使得物体在各个方向上都具有一定亮度。
镜面反射光照(Specular Reflection):描述了光线在物体表面上发生镜面反射的情况,模拟了光线照射到物体表面后呈现出明亮镜面的情况,通常用于模拟物体的光泽和反射效果。
阴影效果(Shading):描述了物体表面上由于光线照射而产生的阴影效果,包括平行光阴影、点光源阴影等,用于模拟物体表面的光照变化和深度感。
整体光照模型的目标是尽可能真实地模拟物体在真实光照条件下的表现,以便在计算机图形渲染中生成逼真的图像。
不同的整体光照模型可以根据具体的光学特性和应用场景进行调整和组合,以获得适合特定需求的光照效果。
消隐算法——精选推荐
消隐算法消隐算法⼀、消隐当我们观察空间任何⼀个不透明的物体时,只能看到该物体朝向我们的那些表⾯,其余的表⾯由于被物体所遮挡我们看不到。
若把可见的和不可见的线都画出来,对视觉会造成多义性。
会有后边两种情况要消除⼆义性,就必须在绘制时消除被遮挡的不可见的线或⾯,习惯上称作消除隐藏线和隐藏⾯,简称为消隐。
消隐不仅与消隐对象有关,还与观察者的位置有关。
⼆、消隐的分类1>按消隐对象分类线消隐:消隐对象是物体的边⾯消隐:消隐对象是物体上的⾯2>按消隐空间分类物体空间的消隐算法:以场景中的物体为处理单位。
假设场景中有k个物体,将其中⼀个物体与其余k-1个物体逐⼀⽐较,仅显⽰它可见表⾯已达到消隐的⽬的。
(此类算法通常⽤于线框图的消隐!)图像空间的消隐算法:以屏幕窗⼝内的每个像素为处理单元。
对屏幕上每个像素进⾏判断,决定哪个多边形在该像素可见(这类算法是消隐算法的主流)三、图像空间的消隐算法:1>Z-buffer算法2>扫描线算法3>Warnock消隐算法画家算法:去除隐藏⾯最简单的算法原理:若场景中有许多物体,就是先画远的物体,再画近的物体。
这样⼀来,近的物体⾃然就会盖住远的物体。
但实际情况并不理想,在三维场景中,⼀个物体可能有些部分远,有些部分近,所以不管⽤什么顺序画,都⽆法得到正确的结果,所以画家算法只能解决简单场景的消隐问题。
Z-buffer算法1、也称Z缓冲区算法和深度缓冲器算法(能跟踪屏幕上每个像素深度的算法),让计算机⽣成复杂图形成为可能。
2、该算法有帧缓冲器和深度缓冲器,对应两个数组:Intensity(x,y)-属性数组(帧缓冲器),存储图像空间每个可见像素的光强或颜⾊Depth(x,y)-深度数组(Z-buffer),存放图像空间每个可见像素的Z坐标。
Z-buffer保存的是经过投影变换后的z坐标,距离眼睛近的地⽅z坐标的分辨率⽐较⼤,远处的分辨率⼩。
3、Z-buffer算法思想(开⼀个和帧缓存⼀样⼤⼩的存储空间,利⽤空间上的牺牲换区算法上的简洁)(1)先将z缓冲器中各单元的初始值置为最⼩值(2)当要改变某个像素的颜⾊值时,⾸先检查当前多边形的深度值是否⼤于该像素原来的深度值(3)如果⼤于原来的z值,说明当前多边形更靠近观察点,⽤它的颜⾊替换像素原来的颜⾊。
光照模型
• 1975年,Phong提出图形学中第一个有影
简单光照模型-Phong光照模型
• Phong光照模型的综合表述:由物体表面上 一点P反射到视点的光强I为环境光的反射 光强Ie、理想漫反射光强Id、和镜面反射光 Is的总和。
I Ie Id Is
I a Ka I p [ Kd ( L N ) K s (V R)n ]
简单光照模型- 环境光例子
• 具有不同环境光反射系数的两个球
I a 1.0
Ka 0.4
Ka 0.8
简单光照模型-环境光
• 缺点:虽然不同的物体具有不同的亮度, 但是同一物体的表面的亮度是一个恒定 的值,没有明暗的自然过度。
简单光照模型
• 考虑引入点光源。
• 点光源:几何形状为一个点,位于空间中的某 个位置,向周围所有的方向上辐射等强度的光。 记其亮度为Ip
L S N S R
V
简单光照模型-镜面反射
• 镜面反射光特点
– 空间分布具有一定方向性 – 光强不仅取决于入射光和表面材料,还与观察方向
有关 – 具有与入射光相同的性质
N R L
P
镜面反射
简单光照模型-Phong光照模型
• 简单光照模型模拟物体表面对光的反射 作用,光源为点光源 • 反射作用分为
• 局部光照模型仅考虑了(1)
7.3.6 整体光照模型
• 例如:从视点观察到的物体A表 面的亮度来源于三方面的贡献: (1)光源直接照射到A的表面,然 后被反射到人眼中的光产生的。 (2)光源或其它物体的光经A物体 折射到人眼中的光产生的。 (3)物体B的表面将光反射到物体 A的表面,再经物体A的表面反射 到人眼中产生的。 • 局部光照模型仅考虑了(1)
(计算机图形学)建模与消隐
9.1.1 物体的几何信息和拓扑信息
几何信息:描述几何元素空间位置的信息。 拓扑信息:描述几何元素之间相互连接关系的信息。 描述一个物体不仅需要几何信息的描述而且需要拓扑信息的描述。 因为只有几何信息的描述,在表示上存在不惟一性。图9-1所示的5个 顶点,其几何信息已经确定,如果拓扑信息不同,则可产生图9-2和93所示的两种不同图形。
图9-5所示为立方体线框模型。
优点:可以产生任意方向视图,视图间保持正确的投影关系,常用 于绘制三视图或斜轴测图等。
缺点:所有棱边全部绘制出来,容易产生二义性,如图9-6所示
12
图9-5立方体线框模型
图9-6线框模型二义性
13
2.
表面模型(物体的皮肤)
表面模型(surface model)是利用物体的外表面来构造模 型,就如同在线框模型上蒙上了一层外皮,使物体具有了一层
图9-14 读入立方体的顶点表
22
4.读入立方体的面表 在程序中定义ReadFace()函数读入物体的面表,如图9-15
void CTestView::ReadFace() { //面的顶点数和面的顶点索引号 F[0].SetNum(4);F[0].vI[0]=4;F[0].vI[1]=5;F[0].vI[2]=6;F[0].vI[3]=7;//前面 F[1].SetNum(4);F[1].vI[0]=0;F[1].vI[1]=3;F[1].vI[2]=2;F[1].vI[3]=1;//后面 F[2].SetNum(4);F[2].vI[0]=0;F[2].vI[1]=4;F[2].vI[2]=7;F[2].vI[3]=3;//左面 F[3].SetNum(4);F[3].vI[0]=1;F[3].vI[1]=2;F[3].vI[2]=6;F[3].vI[3]=5;//右面 F[4].SetNum(4);F[4].vI[0]=2;F[4].vI[1]=3;F[4].vI[2]=7;F[4].vI[3]=6;//顶面 F[5].SetNum(4);F[5].vI[0]=0;F[5].vI[1]=1;F[5].vI[2]=5;F[5].vI[3]=4;//底面 }
计算机图形学中的光照模型与材质渲染算法实现
计算机图形学中的光照模型与材质渲染算法实现导言:计算机图形学是研究如何使用计算机生成、处理和呈现图像的学科。
在计算机图形学中,一个重要的问题是如何实现真实感的图像渲染。
光照模型和材质渲染算法是实现真实感图像的关键。
本文将介绍光照模型和材质渲染算法的基本概念和实现方法。
一、光照模型光照模型用于模拟光照在物体表面的影响,通过模拟光照效果,使渲染出的图像更加逼真。
常用的光照模型有冯氏光照模型、Lambertian光照模型和Blinn-Phong光照模型等。
1.冯氏光照模型冯氏光照模型是最早提出的光照模型之一,它将光照效果分为三个部分:环境光、漫反射光和镜面光。
环境光是由周围环境中的间接光照射到物体表面而产生的,它对物体的光照效果起到整体性的作用。
漫反射光是指物体表面吸收了光能量后,在不同方向上均匀地散射出去的光能,它决定了物体表面的亮度。
镜面光是指物体表面光能量经过反射后聚焦到一定方向上的光能,它决定了物体表面的高光效果。
2. Lambertian光照模型Lambertian光照模型是一种简化的光照模型,它只考虑物体的漫反射光。
根据兰伯特定律,漫反射光的亮度与光源和物体表面法线的夹角成正比。
3. Blinn-Phong光照模型Blinn-Phong光照模型是一种介于冯氏光照模型和Lambertian光照模型之间的模型。
它在计算镜面光时使用了一种近似的方法,使计算更加高效。
二、材质渲染算法材质渲染算法用于将光照模型应用到物体表面的材质上,从而实现真实感的渲染效果。
常用的材质渲染算法有平均法向量法、纹理映射法和高光纹理法等。
1.平均法向量法平均法向量法是一种常用的材质渲染算法。
它通过对网格模型上的顶点法向量进行插值计算,获得表面上每个点的法向量。
然后再使用光照模型计算光照效果。
2.纹理映射法纹理映射法是一种常用的材质渲染算法。
它将一个二维图像(纹理)映射到物体表面上,在渲染过程中,根据纹理映射的坐标值,获取纹理上对应点的颜色值,再结合光照模型计算光照效果。
消隐
深度缓存算法 ( Z—Buffer算法)
Z—Buffer ---- 用于存放与屏幕上像素点对应的物体上点的深度值。
y
投影面
z
视线方向
视点位置
x
屏幕像素
F — Buffer
Z—Buffer
Z-buffer算法的步骤如下:
⑴ 初始化ZB和CB,使得ZB(i, j)=Zmax,CB(i, j)=背景色。其中, i=1, 2, …, m,j=1, 2, …, n。 ⑵ 对多边形,计算它在点(i, j)处的深度值zi, j。 ⑶ 若zijZB(i, j),则ZB(i, j)=zij,CB(i, j)=多边形的颜色。 ⑷ 对每个多边形重复⑵、⑶两步。最后,在CB中存放的就是 消隐后的图形。
背面剔除算法
• 背面剔除算法
法向向量N
<90°
cos N V
视线向量V
可见
>90°
法向向量N
<90°
可见
不可见
法向向量N
8.1 消隐基础
8.1.1 消隐的分类
• 线消隐 (Hidden-line)-景物空间消隐 对象:线框模型
•面消隐 (Hidden-surface)-图像空间消隐
对象:填色图
问题: ① 对于线画图形会出现多义性,要增强图形的真实感必须进 行消隐处理。 ②对于光栅扫描着色的面图形则会导致图形错误。
基本概念
二.消隐涉及的算法:
• 排序 • 连贯性
是指所考察的物体或画面的性质在局部区域内保持不变的一种 倾向。
例如:
棱边的连贯性是指:棱边的可见性在它与其他棱边相交时才发生
变换;
for (场景中的每一个物体)
{ 将该物体与场景中的其它物体进行比较,确定其表面的 可见部分;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
变换方程的系数,使(ai, bi, ci)指向物体外部的。那么: 假设式(8.1)所定义的凸多面体在以视点为顶点的视图四棱 锥内,视点与第i个面上一点连线的方向为(li, mi, ni)。那么自隐 藏面的判断方法是: (ai, bi, ci)⋅(li, mi, ni)>0 任意两个自隐藏面的交线,为自隐藏线。(自隐藏线应该用虚 线输出)。
。
消隐算法分类
根据实现时所在的坐标系或空间: 根据实现时所在的坐标系或空间: 图像空间算法,在屏幕坐标系中实现, 1、图像空间算法,在屏幕坐标系中实现,(一旦达到屏幕 分辨率,就不再计算下去) 分辨率,就不再计算下去) 计算量=屏幕像素点N*物体个数n 计算量=屏幕像素点N*物体个数n N*物体个数 2 、 物体空间算法(也称对象空间算法): 把 n 个对像素中的 物体空间算法( 也称对象空间算法) 每一个与其它( 每一个与其它(n-1)个对象比较,消去不可见的对象: 个对象比较,消去不可见的对象: 计算量=n(n计算量=n(n-1) =n(n
Z—Buffer算法) Buffer算法 深度缓存算法 ( Z Buffer算法)
Z—Buffer Buffer ---用于存放与屏幕上像素点对应的物体上点的深度值。 用于存放与屏幕上像素点对应的物体上点的深度值。
投影面
y
z
视线方向
视点位置
x
屏幕像素
F — Buffer
Z—Buffer
Z-buffer算法的步骤如下: 算法的步骤如下: 算法的步骤如下
• 这个算法的关键在第⑵步,要尽快判断出哪些点落在一 个多边形内 ,并尽快求出一个点的深度值 。(下页)
优点: 算法简单,易于硬件实现。 • 缺点: 缺点:
(1):ZB和CB两个缓存数组占用的存储单元太多 ,需要有一 个较大容量的 Z—Buffer 。 (2):在每个多边形占据的每个像素处都要计算深度值,计算 量大; (3):在实现反走样、透明和半透明等效果方面困难(可以用 A-缓存器算法解决)。
Zi, j = —
j
axi + byi + d c
若 c = 0,则多边形Fk的法线方向与 Z 轴垂直, Fk在投影 面上的投影为一条直线,可不予考虑。
7.2.2 区间扫描线算法
• 在多边形填充算法中,活性边表的使用பைடு நூலகம்得了节省运
行空间的效果。用同样的思想改造Z-buffer算法:将 整个绘图区域分割成若干个小区域,然后一个区域一 个区域地显示,这样Z缓冲器的单元数只要等于一个区 域内像素的个数就可以了。如果将小区域取成屏幕上 的扫描线,就得到扫描线Z缓冲器算法。
•
将z缓冲器中个单元的初始值置为-1(规范视见体的最小n 值)。当要改变某个像素的颜色值时,首先检查当前多边形 的深度值是否大于该像素原来的深度值(保存在该像素所对 应的Z缓冲器的单元中),如果大于,说明当前多边形更靠近 观察点,用它的颜色替换像素原来的颜色;否则说明在当前 像素处,当前多边形被前面所绘制的多边形遮挡了,是不可 见的,像素的颜色值不改变。
7.2.3 深度排序算法(画家算法) 深度排序算法(画家算法) 由来:画家的作画顺序暗示出所画物体之间
的相互遮挡关系
算法基本思路:
1)先将场景中的物体按其距观察点的远近 进行排序,结果放在一张线性表中;
(线性表构造: 线性表构造: 距观察点远的称优先级低,放在表头; 距观察点远的称优先级低,放在表头;距观察点 近的 称优先级高,放在表尾。该表称为深度优先级表 深度优先级表) 称优先级高,放在表尾。该表称为深度优先级表)
7.1.1 消隐的分类
• 线消隐 (Hidden-line)——对象空间算法 对象:线框模型
•面消隐 (Hidden-surface)——图像空间算法 面消隐
对象:填色图
线框模型
填色图
•线消隐 是以场景中的物体为处理单元,将一个 线消隐
物体与其余的 k-1 个物体逐一比较,仅显示它可 见的表面以达到消隐的目的。 此类算法通常用于消除隐藏线 消除隐藏线。 消除隐藏线
•假定场景中有 k 个物体,平均每个物体的表面由 h 个多边形构成,其计算复杂度为 O((kh)2)。
算法描述如下: 算法描述如下:
for (场景中的每一个物体) { 将该物体与场景中的其它物体进行比较,确定其表面的 可见部分; 显示该物体表面的可见部分; } (示例如右图)
线消隐示例
7.1.2 凸多面体的隐藏线消隐
之后,将对象表面上不可见的点、线、面消去。执行这种功能 的算法,称为消隐算法。
例如: 例如:
基本概念
一.为什么要消隐 为什么要消隐 因为计算机图形处理的过程中,不会自动消去隐藏部分, 相反会将所有的线和面都显示出来。 问题:① 对于线画图形会出现多义性。 ② 要增强图形的真实感必须进行消隐处理。
对于光栅扫描着色的面图形则会导致图形错误。
1) 线段与多边形的任何边均不相交。处理方法比 较简单。 2) 线段与多边形相交。那么多边形的边把线段投 影的参数区间[0, 1]分割成若干子区间,每个 子区间对应一条子线段(如下图所示),进一步 判断各子线段的隐藏性 。
线段投影被分为若干子线段
• 把各个子线段与 所有需要比较的多 边形依次进行隐藏 性判别,记下各条 隐藏子线段的位置。 最后,对这些区间 进行求并集运算, 即可确定总的隐藏 子线段的位置,余 下的则是可见子线 段 (右图)
2)然后按照从表头到表尾的顺序逐个绘制 物体。
画家算法
关键:如何对场景中的物体按深度(远 近)排序,建立深度优先级表? 一种针对多边形的排序算法如下:
假定在规范化投影坐标系uvn中,投影方向是n 轴的负向,因而n坐标大距观察者近。记nmin(P) nmax(P)分别为多边形P的各个顶点n坐标的最小 值和最大值,算法步骤如下:
算法描述如下: 算法描述如下:
for (窗口内的每一个像素) {确定距观察点最近的物体,以该物体表面的颜色来显示像素;
}
面消隐示例
7.2.1 深度缓存 深度缓存(Z-buffer)算法 算法
•由来 由来: 由来 帧缓冲器 – 保存各像素颜色值(CB) z缓冲器 --保存各像素处物体深度值(ZB) z缓冲器中的单元与帧缓冲器中的单元一一对应 •思路 思路: 思路
Z-Buffer算法实现中的关键问题 Buffer算法实现中的关键问题 ①判断点( i, j )是否在多边形Fk在投影面上的投影内 解决办法:采用包含测试。 ②计算多边形Fk在点( i, j )处的深度值 Zi, 若多边形Fk的平面方程为: ax + by + cz + d = 0 若 c ≠ 0,则
可见子线段的确定
•面消隐是以窗口内的每个像素为处理单元, 面消隐
确定 在每一个像素处,场景中的物体哪一个距离观察点最 最 可见的) 从而用它的颜色来显示该像素。此类 近(可见的),从而用它的颜色来显示该像素 消除隐藏面。 算法通常用于消除隐藏面 消除隐藏面
•若显示区域中有 m×n 个像素,则其计算复杂度为 O(mnkh)。 •假定场景中有 k 个物体,平均每个物体的表面由 h 个多边形构成,其计算复杂度为 O((kh)2)。
⑴ 初始化ZB和CB,使得ZB(i, j)=Zmax,CB(i, j)=背景色。其中, i=1, 2, …, m,j=1, 2, …, n。 ⑵ 对多边形α,计算它在点(i, j)处的深度值zi, j。 ⑶ 若zij<ZB(i, j),则ZB(i, j)=zij,CB(i, j)=多边形α的颜色。 ⑷ 对每个多边形重复⑵、⑶两步。最后,在CB中存放的就是 消隐后的图形。
基本概念
一.消隐涉及的算法: 消隐涉及的算法: 消隐涉及的算法 排序 连贯性——是指所考察的物体或画面的性质在局部区域 指所考察的物体或画面的性质在局部区域 内保持不变的一种倾向。例如: 内保持不变的一种倾向 棱边的连贯性是指:棱边的可见性在它与其他棱边相交 棱边的可见性在它与其他棱边相交 时才发生变换; 时才发生变换 面的连贯性是指:如果面的一部分是可见的,则一般情 如果面的一部分是可见的, 如果面的一部分是可见的 况下整个面都是可见的。 况下整个面都是可见的 二
8.1.3 凹多面体的隐藏线消隐
• 凹多面体的隐藏线消除比较复杂。 • 假设凹多面体用它的表面多边形的集合表示 , 消除隐藏线的问题可归结为: 对于一条空间线段P 对于一条空间线段 1P2和一个多边形α,判 如果被遮挡, 断线段是否被多边形遮挡 。如果被遮挡,求出 隐藏部分
线段和多边形的关系有:
扫描线算法描述
for ( 各条扫描线 各条扫描线) {将帧缓冲器 将帧缓冲器I(x)置为背景色; 置为背景色; 将帧缓冲器 置为背景色 缓冲器的Z(x)置为最大值; 置为最大值; 将Z缓冲器的 缓冲器的 置为最大值 for (每个多边形) 每个多边形) 每个多边形 { 求出多边形在投影平面上的投影与当前扫描线的相交区间 for (该区间内的每个像素) 该区间内的每个像素) if ( 多边形在此处的 值小于 多边形在此处的Z值小于 值小于Z(x) ) { 置帧缓冲器 置帧缓冲器I(x)值为当前多边形颜色; 值为当前多边形颜色; 值为当前多边形颜色 缓冲器Z(x)值为多边形在此处的 值; } 值为多边形在此处的Z值 置Z缓冲器 缓冲器 值为多边形在此处的 } }
画家算法
在多边形面片数量很大时(而且没有循环 遮挡或贯穿的情况下),画家消隐算法最快。 本算法不能处理的情况: 多边形循环遮挡 多边形相互穿透 解决办法:分割成两个
在各种消隐算法中,下列那些论述是 正确的? (A,B,C,D )
A. 画家算法的基本思想是先将屏幕赋值为背景色, 然后在把物体各个面按其到视点距离远近排序; B. Z缓冲算法不仅需要帧缓冲区存放象素的亮度值, 还需要一个Z缓冲区存放每个象素的深度值; C. 扫描线算法首先按扫描行顺序处理一帧画面,在 由视点和扫描线所决定的扫描平面上解决消隐问题; D. 区域采样算法是利用图形的区域连贯性在连续的 区域上确定可见面及其颜色和亮度。