Skip to content

rasterisation in Chinese

Zhou edited this page Apr 14, 2016 · 3 revisions

###栅格化
假设我们有一个如下面左图所示的“坐”三角形(“坐”的意思是平顶或平底),那么栅格化可以通过下面五步实现:

  1. 输入三个顶点a,b,和c。
  2. 将它们的[-1,1]区间的所谓NDC空间坐标映射到[0, image-width/height)区间的设备坐标。
  3. 在三个Y坐标里找到Y_min和Y_max。
  4. 为ab边(见上图)和ac边建立两个直线方程。
    我用的是两点式方程
  5. 利用上面两个方程,为Y_min和Y_max之间的每一个Y,算出一对X_min和X_max。

用这种方法,一个输入三角形就转换成了一把扫描线。或者反过来看,把这一把扫描线的X_min和X_max之间的部分涂黑,就得到了栅格化的三角形图形。特别的,如果输入的三角形是“站立”的,如下图所示,则可以利用Y_min和Y_max顶点之外的第三个顶点将“站立”三角形裁成两个“坐”三角形,而后用相同方法处理。

我还有最后一个没想太清楚的问题,就是如何处理“亚三角形”,即当一个三角形的三个顶点共线,或者它们挤在一起成为一个点,这条线或者这个点要不要画呢?在目前的程序里,这样的“亚三角形”被直接忽略。但我发现场景里那些非常纤细的物体会被画的特别难看,如下图所示(注意那个笔筒里的笔)。目前我不太清楚如果能更好的处理“亚三角形”效果会不会好一些?

返回“我们的图形管线”

返回“我们开始吧”
返回总目录

Clone this wiki locally