计算机图形学学习笔记(2)Rasterization

这一块根据我的个人理解大致分为5块内容。

1.屏幕像素点中心的坐标

在这里插入图片描述

某屏幕像素点(x,y),那么其中心坐标为(x+0.5,y+0.5)

2.判断某点是否在三角形里面

大致有两种种办法,可参考:判断一个点是否在三角形内部 - 知乎

但是最快的还是用叉积。

其思想本质是:叉积可以判断一个点在某条边的左侧或右侧,选好方向依次与三角形三条边对比即可确定是否在三角形内。

3.确定包围盒bounding box

直接用整个屏幕依次遍历所有像素点来绘制效率太低了,因此我们确定好一个包围盒,直接在包围盒里遍历像素点效率大大提高。包围盒取三角形三个顶点的最大最小的X和Y值。
确定好包围盒后,遍历此 bounding box 内的所有像素 。然后,使用像素中心的屏幕空间坐标来检查中心点是否在三角形内(即第一点提到的,用的是像素中心而非像素点来)。

4.Depth buffer(Z-Buffering)

这个用于判断物体的遮挡关系, 在3D环境中每个像素中会利用一组数据资料来定义像素在显示时的纵深度(即Z轴座标值)。Z Buffer所用的位数越高,则代表该显示卡所提供的物件纵深感也越精确。

为什么要有Z-Buffer,因为传统的画家算法难以判断出复杂的三维空间体的遮挡关系。

使用方法:(遍历的点包含颜色信息跟深度信息)在遍历像素点的时候绘制当前刚遍历到的颜色并将当前颜色对应的深度值与Z-Buffe中的深度值对比,如果当前深度值小于Z-Buffe中的深度值说明当前的颜色离摄像机更近,那么更新Z-Buffe的值为当前颜色对应深度值,并将像素点置为当前颜色。否则说明当前颜色比现在像素点的颜色离摄像机远,那么像素点颜色不变、Z-Buffe中的深度值也不变。

5.光栅化时做的优化工作:主要体现在抗锯齿

这快老师讲的比较浅,我也就其在课堂上讲的进行总结,具体的要看数字图像处理课程。可参考:图形学基础 | 光栅化、深度测试与抗锯齿_油炸汽水的博客-CSDN博客  还有【GAMES101-现代计算机图形学入门】06 光栅化(深度测试与抗锯齿) - 知乎

猜你喜欢

转载自blog.csdn.net/qq_42987967/article/details/120522837
今日推荐