[Games101] Lecture 05 Rasterization 1 (Triangles)

Rasterization 1 (Triangles)

从规范立方体映射到屏幕

  • 屏幕是像素构成的数组
  • 数组的大小:分辨率
  • 屏幕是一个典型的光栅成像设备
  • 暂时认为像素是成像的最小单位

屏幕空间的定义

  • 使用整数坐标描述像素
  • 像素范围在 ( 0 , 0 ) (0,0) (0,0) ( w i d t h − 1 , h e i g h t − 1 ) (width-1,height-1) (width1,height1) 范围内
  • 像素 ( x , y ) (x,y) (x,y) 的中心坐标在 ( x + 0.5 , y + 0.5 ) (x+0.5,y+0.5) (x+0.5,y+0.5)
  • 整个屏幕的坐标范围在 ( 0 , 0 ) (0,0) (0,0) ( w i d t h , h e i g h t ) (width,height) (width,height) 之间

视口变换:将三维空间的立方体映射到屏幕

  • Irrelevant to z z z
  • Transform in x y xy xy plane: [ − 1 , 1 ] 2 [-1, 1]^2 [1,1]2 to [ 0 , w i d t h ] × [ 0 , h e i g h t ] [0, width] \times [0, height] [0,width]×[0,height]

image-20220811152234740

  • 视口变换矩阵

M viewport  = ( w i d t h 2 0 0  width  2 0  height  2 0  height  2 0 0 1 0 0 0 0 1 ) M_{\text {viewport }}=\left(\begin{array}{cccc} \frac{w i d t h}{2} & 0 & 0 & \frac{\text { width }}{2} \\ 0 & \frac{\text { height }}{2} & 0 & \frac{\text { height }}{2} \\ 0 & 0 & 1 & 0 \\ 0 & 0 & 0 & 1 \end{array}\right) Mviewport = 2width00002 height 0000102 width 2 height 01

Triangles - Fundamental Shape Primitives

使用三角形作为基本形状的原因

  • 三角形是最基本的多边形
  • 任何其他多边形都能被拆分为三角形
  • 三角形的特有性质
    • 三角形保证其在同一屏幕内 (三点确定一个平面)
    • 通过向量叉积可以轻松定义三角形的内部和外部(见 Lecture 2)
    • 定义三角形顶点的属性可以轻松的在三角形内插值

Rasterization = Sampling A 2D Indicator Function

对三角形的光栅化的一个简单方式是对 2D 平面进行采样,采样的方式可以简单的通过函数描述如下

image-20220811153050430
for (int x = 0; x < xmax; ++x) 
 	for (int y = 0; y < ymax; ++y) 
 		image[x][y] = inside(tri, x + 0.5, y + 0.5);

采样结束以后,再点亮屏幕中 image[x][y] = 1 的点即可,点的实际坐标是 ( x + 0.5 , y + 0.5 ) (x+0.5, y+0.5) (x+0.5,y+0.5)

image-20220811153301093

注意,采样不仅可以在位置上,可以在时间上进行采样,视频就是在时间中采样的一种方式
image-20220811154346700

  • 加速采样的方法

    • 包围盒

    image-20220811153516740

    • 进行增量三角形遍历:适合又瘦又长的三角形

    image-20220811153503345

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值