python计算机图形学_计算机图形学—— 隐藏线和隐藏面的消除(消隐算法)

计算机图形学中的消隐算法主要用于消除投影变换后的隐藏线和隐藏面,以生成真实感图形。本文介绍了消隐的基本概念,包括边界盒、后向面消除、基于窗口的子分算法、八叉树算法、Z缓冲器算法、扫描线Z缓冲器算法和优先级排序表算法等常见技术。这些算法通过不同的方法判断可见表面,提高图形的视觉效果。

wAAACwAAAAAAQABAEACAkQBADs=

一、概述

由于投影变换失去了深度信息,往往导致图形的二义性。要消除二义性,就必须在绘制时消除被遮挡的不可见的线或面,习惯上称作消除隐藏线和隐藏面(或可见线判定、可见面判定),或简称为消隐。经过消隐得到的投影图称为物体的真实感图形。

wAAACwAAAAAAQABAEACAkQBADs=

下面这个图就很好体现了这种二义性。

wAAACwAAAAAAQABAEACAkQBADs=

消隐后的效果图:

wAAACwAAAAAAQABAEACAkQBADs=

消隐算法的分类

wAAACwAAAAAAQABAEACAkQBADs=

所有隐藏面消隐算法必须确定:

在沿透视投影的投影中心或沿平行投影的投影方向看过去哪些边或面是可见的

wAAACwAAAAAAQABAEACAkQBADs=

两种基本算法

1、以构成图像的每一个像素为处理单元,对场景中的所有表面,确定相对于观察点是可见的表面,用该表面的颜色填充该像素.

适于面消隐。

wAAACwAAAAAAQABAEACAkQBADs=

算法步骤:

a.在和投影点到像素连线相交的表面中,找到离观察点最近的表面;

b.用该表面上交点处的颜色填充该像素;

2、以三维场景中的物体对象为处理单元,在所有对象之间进行比较,除去完全不可见的物体和物体上不可见的部分.适于面消隐也适于线消隐。

wAAACwAAAAAAQABAEACAkQBADs=

算法步骤:

a.判定场景中的所有可见表面;

b.用可见表面的颜色填充相应的像素以构成图形;

提醒注意

1.假定构成物体的面不能相互贯穿,也不能有循环遮挡的情况。

2.假定投影平面是oxy平面,投影方向为z轴的负方向。

wAAACwAAAAAAQABAEACAkQBADs=

如果构成物体的面不满足该假定,可以把它们剖分成互不贯穿和不循环遮挡的情况。

例如,用图b中的虚线便可把原来循环遮挡的三个平面,分割成不存在循环遮挡的四个面。

二、可见面判断的有效技术

wAAACwAAAAAAQABAEACAkQBADs=

1、边界盒

指能够包含该物体的一个几何形状(如矩形/圆/长方体等),该形状有较简单的边界。

wAAACwAAAAAAQABAEACAkQBADs=

wAAACwAAAAAAQABAEACAkQBADs=

边界盒技术用于判断两条直线是否相交。

wAAACwAAAAAAQABAEACAkQBADs=

进一步简化判断

wAAACwAAAAAAQABAEACAkQBADs=

2、后向面消除(Back-face Removal)

思路:把显然不可见的面去掉,减少消隐过程中的直线求交数目

wAAACwAAAAAAQABAEACAkQBADs=

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值