计算机图形学笔记五:光栅化(消隐算法)和 前几节内容总结

1.消隐算法

1.1画家算法(Painter’s Algorithm)

把要呈现的图像按照从远到近的顺序,将各层图绘制出来,近的就因为优先级高而覆盖远的多边形。由此可消隐。
在这里插入图片描述
先画远处的山,再画较近的草地,草地会覆盖掉一部分山,最后画最近的树木,树木会覆盖掉一部分草地和山。
在图形学中:先光栅化场景里远处的东西,将其呈现在屏幕上,然后再逐级将近处的东西光栅化在屏幕上,若新光栅化的与已经光栅化的物体若产生重叠,则新光栅化的会覆盖住已经光栅化的。

但是画家算法存在在很大的弊端,例如下图所示:
在这里插入图片描述
对于这三个三角形,无法判断出他们的深度关系,这是画家算法就不再适用了。

1.2 Z-Buffer算法

先将Z缓冲器中各单元的初始值置为最小值,当要改变某个象素的颜色值时,首先检查当前多边形的深度值是否大于该象素原来的深度值(保存在该象素所对应的Z缓冲器的单元中),如果大于原来的Z值,说明当前多边形更靠近观察点,用它的颜色替换原象素的颜色。
注:
相机是放在坐标原点指向 -z 轴(屏幕里面的),我们看到的z都是负的,因此
直接取Z的绝对值作为物体的深度

在这里插入图片描述
如上图,左图为最终渲染效果,右图为Depth / Z-buffer,用来存储每个像素点的深度值(z)。
在Z-Buffer图上,一个像素的深度值越大,距离摄像机就越远,颜色就越白;反之,一个像素的深度值越小,距离摄像机就越近,颜色就越黑。例如:RGB(0,0,0) = 黑

具体计算过程:
在这里插入图片描述
Step1:先把所有像素的深度值都初始化为无限大
Step2:前两个for循环:遍历任意一个三角形覆盖的任意一个像素,
Step3:如果这个深度小于之前深度缓存记录好的此像素的深度,则就替换为这个小深度。否则什么不改变深度值。
例如下图所示:
在这里插入图片描述
对于n个三角形而言,其时间复杂度为O(n)
其时间复杂度 = 三角形的个数 × 每个三角形覆盖的像素的数
注:

  • Z-BUFFER只记录所绘制图形的深度,和绘图的顺序没有关系
  • Z-Buffer处理不了透明物体;深度相同用(Z-fighting)解决。

至此,光珊化部分学习结束。

2.前几节内容总结

在这里插入图片描述

  1. 先对摄像机进行变换,移动摄像机位置到原点,并且朝向-Z方向,这一步是改变了所有物体的位置,使它们的相对位置不变。(左上到右上)
  2. 然后在相机的角度,对物体进行投影到屏幕上(坐下)
  3. 最后进行光栅化,将物体绘制在屏幕上(右下)

然后我们就可以得到这样一张图:
在这里插入图片描述
接着我们要对其进行着色(Shading)。
在这里插入图片描述
可见进行着色操作之后显得更加真实。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值