计算机图形学入门06:视口变换

在前面的内容中,在MVP变换(模型变换,视图变换,投影变换)完后,所有的物体位置都变换到了**[-1, 1]³** 的标准立方体里,下一步要把物体绘制到**屏幕(Screen)**上。

1.什么是屏幕?

对于图形学来说把屏幕抽象的认为是一个二维数组 ,数组中的每一个元素是一个像素(Pixel) ,屏幕是一个典型的光栅(Raster)成像设备 。**光栅化(Rasterize)**是指把东西画在屏幕上的过程。

像素(Pixel)

在屏幕上排列的最小单位,在本文中,像素可以简单理解为一块统一颜色的小方块,颜色有红、绿、蓝混合而成。现实中,屏幕的大小用分辨率表示,例如一个屏幕的分辨率为1920x1080,那么它就有1920x1080个像素排列在屏幕上。

屏幕空间

相当于在屏幕上建立一个坐标系,如上图。任何屏幕空间的像素点都可以用**(x,y)** 来表示,其中x,y都是整数。

假设x为width,y为height,那么像素的索引是从**(0,0)** 到**(width-1,height-1)** 。像素(x,y)的中心点是**(x+0.5,y+0.5)** 。而整个屏幕覆盖范围是**(0,0)** 到**(width,height)**。

2.视口变换

现在已经知道了什么是屏幕,那么要将**[-1, 1]³** 的标准立方体变换到从**[0, width]x[0, height]** 的屏幕空间上,这个叫做视口(Viewport)变换 。这里先不考虑z轴,那么就是将**[-1,1]²** 的标准立方体变换到屏幕上**。**如下图所示:

可以发现,视口变换需要经过两个步骤,首先进行缩放变换 ,将标准立方体x 轴和y 轴长度分别缩放到width和height,由于-1到1的距离是2,所以缩放长度分别为width/2和height/2。然后是进行平移变换,将标准立方体的中点从原点平移到屏幕中心(width/2,height/2)。

可得出视口变换矩阵如下:

3.下一步是?

视口变换完成后,物体到屏幕的所有变换都完成了,那么我们要把这些结果信息真正的变成图,也就是说变成屏幕上的像素,这里就是下一章要讲的光栅化

相关推荐
BoBoZz196 小时前
CellTypeSource
python·vtk·图形渲染·图形处理
Renderbus瑞云渲染农场10 小时前
什么叫云渲染?云渲染是干嘛的?
3d·图形渲染·3dsmax
不会写DN1 天前
[特殊字符]开班会时由于太无聊,我开发了一个小游戏……
程序人生·信息可视化·职场和发展·交互·图形渲染·学习方法·高考
小一亿6 天前
【3ds Max动画】烟花:超级喷射粒子,荧光粒子效果
学习·3d·图形渲染·3dsmax·动画
Alaso_shuang10 天前
Raylib贴图
c语言·图形渲染·贴图·raylib库·c语言项目
3DVisionary11 天前
DIC技术在汽车风洞试验中的革新应用:流场与形变的全场测量
汽车·图形渲染·非接触测量·数字图像相关·汽车动力学·风洞试验·形变与应变
炫云云渲染15 天前
2025年效果图云渲染带来效率革命
图形渲染·效果图成本控制·效果图可控效率提升·云渲染效率革命·效果图精准化成本控制
还下着雨ZG23 天前
2 VTK的基本概念
图形渲染
魏无忌23 天前
BIM+GIS尝试
图形渲染·webgpu·bim引擎·bim+gis
Renderbus瑞云渲染农场24 天前
跨平台渲染不再难_瑞云渲染跨平台转移+克隆双功能上线,效率升级
3d·图形渲染