什么是计算机图形学呢?首先声明,计算机图形学不是用Photoshop来P图,不是用电脑来画画,计算机图形学是计算机编程开发的一个领域
在了解什么是计算机图形学之前, 我们可以通过它的应用场景来初步认识,那么计算机图形学主要应用在哪些领域呢?
应用领域
游戏领域:3A大作
主要是渲染引擎开发和基于Unity、Unreal Engine5等游戏引擎上进行的游戏动画开发
电影领域:3D动画
3D动画电影全流程依赖计算机图形学,比如《阿凡达》的纳美族人,通过 CG 建模 + 绑定 + 渲染实现
工业领域:机械设计
主要代表是CAD等工业设计软件和Blender等三维建模软件,通过点线面等几何数据生成二维图形和三维模型
虚拟现实:数字孪生
涉及到数据实时的传输和图形、模型的实时渲染现实
地理信息系统
地理信息系统就是用可视化的方式表示现实世界的空间位置和属性信息
以上举例了几个计算机图形学的应用领域,当然,实际领域当然不止这些,还用很多领域,比如医疗行业,AI领域的视频图像生成等等~
计算机图形学
上述的举例都和炫酷的画面有关,我们可以推断计算机图形学一定是和渲染有关,但又不仅仅是这么简单
计算机图形学是通过对原始数据进行一系列的数学变换,然后在GPU进行渲染,最终在屏幕显示,并具备交互作用的科学
下面我们通过对原始数据,数学变换,硬件渲染,交互显示这四个维度进行拆解分析
原始数据
原始数据主要是描述场景的数据,主要包括几何形状(点、线、面)、材质属性、光源位置等,这种数据可以是通过3D建模软件导出的数据,也可以是传感器传输的数据,也可以是扫描设备测量的数据等等。数据格式可以是各种二进制数据,也可以是文本数据,如txt,csv等等~
数学变换
数据变换就是对原始数据进行坐标变换、投影变换、图形裁剪等内容。比如一个三维物体在屏幕中展示在我们的面前就是坐标变换的结果,由原来三维的坐标通过数学变换最终转换为二维的屏幕坐标,通过裁剪移除视图外的内容(如三维物体的背面)
GPU渲染
GPU渲染是对经过数学变换后的几何模型进行光栅化和着色,就是把几何数据转化为像素的过程,然后根据光照和材质计算每个像素的颜色值,还包括光线追踪等高级方法来提高图像的真实感
交互显示
将渲染结果输出到显示设备上,包括电脑显示器、VR头盔、投影仪等多种形式,还能进行旋转、缩放或平移等交互方式
原始数据的处理,数学变换,GPU渲染,交互显示这四个环节层层深入,形成计算机图形学的完美闭环~
怎么学习计算机图形学
那么我们应该怎么学习计算机图形学呢?根据B站大佬的视频《GAMES101: 现代计算机图形学入门(闫令琪)》,列出以下的大纲目录: 01. 计算机图形学概述
- 向量与线性代数
- 数学变换
- 光栅化
- 着色
- 几何
- 光线追踪
- 材质与外观
- 相机与透镜
- 光场、颜色与感知
- 动画与模拟
我也将会按照上述目录通过观看其视频和相关图形学的书籍,并结合自身的工作经历和具体的代码项目,在以后的推文中不断总结并输出自己的学习记录和心得体会,用通熟易懂的语言把课程的核心知识进行二次讲述和总结,感兴趣的朋友欢迎关注 [ 图形学爱好者Wu ] 这个公众号,我会持续更新~
图形API
计算机图形学不仅仅是一门理论的科学,更是一门实践的工程,经过无数前辈工程师的不断努力,已经形成了完备的图形学规范,实现了完善的图形学代码库和接口,大大提高了图形学的开发效率。现在主流的图形学API有三个:OpenGL、Vulkan、DirectX 12,主要编程语言是C++,后续将会详细介绍这些API的使用方法
也有Web版的API,比如WebGL
与图像处理的关系
图像处理并不属于图形学的内容,因为图形学是根据原始数据经过数学变换和GPU渲染才生成图形的,是"无中生有"的效果,但图像处理是分析和处理已经存在的图像,比如通过OpenCV库实现某张图片的灰度化、二值化、消除噪音等等~
总结
计算机图形学是通过对原始数据进行一系列的数学变换,然后在GPU进行渲染,最终在屏幕显示,并具备交互作用的科学和技术,OpenGL、Vulkan、DirectX 12是计算机图形学开发的重要API~
以上就是本文的内容,如果本文对你有帮助的话,欢迎点赞收藏哦~
如果有什么不足之处,欢迎多多批评指正~