GAMES101-现代计算机图形学入门-闫令琪——Lecture 05 Rasterization 1 (Triangles)
目录
GAMES101-现代计算机图形学入门-闫令琪——Lecture 05 Rasterization 1 (Triangles)Finishing up ViewingRasterization 光栅化Perspective ProjectionCanonical Cube to ScreenDifferent raster displays 不同的光栅化设备Rasterizing a triangle为什么用三角形如何用像素表示三角形(判断像素中心点与三角形位置关系)函数:inside(tri, x, y)Evaluating inside(tri, x, y)Checking All Pixels on the Screen? **Bounding Box**Faster Real LCD Screen PixelsAliasing (Jaggies) Occlusions and VisibilityFinishing up Viewing
Viewport transformationRasterization 光栅化
在做完观测矩阵以后,所有的物体都已经在(-1,1)的三次方这么一个空间中,下一步就是画在屏幕里,这一步就叫光栅化。几何数据经过一系列变换后最终转换为像素,从而呈现在显示设备上的过程。
Perspective Projection
如何定义一个视锥(frustum)?–定义长宽比(r/t)和垂直可视角度(fovY),可以用这两个推出水平可视角度
Canonical Cube to Screen
What is a screen?– An array of pixels(由像素组成的二维数组)
– Size of the array: resolution
– A typical kind of raster display(屏幕是一个经典的光栅化设备)Raster == screen in German
– Rasterize == drawing onto the screen
光栅化的过程就是把东西画在屏幕上的过程Pixel (FYI,short for “picture element”)
– For now: A pixel is a little square with uniform color
– Color is a mixture of (red, green, blue)Defining the screen space
– 屏幕的左下角是原点,向右是x,向上是y
– 像素的坐标是写成 (x, y)的。x和y都是整数
– 如果一个屏幕的分辨率是 (width, height),那么所有的像素可以用 (0, 0)到 (width - 1, height - 1)来表示。
– 像素实际的中心是 (x+0.5, y+0.5)
– 整个屏幕空间可以覆盖 (0, 0)到 (width, height)范围我们现在要做的实际上就是从 [-1,1]的三次方到 (0, 0)×(width, height)这么一个屏幕空间的变换
– 先不管z
– 把xy从[-1,1]2变到[0,width] × [0,height]
– 变换矩阵如下:(视口变换)
现在需要的是把图像打散变成像素,也就是光栅化。
Different raster displays 不同的光栅化设备
Oscilloscope 示波器阴极射线管 Cathode Ray Tube
隔行扫描(视频压缩也用过)但是高速运动会发生画面撕裂现在显示的图像就是内存中的一块区域
屏幕分辨率超过视网膜:视网膜屏幕显示器现在一般是LCD液晶显示器
液晶现实的原理:通过竖直的光栅再通过液晶的扭曲,把光渐渐的扭过来,再从水平光栅出去。Electrophoretic (Electronic Ink) Display
Kindle
刷新率很低
好处是看起来自然
Rasterizing a triangle
为什么用三角形
用三角形表示面:
最简单的多边形任何其他的多边形都可以被拆成三角形三角形内部一定是平面的三角形内外定义十分清楚,也可以用叉积判断给定三角形三个顶点的属性,三角形内部的属性也可以用渐变得到(插值)
如何用像素表示三角形(判断像素中心点与三角形位置关系)
采样方法(Sampling a Function)– 采样就是把函数离散化的过程
– 就是相当于某一个函数在不同像素中心的值是多少
函数:inside(tri, x, y)
判断像素是否在三角形内Evaluating inside(tri, x, y)
如果在边界上,可以自己定义(比较牛的设定是落在上边和左边算三角形内,落在下边和右边不算三角形内)Checking All Pixels on the Screen?Bounding Box
实际上三角形只是很小的区域,没必要遍历所有像素。
可以做一个包围盒(Axis - Aligned Bounding Box)简称AABB
Faster
Real LCD Screen Pixels
Aliasing (Jaggies)
走样体现在:锯齿
原因:像素本身有一定体积
解决:抗锯齿、反走样