计算机图形:图元、片元、光栅化等基本概念
几种“点”的概念
-
顶点(vertex):图元(如线段、三角形、圆等几何图形)由顶点+边组成,由用户及其建立的模型确定.
-
图元(primitive):描述对象的几何要素的输出图元,称为几何图元,简称图元. 如点、直线段、圆、二次曲线、曲面等.
-
片元(fragment):光栅化过程的产物,光栅化将一个图元转变成二维图像,每个图像点都包含颜色、深度、纹理等数据,将该点和相关信息称为一个片元.
-
像素(pixel):最终呈现在屏幕上的点,包含RGBA值的图像最小单元.
生成顺序:顶点 -> 图元 -> 片元 -> 像素
光栅化
计算场景中多边形在屏幕上的投影位置,即确定它在屏幕上的投影区域覆盖了哪些像素,该过程称为光栅化. 光栅化是从裁剪后的对象生成片元的过程.
-
光栅化如何得到片元?
通过对屏幕上一片连续的投影区域进行离散采样. -
光栅化存在的问题.
多边形在屏幕上投影可能会将像素划分为2部分:一部分位于投影区域内, 另一部分位于投影区域外.
如何判定这部分像素归属(投影区域内or区域外)十分敏感. 如果处理不当,可能导致画面走样,如相邻多边形间的空洞、多边形边界锯齿,动画中多边形边界闪烁,细小多边形时隐时现等物体.
一个简单办法:将像素中心点作为采样点,如果像素中心位于投影区域内,则判定当前像素点为投影区域内的点;否则,判定为投影区域外的点. -
光栅化常用方法.
光栅化最常用方法是扫描线算法:按扫描线的顺序,确定各像素上场景的可见点并计算其显示的光亮度.
而扫描线,指屏幕上平行于x轴且相互间距为1个像素的一系列直线,如果取每个像素中心为整数网格点,则每条扫描线y=I, I=0,1,2,...,n分别通过屏幕一行像素的中心.