解码3D世界到屏幕全过程
一、效果演示在讲解原理之前,首先看下以下一幅图片
相机拍摄模拟上图中,有两个信息:
1、有很多物体(如桌子、椅子、房间等),一个照相机(虚拟的)
2、右下角有个预览效果,这个图片,就是3D世界投影到屏幕的结果,可以看到相机不断调整角度,看到的东西在变化。
整个效果其实和我们生活中的现象是很符合的,想象一下我们平时拍照,就是这样的一个过程。所以,图形学3D世界的一切,其实是仿生现实世界的,且能虚拟很多现实不存在的角色(不是指那东西),例如二次元,动画动漫等等。
二、原理分析:
上述过程,在程序猿的世界里是如下一个过程:
过程坐标系:
局部坐标系:也叫建模坐标系,是物体本身为坐标原点,每个物体都有一个世界坐标系:在整个场景中,唯一决定的全局坐标系相机坐标系:特殊的局部坐标系,确定相机位姿的作用,决定了显示画面裁剪平面:裁剪掉相机视野以外的内容,第一张图相机上的白色线框所决定图像坐标系:图片的像素坐标系屏幕坐标系:显示器设备的显示坐标系
为了更清晰的描述以上内容,使用以下两个阶段来说明:
2.1、物体坐标系到相机视野的过程
如上图,一群美女聚焦在中间,在4号美女位置定义全局坐标系(世界坐标系),每个美女都可以自己摆动姿势(局部坐标系),而拍摄者就是相机坐标系,当拍摄者调整相机焦距等就是定义视景体空间,超出视线外的会裁剪掉。
2.2、从相机视野到屏幕坐标全过程
由前面的文章讲解过,每个角色(模型)本质上就是无数三角形的组合,我们称之为三角网格(不理解的可以阅读以前的文章)。
当视野确定后,所有数据都经过运算变成相机坐标系下的数据(裁剪平面到图片坐标系)。而每个三角形的处理过程,就如上图的光栅化阶段的过程。
先是gpu(显卡,就是平时买电脑时候的独立显卡)在顶点着色器中拿到三角形的三个顶点进行处理,然后到几何着色器中画成三角形,然后对每个三角形进行栅格化得到每个像素,就交给片元着色器进行处理然后指定该像素的颜色值,再进行一些列的后处理,最后显示在显示屏幕上(屏幕坐标系)。
三、总结:以上就是图形学3D世界到屏幕显示的全过程,以上过程进行了简化,其中还包含很多处理,比如矩阵运算、深度测试、模板测试、混合等等,感兴趣的自己在网上搜索相关的知识点学习。
更多内容请关注微信公众号“图形学算法”
页:
[1]