计算机图形学第5讲图形消隐
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4
基本概念
消隐的对象
三维物体 三维体的表示主要采用边界(多边形)表示
消隐结果
与观察物体有关,也与视点位置和方向有关
线框图
消隐图
真实感图形
5
基本概念
消隐分类 消除隐藏线:消除不可见线——线框表示物体 消除隐藏面:确定可见面(消除不可见面)—— 表面表示物体
6
基本概念
}
16
基本概念
面消隐算法分类(续)
场景中的物体为处理单元——物体上的面是否最近 for (场景中的每一个物体) 物体空间-object-space
{ 将其与场景中的其它物体比较,确定其表面的可见部分; 显示该物体表面的可见部分;
}
17
提高消隐算法效率的常用方法
主要技术
1. 利用连贯性(Spatial Coherence)
主要包围盒
长方体 正方体 球
19
提高消隐算法效率的常用方法
作用—避免盲目求交
两个空间多边形A、B在投影平面上的投影分别为A’,B’ , 因为A’ 、B’ 的矩形包围盒不相交,则A’、B’ 不相交,无 须进行遮挡测试
一般情况下,判断两物体是否遮挡时,前一种情况大量存 在,避免了物体间的复杂相交测试
平移变换,将观察参考点移到世界坐标系的原点处
1 0 0 0
T1
0 0
1 0
0 0 1 0
x0 y0 z0 1
旋转变换,将u,v,n分别对应到x,y,z
即绕x轴旋转 角,绕y轴旋转 角,绕z轴旋转 角
1
T2
0 0
0
0
cos sin
世界坐标系
用户用来定义图形的坐标系,主要用于计算机图形场 景中所有图形对象的空间定位和定义。
观察坐标系
可以在世界坐标系的任何位置、任何方向定义,通常以
视点的位置为原点,通过用户指定的一个向上的观察向量
来定义整个坐标系统。
vn
y
u
P0(x0,y0,z0)
x
z
7
基本概念
将世界坐标系中的三个坐标轴转换为与观察坐标系的三个 坐标轴对应重合的逆变换
将其它段及相应的j压栈; } } } if(Ei段不为空)
} } } if(Ei段不为空)
分治策略
显示Ei ;
显示Ei ;
} }
}
15
基本概念
面消隐算法分类
投影窗口内的像素为处理单元——确定最近点
for (窗口内的每一个像素) {
图像空间-image-space
确定距视点最近的物体,以该物体表面的颜色来显示像素
求每条边上的遮挡 While(栈不空){
<Ei ,j0> = 栈顶;
for(Fj的每一条边Ei) 将二元组< Ei ,j>压入堆栈
for(j!= j0的每一个面Fj) {
While(栈不空){ <Ei ,j0> = 栈顶; for(j!= j0的每一个面Fj) { if ( Ei 被Fj 全部遮挡) {将Ei清空; break; }
相邻物体的属性之间有一定的连贯性,其属性值通常是平 缓过渡的,如颜色值、空间位置关系等
包括:
物体连贯性 面的连贯性 区域连贯性 扫描线连贯性 深度连贯性
18
提高消隐算法效率的常用方法
包围盒技术
定义:一个形体的包围盒指的是包围它的简单形体 两个条件
包围盒充分紧密包围着形体 对其的测试比较简单
0
0
sin cos
0
0 cos
0
0
0 sin
1
0
0 sin
10
0 cos
00
0 cos
Байду номын сангаас
0 sin
0 0
1
0
sin cos
0 0
0 0 0 0 1 0 0 1
8
消除隐藏线
体=n个面 基本运算
13
(5)以上所求得的各交点将线段的投影分成若干段, 求出第一段中点。
(6)若第一段中点在平面的投影内,则相应的段被遮 挡,否则不被遮挡;其他段的遮挡关系可依次交替 取值进行判断。
P0 P1 P2 P3 P4 P5
14
消除隐藏线
HiddenLineRemove() { 坐标变换; for(对每个面Fj)
图形消隐
地球科学与信息物理学院GIS中心
1
图形消隐
基本概念 提高消隐算法效率的常用方法 画家算法 Z缓冲器算法 扫描线Z缓冲器算法 OpenGL相关函数
2
基本概念
问题
投影变换失去了深度信息,往往导致图形的二义性及失去 遮挡关系
失去遮挡关系
3
基本概念
要消除二义性和保持遮挡关系,就必须在绘 制(投影)时消除被遮挡的不可见的线或面, 习惯上称作 消除隐藏线(Hidden Line Removal) 消除隐藏面(Hidden Surface Removal) 简称为消隐
线线间求交运算 线面间求交运算
9
消除隐藏线
平面对直线段的遮挡判断算法
思路:先做简单判断,将计算量较大的判断留到后面做
10
消除隐藏线
(1)若线段的两端点及视点在给定平面的同侧,线段 不被给定平面遮挡
(2)若线段的投影与平面投影的包围盒无交,线段不 被给定平面遮挡,转7
11
20
提高消隐算法效率的常用方法
背面剔除
外法向:规定每个多边形的外法向都是指向物体外部的
前向面:若多边形的外法向与投影方向(观察方向)的夹角为钝 角,称为前向面
后向面:若多边形的外法向与投影方向(观察方向)的夹角为锐 角,称为后向面(背面)
投影方向
夹角为180-u
消除隐藏线
(3)求直线与相应无穷平面的交。若无交点,转4。否则, 交点在线段内部或外部。若交点在线段内部,交点将 线段分成两段,与视点同侧的一段不被遮挡,另一段 在视点异侧,转4再判;若交点在线段外部,转4。
P0
12
(4)求所剩线段的投影与平面边界投影的所有交点。 若无交点,转5
P0 P1 P2 P3 P4 P5
if ( Ei 被Fj 全部遮挡) {将Ei清空; break; }
简单的剔除
if ( Ei 被Fj 部分遮挡) {
从Ei中将被遮挡的部分裁掉;
if ( Ei 被Fj 部分遮挡) { 从Ei中将被遮挡的部分裁掉; if(Ei被分成若干段) { 取其中的一段作为当前Ei 段;
if(Ei被分成若干段) { 取其中的一段作为当前Ei 段; 将其它段及相应的j压栈;
基本概念
消隐的对象
三维物体 三维体的表示主要采用边界(多边形)表示
消隐结果
与观察物体有关,也与视点位置和方向有关
线框图
消隐图
真实感图形
5
基本概念
消隐分类 消除隐藏线:消除不可见线——线框表示物体 消除隐藏面:确定可见面(消除不可见面)—— 表面表示物体
6
基本概念
}
16
基本概念
面消隐算法分类(续)
场景中的物体为处理单元——物体上的面是否最近 for (场景中的每一个物体) 物体空间-object-space
{ 将其与场景中的其它物体比较,确定其表面的可见部分; 显示该物体表面的可见部分;
}
17
提高消隐算法效率的常用方法
主要技术
1. 利用连贯性(Spatial Coherence)
主要包围盒
长方体 正方体 球
19
提高消隐算法效率的常用方法
作用—避免盲目求交
两个空间多边形A、B在投影平面上的投影分别为A’,B’ , 因为A’ 、B’ 的矩形包围盒不相交,则A’、B’ 不相交,无 须进行遮挡测试
一般情况下,判断两物体是否遮挡时,前一种情况大量存 在,避免了物体间的复杂相交测试
平移变换,将观察参考点移到世界坐标系的原点处
1 0 0 0
T1
0 0
1 0
0 0 1 0
x0 y0 z0 1
旋转变换,将u,v,n分别对应到x,y,z
即绕x轴旋转 角,绕y轴旋转 角,绕z轴旋转 角
1
T2
0 0
0
0
cos sin
世界坐标系
用户用来定义图形的坐标系,主要用于计算机图形场 景中所有图形对象的空间定位和定义。
观察坐标系
可以在世界坐标系的任何位置、任何方向定义,通常以
视点的位置为原点,通过用户指定的一个向上的观察向量
来定义整个坐标系统。
vn
y
u
P0(x0,y0,z0)
x
z
7
基本概念
将世界坐标系中的三个坐标轴转换为与观察坐标系的三个 坐标轴对应重合的逆变换
将其它段及相应的j压栈; } } } if(Ei段不为空)
} } } if(Ei段不为空)
分治策略
显示Ei ;
显示Ei ;
} }
}
15
基本概念
面消隐算法分类
投影窗口内的像素为处理单元——确定最近点
for (窗口内的每一个像素) {
图像空间-image-space
确定距视点最近的物体,以该物体表面的颜色来显示像素
求每条边上的遮挡 While(栈不空){
<Ei ,j0> = 栈顶;
for(Fj的每一条边Ei) 将二元组< Ei ,j>压入堆栈
for(j!= j0的每一个面Fj) {
While(栈不空){ <Ei ,j0> = 栈顶; for(j!= j0的每一个面Fj) { if ( Ei 被Fj 全部遮挡) {将Ei清空; break; }
相邻物体的属性之间有一定的连贯性,其属性值通常是平 缓过渡的,如颜色值、空间位置关系等
包括:
物体连贯性 面的连贯性 区域连贯性 扫描线连贯性 深度连贯性
18
提高消隐算法效率的常用方法
包围盒技术
定义:一个形体的包围盒指的是包围它的简单形体 两个条件
包围盒充分紧密包围着形体 对其的测试比较简单
0
0
sin cos
0
0 cos
0
0
0 sin
1
0
0 sin
10
0 cos
00
0 cos
Байду номын сангаас
0 sin
0 0
1
0
sin cos
0 0
0 0 0 0 1 0 0 1
8
消除隐藏线
体=n个面 基本运算
13
(5)以上所求得的各交点将线段的投影分成若干段, 求出第一段中点。
(6)若第一段中点在平面的投影内,则相应的段被遮 挡,否则不被遮挡;其他段的遮挡关系可依次交替 取值进行判断。
P0 P1 P2 P3 P4 P5
14
消除隐藏线
HiddenLineRemove() { 坐标变换; for(对每个面Fj)
图形消隐
地球科学与信息物理学院GIS中心
1
图形消隐
基本概念 提高消隐算法效率的常用方法 画家算法 Z缓冲器算法 扫描线Z缓冲器算法 OpenGL相关函数
2
基本概念
问题
投影变换失去了深度信息,往往导致图形的二义性及失去 遮挡关系
失去遮挡关系
3
基本概念
要消除二义性和保持遮挡关系,就必须在绘 制(投影)时消除被遮挡的不可见的线或面, 习惯上称作 消除隐藏线(Hidden Line Removal) 消除隐藏面(Hidden Surface Removal) 简称为消隐
线线间求交运算 线面间求交运算
9
消除隐藏线
平面对直线段的遮挡判断算法
思路:先做简单判断,将计算量较大的判断留到后面做
10
消除隐藏线
(1)若线段的两端点及视点在给定平面的同侧,线段 不被给定平面遮挡
(2)若线段的投影与平面投影的包围盒无交,线段不 被给定平面遮挡,转7
11
20
提高消隐算法效率的常用方法
背面剔除
外法向:规定每个多边形的外法向都是指向物体外部的
前向面:若多边形的外法向与投影方向(观察方向)的夹角为钝 角,称为前向面
后向面:若多边形的外法向与投影方向(观察方向)的夹角为锐 角,称为后向面(背面)
投影方向
夹角为180-u
消除隐藏线
(3)求直线与相应无穷平面的交。若无交点,转4。否则, 交点在线段内部或外部。若交点在线段内部,交点将 线段分成两段,与视点同侧的一段不被遮挡,另一段 在视点异侧,转4再判;若交点在线段外部,转4。
P0
12
(4)求所剩线段的投影与平面边界投影的所有交点。 若无交点,转5
P0 P1 P2 P3 P4 P5
if ( Ei 被Fj 全部遮挡) {将Ei清空; break; }
简单的剔除
if ( Ei 被Fj 部分遮挡) {
从Ei中将被遮挡的部分裁掉;
if ( Ei 被Fj 部分遮挡) { 从Ei中将被遮挡的部分裁掉; if(Ei被分成若干段) { 取其中的一段作为当前Ei 段;
if(Ei被分成若干段) { 取其中的一段作为当前Ei 段; 将其它段及相应的j压栈;