Skip to content

3D计算机图形学

计算机图形是使用计算机创建的图片和电影。

使用计算机描述图片有两种基本方法:

  • 光栅图形——用许多彩色小点来描述一幅图像。每个点被称为“像素”,是“图像元素”的缩写。如果这些点足够小且彼此足够靠近,人们就看不到单个的点,而是看到一幅“图像”。
  • 矢量图形——用数学方程式将对象描述为几何形状。通过称为“渲染”的过程,根据这些数学描述创建图像。渲染的结果是二维光栅图像。

计算机工具已经发展到可以创建和处理这两种类型的计算机图形。例如,Adobe PhotoShop是处理光栅图像的首选工具。但是,通过处理许多小色点来创建新图像对于物体随时间变化的运动图像来说并不有利。PhotoShop 非常适合创建单幅图像或“修饰”现有图像,但它并不擅长制作电影。

计算机生成图像 (CGI) 是利用计算机图形来创建或贡献艺术、印刷媒体、视频游戏、电影、电视节目、商业广告、视频和模拟器中的图像。一般人可能只在与视频游戏和电影相关的场合听说过 CGI 这个术语,但它却广泛应用于许多领域。

3D 计算机图形是使用几何数据的三维表示来执行计算和渲染 2D 图像的图形。这些教程将帮助您学习如何使用 3D 计算机图形技术创建 CGI。或者换句话说,这些教程将帮助您创建三维对象的矢量图形表示,然后将它们渲染为光栅图像。如果您可以创建在不到 1/30 秒的时间内渲染光栅图像的数据和算法,那么您就可以创建在观众观看时进行渲染的实时视频。大多数视频游戏都基于实时渲染。如果创建每个图像所需的时间超过 1/30 秒,您可以随时存储图像并实时播放它们。大多数电影 CGI 不是实时渲染的。

那么,如何将对象的矢量图形表示转换为光栅图像呢?这是一个复杂的过程,需要多个步骤。这些步骤多年来已被充分理解,并且必须按照明确定义的顺序执行。此操作序列称为“图形管线”。在计算机图形学的早期,“管线”是不可编程的。数据被输入管线并输出光栅图像。但如今的 GPU 允许程序员使用着色器程序控制管线的某些部分。着色器程序只是一组非常专业的指令,用于在管线处理的关键步骤中操作图形数据。着色器程序为程序员提供了惊人的灵活性和潜在的创造力,但代价是增加了复杂性。这些教程的目的是帮助您理解图形管线以及如何使用着色器程序操作图形数据。

图形管道

拓展

光栅图形

光栅图形(Raster Graphics),也称为位图图形,是一种通过像素矩阵来表示图像的方法。每个像素都包含颜色亮度 信息,这些像素按网格状排列共同组成完整的图像。

  • 像素(Pixel):是"图像元素"(Picture Element)的缩写,是光栅图像中最小的可寻址元素,

    • 每个像素存储颜色信息(如RGB值)
  • 分辨率(Resolution):指图像中包含的像素数量,通常表示为宽度×高度(如1920×1080)

    • 分辨率越高,图像细节越丰富
  • 色彩深度(Color Depth):每个像素可使用的颜色位数

    • 常见格式:
      • 1位:黑白(2种颜色)
      • 8位:灰度(256种灰度)
      • 24位:真彩色(约1670万种颜色)
      • 32位:真彩色+Alpha通道(透明度)

优缺点

  • 优点
    • 真实感强:能够表现复杂的颜色渐变和细节
    • 广泛支持:所有显示设备都基于光栅显示
    • 处理效率:硬件加速支持良好
    • 通用格式:JPEG、PNG、GIF等都是光栅格式
  • 缺点
    • 缩放失真:放大时出现像素化(马赛克效应)
    • 文件较大:高分辨率图像需要存储大量像素数据
    • 编辑限制:难以单独修改图像中的对象

对比矢量图形

特性光栅图形矢量图形
构成像素网格数学公式
缩放失真无损
文件大小与分辨率相关与复杂度相关
适用场景照片、复杂图像标志、图表、文字
常见格式JPEG, PNG, BMPSVG, AI, EPS

光栅化算法