梳理从MVP变换到光栅化的过程

发布时间:2024年01月18日

1.梳理从MVP变换到光栅化的过程

相关博客:
1.MVP变换
2.Rasterization(光栅化)

1.1 View/Camera transformation


此例中相机初始位置为(0,0,5)【备注:详见主函数中输入的值】经过 M view M_{\text{view}} Mview?将相机移动到原点且相机方向朝向z轴负向,zNear与zFar均为负数
下图仅为示意图

1.2 Model Transformation



此例中将空间中三角形绕z轴旋转,每一次按键A则左旋10度,每一次按键D则右旋10度

1.3 Projection Transformation

Projection Transformation包含两种:
1.Orthographic projection(正交投影)

2.Perspective projection(透视投影)

MVP变换中的投影变换



我们这里用透视投影(Perspective Projection)
透视投影的过程需要将视锥(Frustum)的远处面zFar挤压到与zNear同大小,随后进行正交投影


下图仅为示意图


为什么要挤压?因为要进行透视投影,只有挤压后才能体现出近大远小(小就是因为被挤压了)
挤压过程中zNear平面不变,即近处画面不变,zFar中心点位置不变,zNear与zFar之间的所有物体均被挤压
如果是进行正交投影,则无需挤压,直接进行投影即可

1.4 Viewport Transformation

空间中的物体透视投影后,经过视口变换,将其投影缩放到与屏幕相适应的大小



左侧为透视投影结果,右侧为空间的俯视图


经过视口变换后的效果如下

1.5 Rasterization

如何用像素描述这个图像的投影?就是光栅化的意思,光栅化的本意是drawing onto the screen
三角形可以构成复杂图形,3D物体经过MVP变换到2D平面,随后通过光栅化进行渲染

利用三角形三边的三个向量叉积来判断像素中心点是否在三角形内,如果在三角形内,则对该像素进行采样(也就是所有屏幕中的像素中,属于图形内部的像素被选中),被采样的像素将进行上色


如果直接采样进行光栅化容易产生锯齿等走样问题


为了减轻锯齿问题,我们需要进行抗锯齿
需要的操作是光栅化之前进行模糊处理(滤波或者卷积操作),随后进行光栅化

文章来源:https://blog.csdn.net/weixin_48524215/article/details/135677209
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。