电影行业由打算机主导,而不仅仅是科幻和动画。
在拍摄《爱尔兰人》时,马丁·斯科塞斯利用打算机殊效让演员罗伯特·德尼罗、乔·佩西和阿尔·帕西诺变年轻。

NSDT工具推举: Three.js AI纹理开拓包 - YOLO合成数据天生器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开拓包 - 3D模型在线减面 - STL模型在线切割

当你意识到第一部采取打算机天生图像的故事片是尤尔·伯连纳和詹姆斯·布洛林主演的《西部天下》时,你会以为有点猖獗。
那是 1973 年,50 多年前的事了!

本日,我们拥有 Meta Quest 3 和 Apple Vision Pro 等设备,它们将数字内容与你的物理空间领悟在一起。

3D图形学新手教程

有了这统统,很明显,3D 打算机图形已经成为我们日常生活中不可或缺的组成部分。
但是,打算机图形是如何创建的呢?

在本文中,我想简要概述一下打算机如何天生我们在屏幕上看到的图像。
这并不是对 CG 所涉及的所有硬件和软件流程的深入技能剖析,而是对初学者的更随意的先容。

1、CG管线

该过程常日从艺术家或设计师利用 3D 建模软件开始,例如 Maya、Cinema4D 或 Blender,仅举几例。

艺术家常日从一个大略的形状开始,例如一个盒子或一个球体,然后利用不同的工具来修正这个几何图形。
下图显示了利用免费开源软件 Blender 创建的猴头模型。

Blender 中的猴头模型

如果我们仔细检讨模型,我们可以看到它是由一组通过大略几何图形连接在一起的点组成的。
这种连接点的构造称为网格。

Blender 中猴头模型的编辑视图

每个单独的点称为顶点
顶点是空间中的点,具有坐标 x、y 和 z,这些坐标决定了它在 3D 天下中的位置。

因此,网格由顶点组成,顶点由坐标值组成。
但是,我们如何将三个数值转换为屏幕上的某个内容?图形管道是将数据从数学表示转换为屏幕上某个内容的一系列阶段。

实质上,所有 3D 工具都只是数据。
数据可以存在于 3D 空间中,但是,我们的屏幕不是 3D 的。
我们须要通过一系列阶段获取 3D 空间中的顶点,以便将它们转换为 2D 空间。

让我们从第一阶段开始:顶点着色器。

2、顶点着色器

假设我们有一个大略的立方体。
这个立方体几何体定义为 8 个顶点的列表。

表示为顶点列表的立方体

顶点着色器首先将这些顶点从一个相对付其自身原点的空间转换为一个新空间,在这个新空间中,所有东西都与相机的位置和方向干系。

末了,我们利用透视投影将顶点从 3D 坐标系移到 2D 平面。
投影通过根据工具与相机的间隔缩放工具的坐标来创建深度错觉。
这仿照了工具在阔别不雅观察者时看起来变小的情形。

立方体的透视投影

现在我们的顶点已经转换到 2D 空间,现在是第二阶段:图元组装。

3、图元组装

一旦顶点转换完毕,就到了图元组装的韶光。

在此阶段,顶点通过几何图元连接。
我们可以选择利用线、点或三角形。
大多数当代图形硬件都经由优化,可以高效处理三角形,这便是我们常日选择它们而不是线和点的缘故原由。

立方体的原始组装

原始组装为下一步即光栅化奠定了根本。

4、光栅化

现在,我们有了由投影到 2D 屏幕上的 3 维顶点组成的几何图形。

光栅化步骤确定哪些像素位于三角形内。
它将形状分解为小片段或像素。

三角形光栅化

光栅化不仅确定哪些像素位于形状内,而且还通过丢弃不可见或被遮挡的三角形来提高性能。
这称为剔除。

剔除确定哪些三角形背对相机、在相机视野之外或只是被另一个物体隐蔽。
在这种情形下,三角形将被丢弃,GPU(图形处理单元)上的打算负载将减少。

5、片段着色器

管道中的下一个阶段称为片段着色器。

光栅化后,三角形被分解为像素片段。
然后,这些单独的像素片段由片段着色器进行处理。

由片段着色器着色的光栅化器输出

在此步骤中,我们确定属于三角形的每个像素的颜色。
我们通过考虑工具的材质属性、纹理和场景中的光源来实现这一点。

利用所有这些信息,我们实行一些打算来确定片段的终极颜色。

6、帧缓冲区

末了,所有着色的片段都被复制到帧缓冲区,这基本上便是屏幕上显示的图像。

你可以将帧缓冲区视为画布,所有内容在显示在屏幕上之前都存储在个中。

这是图形管道中的末了一步。

7、末了的考虑

我们已经通过图形管线的不同阶段跟踪了顶点数据。
这是范例图形管道的一样平常概述。
请把稳,可能存在不同的管道,它们具有我们忽略的附加步骤。

在开始之前,我想提一下多年来图形管道的某些变革。

早期版本的图形库供应了“固定”管道。
这意味着该过程具有预定义的阶段和操作。
详细来说,便是顶点和片段着色器。
开拓职员对这些特定阶段的行为办法的掌握有限。

对付较旧的管道,我们只需定义顶点数据、材质数据和照明。
然后,我们将这些数据发送到 GPU,我们就会得到结果。
这对初学者来说更随意马虎,但险些没有修正和定制的空间。
例如,利用的照明模型无法变动。

在当代图形库中,“固定”管道已被弃用,取而代之的是“可编程”管道。
当代管道为渲染过程供应了更大的灵巧性和掌握力。
但是,你必须自己供应顶点和片段着色器的代码。
这意味着开拓职员拥有更多的掌握权,但对初学者来说却增加了一层难度。

着色器程序是用一种名为 GLSL 的 C 风格措辞编写的。
着色器程序在 GPU 上运行,这与程序在 CPU 上的运行办法不同。
CPU 按顺序实行任务,而 GPU 并行实行任务。

事实上,这一层是值得的!
我们可以利用这些新管道取得很好的成果。
还有一个发达发展的创意人士社区,他们不断推动这项技能的发展。

我希望这个简短的先容能让你清楚地理解创建打算机图形所需的过程,特殊是 3D 图形。
大概这个简短的先容会激起你的好奇心,让你可能会有动力去学习更多关于打算机图形的知识。

原文链接:3D图形学新手教程 - BimAnt