一、光栅化Rasterization
屏幕:像素的阵列(array),阵列的大小称为分辨率(resolution)。屏幕是一个典型的光栅成像设备(Raster Display)。
像素Pixel:Pixel是"Picture Element"的缩写,目前的理解上,像素是指一个带有特定颜色的小方块。颜色为RGB(red,green,blue)的混合。像素的索引/坐标 表示为(x, y)形式,x和y都是整型数。像素的坐标从(0, 0)到(width - 1, height - 1)。像素的中心在(x + 0.5, y + 0.5)上。屏幕覆盖宽度为(0, 0)到(width, height)。
光栅化:
把东西“画”在屏幕上的过程。确切来说,将标准立方体映射到屏幕的过程(Canomical Cube to Screen)。
标准立方体到屏幕:
无视z轴,将xy的[-1, 1]变换到[0, width] x [0, height]。上面是转换矩阵。
二、光栅显示设备科普
示波器Oscilloscope:
阴极射线管Cathode Ray Tube(CRT):
电子流打在屏幕上成像,通过偏移电子流来改变图像。
平板显示设备:
LCD,OLED,视网膜屏。。。
LCD(Liquid Crystal Display):
液晶显示,利用液晶的原理达到显示效果,液晶可以根据不同的排布,影响光的偏振方向。
LED(Light Emitting Diode) Array Display:
发光二极管阵列显示。
Electrophoretic(Electronic Ink) Display:
电子墨水屏,只能显示黑白。通过控制电子的位置来显示,刷新率很低。但是有接近纸质书的显示效果。
帧缓存:
光栅显示设备的内存。
三、基本的原始形状——三角形(Triangles)
三角形的特性:
三角形是最基础的多边形,任何多边形都能拆成三角形。
三角形一定是在一个平面上的,三角形的内外是定义清晰的。三角形内部的点很好进行插值。
四、采样方法(Sampling)
采样:
给你一个连续函数,然后在不同的地方获取函数值就叫做采样。专业一点的说法,采样就是将一个连续函数离散化的过程。
采样在图形学中是一个核心概念,
2D三角形采样步骤:
现在有一个三角形,我们要判断像素中心是否在三角形内。
在计算机中,我们定义一个Inside函数。
采样也就是确定函数在不同像素中心的返回值是1还是0(当然,1表示有颜色,0表示没颜色)。
Inside计算过程:
回顾一下学习叉乘时的笔记,当Q处于三个向量的同一侧时,Q点在三个向量围成的三角形的内部。
当像素中心恰好处在线上时,要么不做处理,要么特殊处理。在这里我们不做处理。但是有些图形API中会有自己的规矩。
包围盒Bounding Box:
当我们对一个元素(比如三角形)做光栅化处理时,使用包围盒(Bounding Box)可以有效避免我们检查整个屏幕的所有像素。
通过P0,P1,P2的坐标可以很简单的得到包围盒区域。不在包围盒区域内的像素不参与采样检查。
Incremental Triangle Traversal:
一种优化方法,在每一行只找这个三角形的最左和最右,这样一个像素也不会多考虑。很适用于处理很窄并且旋转过的三角形。
课程的最后
这幅图上有锯齿(Jaggies),也就是当我们采样率不高时发生了走样(Aliasing)
下节课的内容为抗锯齿/反走样。