GAMES101 现代计算机图形学入门(五)(六)

主要讲的是三角形的光栅化

光栅化是什么意思呢,就是说前面已经讲到一些基础的变换,还有一些三维物体如何在屏幕上呈现的问题

  • Viewing transformation
    • View(视图)/Camera transformation
    • Projection(投影) transformation
      • Orthographic(正交) projection
      • Perspective(透视) projection

透视投影要转换成正交投影

image-20210418225053553

我们需要定义宽高比、垂直可视角度

MVP变换做完了后,所有的正交投影都被转换到了-1到1的立方体内,如果是透视投影的话,也可以先将透视投影转换为正交投影,然后再转换到-1到1的立方体内。

我们知道了这个-1到1的立方体,该把这个立方体画到哪儿呢?当然是画到屏幕上。

屏幕由像素点构成,是离散的,二维的。

计算机生成图像中,最基本的二维元素是三角形,对其的离散化操作就是生成图像的重点。

平时经常提到的Raster在德语中就是屏幕的意思,那Rasterize光栅化,就是将物体画在屏幕上的意思。

image-20210418230557230

与z轴即深度无大关系,就是将这个-1到1的平方映射到屏幕的宽高比中

image-20210418230853419

现在我们得到了一个二维的场景的照片了,然后我们要做的就是将这个多边形打碎,告诉我每一个像素应该是什么样的,这样才能将屏幕上的图像绘制的最好。

简单介绍下不同的光栅显示设备

  • 示波器

  • Cathode Ray Tube CRT 阴极射线管的设备

    他们通过一种扫描的方式来绘制图像,一行一行的绘制图像(隔行扫描)

  • frame buffer:memory for a raster display 内存中的一块区域映射到屏幕上

  • flat panle displays 现在用的都是这种平板显示设备

  • LCD(liquid crystal display) pixel: 光线通过光栅后,通过液晶扭曲将光的方向给扭曲了

  • LED Array Display Light emmitting diode array 发光二极管

Rasterization:Drawing to Raster Displays

  • 三角形是最最基础的多边形

  • 任何多边形都可以拆成三角形

  • 三角形的内部一定是平面的

  • 三角的内外的定义是很明确的

  • 根据三角形中的点和顶点的位置,三角形内部的点都是可以渐变的,都可以做插值。

image-20210418232307639

把三角形变成像素,光栅化中的最重要的一部分,就是判断一个像素点和三角形的关系。

最简单的一个方法,就是通过采样的方法来做光栅化。

什么是采样,有一种简单的理解就是,给你一个连续函数,然后我在不同的地方,问这个地方函数的值是多少,采样其实就是将一个函数离散化的过程。我们这里提到的采样,就是利用像素的中心对屏幕空间进行采样。我们需要某一个函数,在不同的像素空间上他的值是多少。

image-20210418232931114image-20210418232948023

我们需要知道的就是,这个点是否在三角形内

image-20210418233046773

回忆一下,我们可以用向量的叉乘来判断一个点是否在三角形内。

边界问题是可以自己定义的,当然在一些图形学api中,有着严格定义的,被称作top-left rule。

image-20210418233523242

难道要为了判断一个三角形遍历所有的像素点? 显然没有必要,我们可以用bounding box找到这个三角形的最大约束,减少不必要的运算。

image-20210418235420117

只是单纯的采样,我们可以看到图中的这样的锯齿,这样就是采样率不够高,就会发生走样的现象,这是光栅化图形学中要去克服的问题。

反走样和深度缓冲

Artifacts :图形学中对于一切不爽的东西就这么称呼

采样产生各种各样的问题,比如说锯齿,摩尔纹,wagon wheel illusion(马车车轮错觉)

image-20210419111856480 image-20210419135253798 image-20210419135347391

对原来的图像做一个模糊,再进行采样图像会很不错

但是如果采样后再做模糊,那会更模糊

正弦波和余弦波有不同的频率,傅里叶级数展开,傅里叶变换

频率变化越高越需要快速的采样

同样的一个采样方法我们去采样两个函数,结果我们没有办法区分它们,这样就是走样。

image-20210419141243040 image-20210419141258220

滤波就是去掉一些频率信息,可以将滤波视为做卷积也可以视为做平均

image-20210419142816018

时域上的卷积可以视为在频域上做乘积,频域上的卷积可以视为时域上的乘积

image-20210419145829069

看图就能理解,采样就是重复原始信号的频谱

为什么会有走样的现象呢,就是引起不同频谱的重叠

image-20210419150406191

image-20210419150541513

采样率增加或者做反走样

什么是反走样?

image-20210419150618587 image-20210419150836325 image-20210419170710844