找回密码
 立即注册
查看: 317|回复: 0

解码3D世界到屏幕全过程

[复制链接]
发表于 2022-6-16 15:07 | 显示全部楼层 |阅读模式
一、效果演示      
在讲解原理之前,首先看下以下一幅图片

相机拍摄模拟上图中,有两个信息:
1、有很多物体(如桌子、椅子、房间等),一个照相机(虚拟的)
2、右下角有个预览效果,这个图片,就是3D世界投影到屏幕的结果,可以看到相机不断调整角度,看到的东西在变化。

整个效果其实和我们生活中的现象是很符合的,想象一下我们平时拍照,就是这样的一个过程。所以,图形学3D世界的一切,其实是仿生现实世界的,且能虚拟很多现实不存在的角色(不是指那东西),例如二次元,动画动漫等等。
二、原理分析:

上述过程,在程序猿的世界里是如下一个过程:


过程坐标系:
局部坐标系:也叫建模坐标系,是物体本身为坐标原点,每个物体都有一个世界坐标系:在整个场景中,唯一决定的全局坐标系相机坐标系:特殊的局部坐标系,确定相机位姿的作用,决定了显示画面裁剪平面:裁剪掉相机视野以外的内容,第一张图相机上的白色线框所决定图像坐标系:图片的像素坐标系屏幕坐标系:显示器设备的显示坐标系
为了更清晰的描述以上内容,使用以下两个阶段来说明:
2.1、物体坐标系到相机视野的过程



如上图,一群美女聚焦在中间,在4号美女位置定义全局坐标系(世界坐标系),每个美女都可以自己摆动姿势(局部坐标系),而拍摄者就是相机坐标系,当拍摄者调整相机焦距等就是定义视景体空间,超出视线外的会裁剪掉。

2.2、从相机视野到屏幕坐标全过程


由前面的文章讲解过,每个角色(模型)本质上就是无数三角形的组合,我们称之为三角网格(不理解的可以阅读以前的文章)。
当视野确定后,所有数据都经过运算变成相机坐标系下的数据(裁剪平面到图片坐标系)。而每个三角形的处理过程,就如上图的光栅化阶段的过程。

先是gpu显卡,就是平时买电脑时候的独立显卡)在顶点着色器中拿到三角形的三个顶点进行处理,然后到几何着色器中画成三角形,然后对每个三角形进行栅格化得到每个像素,就交给片元着色器进行处理然后指定该像素的颜色值,再进行一些列的后处理,最后显示在显示屏幕上(屏幕坐标系)。
三、总结:以上就是图形学3D世界到屏幕显示的全过程,以上过程进行了简化,其中还包含很多处理,比如矩阵运算、深度测试、模板测试、混合等等,感兴趣的自己在网上搜索相关的知识点学习。


更多内容请关注微信公众号“图形学算法”

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-26 14:46 , Processed in 0.087521 second(s), 26 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表