700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 计算机图形学笔记五:光栅化(消隐算法)和 前几节内容总结

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

时间:2021-01-11 22:00:28

相关推荐

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

消隐算法和前几节内容总结

1.消隐算法1.1画家算法(Painter’s Algorithm)1.2 Z-Buffer算法2.前几节内容总结

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.前几节内容总结

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

然后我们就可以得到这样一张图:

接着我们要对其进行着色(Shading)。

可见进行着色操作之后显得更加真实。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。