计算机图形学 第五章 图形裁剪、光栅化和消隐

本文深入探讨了计算机图形学中的关键算法,包括线段裁剪的区域编码方法,多边形裁剪原理,线段和多边形的光栅化过程,如Bresenham算法,以及凸多面体的消隐算法。此外,还介绍了Z缓存消隐算法的基本思想和光线投射算法,这些都是图形渲染中的重要技术。
摘要由CSDN通过智能技术生成


1 线段的裁剪 区域编码算法

要求:能对实例进行计算
在这里插入图片描述
裁剪计算步骤:

  1. 对线段两端点P1,P2分别进行区域编码,记为:
    C1(P1)=( a1, b1, c1, d1 )
    C2(P2)=( a2, b2, c2, d2 )
    其中ai, bi, ci, di取值域为1或0。(与顺序无关,以下为上下右左)

  2. if (a1=b1=c1=d1=a2=b2=c2=d2=0)则线段整体处于窗口内,不需要裁剪,计算结束。

  3. if [(a1 and a2) or (b1 and b2) or (c1 and c2) or (d1 and d2)] 则线段端点均处于窗口的同一侧,线段整体处于窗口外,不需要裁剪,计算结束。(四项中任一项等于1)

  4. 裁剪计算
    if (a1 or a2=1),求线段与窗口上边直线(y=top)的交点,设交点为P。
    比较y1和y2,若y2>y1,则P1与P组合为新线段,否则P与P2组合为新线段。返回1),重新进行裁剪计算。(取内部较小的)
    if(b1 or b2=1),求线段与窗口下边直线(y=bottom)的交点。
    if(c1 or c2=1),求线段与窗口右边直线(x=right)的交点。
    if(d1 or d2=1),求线段与窗口左边直线(x=left)的交点。
    产生交点后,去除窗口外部分得到新线段。然后立即回到第1步开始对新形成的线段进行再次裁剪。

2 多边形裁剪原理

将多边形的顶点按顺序排列,裁剪过程中重新生成的点的序列
裁剪结果就是新产生的顶点序列构成新多边形。

裁剪规则:
取出窗口的一个边界线。该边界线把平面分成两个部分:内侧、外侧。
起点不存,终点在内层存,有交点存交点
在这里插入图片描述

3 线段光栅化

Bresenhan算法
Bresenham算法增加了一个判别参数,实现了全整数计算,每步计算只包括一个正负判别和一个整数加法,比DDA算法效率更高,而且适合硬件实现。
在这里插入图片描述

4 多边形光栅化 扫描线填充算法

要求:能对实例进行计算

两张表EL(存边)、AEL(与扫描线关联的边)

计算步骤:
将全部边存储到ET表,清空AEL表。
计算多边形整体的最小y坐标ymin和最大y坐标ymax。(y下)
– 循环所有的扫描线,对第i条扫描线进行下面步骤。
– 检查AEL表,清除ymax<y的边。
– 对AEL表中的边,计算x = x +1/k。(前后的x)
– 检查ET表,将下端点y=扫描线y的边加到AEL表。
– AEL按x增加排序。
– 取出交点,进行合并。
– 合并后的交点,按顺序组合为线段,这些线段在多边形内。

合并规则:
如果重复点所属的两个边在扫描线的两侧,合并为一个。
如果重复点所属的两个边在扫描线的同侧,不合并。
将水平边看做是处于扫描线下侧的边。
以上合并规则保证了最终形成的交点数量必为偶数。
在这里插入图片描述

5 凸多面体消隐算法

要求:根据法线方向进行面元消除

设N为一个表面多边形的法线,V为面中心指向摄像机的向量,N和V均为单位向量。N、V夹角由下式计算
在这里插入图片描述
在这里插入图片描述
如果余弦值大于0,即此时面,是“朝向”摄像机的,为朝前面即可见面。
如果余弦值小于0,面“背向”摄像机,为朝后面,不可见。
对凸多面体上的各个面元,都可以根据向量点乘的符号来判断其可见性。

算法的意义是,可以很方便地判断出朝后面(即背面)。
无论是凸的还是非凸的多面体,背向摄像机的面都是不可见的。
对任意多面体,可以先将朝后面去除,再计算朝前面的互相遮挡关系。这样消隐计算的范围就小了很多。

6 Z缓存消隐算法

要求: 计算的条件,缓存的定义,计算流程

缓存:内存中的一段存储空间
Z缓存算法需要建立两个缓存区,颜色缓存和深度缓存,其大小都和屏幕(也可以是图像)大小相同。即屏幕上的每一个像素,在两个缓存中都有对应的存储单元,存储该像素的颜色和深度。
在这里插入图片描述
基本思想:栅化完成后,每个像素具有窗口坐标(x,y)和深度z。绘制时若当前点比已经绘制的点远(z值更大),则放弃不绘制;若近(z值更小)则绘制并将深度值存入Z缓存。

算法步骤:
(1)初始时,深度缓存所有单元均置为最大z值,帧缓存各单元均置为背景色。
(2)对场景中所有的面元进行循环。原则上,面元的次序是无关的,实际上还有要按物体一个一个的绘制。
(3)对一个面元中所有的像素进行循环。
取出一个像素点,其平面坐标为(x,y),深度值为z,颜色值为color。
若z>D(x,y),则D(x,y)=z,I(x,y)=color,否则不做处理。

7 光线投射算法(消隐)

要求:理解原理
从屏幕上每一个像素点出发,沿着视线(摄像机投射线)方向发射出一条光线。对场景中所有物体,计算与光线的交点,就是光线投射算法。

过程结束后,全部交点存储在数组T中,对T按距离顺序进行排序,最远的交点排在前面,相对较近的交点排在后面。
如果没有交点,则T = null,该像素的颜色为背景色。
如果T≠null,考虑到场景中存在透明的物体,那么应该按透明度规则进行混合运算
在这里插入图片描述


传送门

上一章:计算机图形学 第四章 图形变换
下一章:计算机图形学 第六章 曲线曲面建模技术

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值