计算机图形学入门(二): 光栅化(三角形的离散化)

449 阅读1分钟

标准立方体到屏幕

什么是屏幕?

屏幕由一组像素组成, 像素是单色的小正方形, 如下图所示.

(像素英文叫做Pixel, 是picture element的简称)

20210428174151

我们可以用(x,y)来定位屏幕上的某一个像素, 其中x、y都是整数, 假设屏幕宽度有width个像素, 高度有height个像素.

  • 那么像素(x,y)的中心点为(x+0.5, y+0.5)

将标准立方体映射到屏幕, 其实就是进行一个缩放:

20210428175944

三角形-基本图元

在计算机图像学中, 复杂的图像或几何体都是有三角形组成的, 如下图所示:

20210428180523

为什么是三角形?

  1. 足够简单
  2. 保证是平面的
  3. 三角形有很好的方式来进行插值(重心插值)

三角形如何在屏幕中显示

20210428181024

一种简单的方式: 像素的中心点如果三角形内就上色.

20210428181332

20210428181358

光栅化的定义

所谓光栅化, 其实是这么个过程, 决定哪些像素需要进行着色.

20210428182543

遍历屏幕上的所有像素, 如果中心点在三角内, 则标记为1, 否则标记为0. (inside函数用来确定是否在三角形内, 返回1或0) (image是个二维数组, 用来存储这个信息)

如何判断一点是在三角形内?

20210428183433

光栅化时真的需要遍历屏幕上的所有像素吗?

当然不需要, 根据三角形的三个顶点p1,p2,p3, 就可以确定一个边界, 我们只需要遍历这个边界里的像素就可以了.

20210428184619

还可以再快一点, 如下图所示:

20210428185106