LOADING...

加载过慢请开启缓存(浏览器默认开启)

loading

计算机图形学④

2021/4/12

4.Resterization 1(Triangle) (三角形光栅化)

4.Resterization 1(Triangle) (三角形光栅化)

  • Different raster displays
  • Rasterizing a triangle

sometime people prefer:

vertical field-of-view (forY) and aspect ratio (assume symmetry i.e I=-r,b=-t)

即视锥定义需要长宽比和垂直角度

由可视角度和距离即可求屏幕大小

what‘s after MVP(MVP变换)

  • model transformation (placing object)
  • view transformation(placing object)
  • projection transformation(placing object)

canonical cube to screen!(像素是屏幕上规范的正方形)

这里可以暂时抽象认为像素是最小单位

像素被写作(x,y),都为整数,从(0,0)开始,蓝色方块坐标为(2,1)

像素的指数从(0,0)到(width-1,length-1)

像素中心在(x+0.5,y+0.5)

屏幕范围为(0,0)到(width,length)

  • transform in xy plane:

    image-20210412120419388

    视口变换

    (看不懂的滚回去看第三节!)

小知识:

  • 隔行扫描(先偷懒扫1357…第二次扫2468….)利用了人眼的视觉暂留,提高了扫描的效率

  • 超出人眼视网膜最大分辨率的屏幕被称为视网膜屏幕

  • LCD(液晶显示器)利用液晶影响光的极化

  • LED(发光二极管)利用阵列变成屏幕

  • 部分电子书设备(例如kindle)利用电子墨水瓶来控制墨水的朝向

triangle - Fudamental Shape Primitives(三角形是最基本的图形)

image-20210412125303069

  • 三角形是最基本的图形,所有图形能拆成三角形
  • 三角形一定是平面的,有清晰严格的内外定义区分
  • 只需要确定三个点,就可以三角形内部取一个点,控制它到三个点的距离得到一个渐变的过程

a simple approach:sampling(采样)

这里的采样是指利用像素中心对屏幕进行采样,得到每个像素的像素中心是否在图形的内

                                       sample if each pixel center is inside triangle

这里我们定义inside(t,x,y)

{if((x,y)在三角形t内) return 1;else return 0;}

rasterization==sample a 2d indicator function

所以,光栅化则是对2d屏幕进行采样

for (int x=0;x<xmax;++x)

for (int y=0;x<tmax;++t)

       image[x] [y]=inside(tri,x+0.5,y+0.5);


白色区域不可能碰到三角形,固不考虑,只考虑三角形的包围盒(bounding box)


初稿完成于2021.4.12 !这里是分割线!