1.计算机图形学概述

1.计算机图形学概述


1.1 概述


1.2 什么是计算机图形学

计算机图形学(Computer Graphics):使用计算机合成Synthesize和处理Manipulate视觉信息。

定义中有两个关键动作:

  • 合成视觉信息:根据场景中的几何形体、材质、光照和相机等信息,生成最终图像。例如,将游戏场景渲染到屏幕上。
  • 处理视觉信息:对已有的视觉内容进行操作。例如,数字绘画中的曲线绘制、图形编辑,以及将数据转化为直观图形的可视化操作。

因此,计算机图形学不只是三维建模,也不只是把三维场景渲染成图片。后面介绍的光栅化、几何、光线传播、动画与模拟,都是这一大领域的重要组成部分。


1.3 为什么学习计算机图形学

应用领域

计算机图形学在很多领域都有应用,例如:

  • 电子游戏:实时渲染游戏画面,以及表现不同的美术风格。
  • 电影:将计算机生成的视觉效果与真实拍摄画面结合。
  • 动画:生成虚拟角色、毛发、服饰、特效,以及角色的运动。
  • 设计:计算机辅助设计(CAD)、产品建模和设计效果预览。
  • 可视化:将科学、工程、医学、统计等数据转换为可理解的视觉信息。
  • 虚拟现实(VR):让用户沉浸于计算机生成的虚拟环境。
  • 增强现实(AR):在现实环境中叠加计算机生成的虚拟内容。
  • 数字插画:在数字设备上绘制、编辑图像,处理笔触、曲线及透明度等。
  • 模拟:模拟布料、沙尘、粒子,甚至特定条件下的光线传播。
  • 图形用户界面(GUI):窗口、图标及交互界面的视觉呈现。
  • 字体排印(Typography):字形的几何表示、缩放和显示。

以上并不是相互独立的技术分类。例如,一部动画电影可能同时涉及建模、毛发渲染、布料模拟和电影特效。

基础性的智力挑战

学习图形学不仅是为了生成好看的图片,还需要理解和构建逼真的虚拟世界:

  • 理解物理世界:真实物体的形状、材质、光照和运动都有各自的规律。
  • 创造并与虚拟世界交互:除了生成静态图片,还要考虑场景及对象如何随时间变化。
  • 探索新的计算与显示方式:新的计算方法和显示技术,会带来不同的图形学问题。

技术挑战

要解决上述问题,需要综合使用多个学科的知识:

  • 数学:透视投影、曲线、曲面,以及三维空间中的变换。
  • 物理:光的传播、光照与着色。
  • 几何:三维形体的表示与操作。
  • 动画与模拟:描述物体随时间发生的变化。
  • 软硬件技术:三维图形软件编程及图形硬件相关知识。

1.3.4 小结


闫令琪大佬在列举完这些应用与挑战后,用一句话概括学习图形学的理由:Computer Graphics is AWESOME!——计算机图形学太酷了!


1.4 课程内容

光栅化(Rasterization)

光栅化的核心是:将几何图元投影到屏幕上,并确定投影后的图元覆盖哪些像素位置。

曲线与网格(Curves and Meshes)

主要研究:计算机应该如何表示、创建和处理几何形体?

课件展示了两个典型例子:

  • 贝塞尔曲线(Bézier Curve):使用控制点描述曲线,常见于路径、字体及曲线编辑等场景。
  • Catmull–Clark 细分(Subdivision):通过网格细分,由较粗糙的网格逐步构造更光滑的曲面形状。

光线追踪(Ray Tracing)

光线追踪从另一个角度思考如何生成图像:从相机出发,沿像素对应的方向发射光线,计算光线与场景的相交及光照情况。

动画与模拟(Animation / Simulation)

动画与模拟关注的是场景中的对象应该如何随时间变化。

  • 关键帧动画(Keyframe Animation):设定不同时间点的关键状态,形成连续的动画过程。
  • 质点弹簧系统(Mass-Spring System):使用质点和弹簧等简化模型,描述可变形物体的运动。

例如,布料下垂、受力后的变形和摆动,可以借助物理模型进行模拟。

不包含的内容

重点学习的是图形学原理,而不是某一种图形 API 的使用教程,因此不会专门教授 OpenGL、DirectX、Vulkan 的 API 用法,也不会把 Shader 的具体语法当作课程目标。

同样,课程不会教学使用 Maya、3ds Max、Blender 建模,也不以 Unity、Unreal Engine 的游戏开发操作为教学内容。

此外,计算机视觉、深度学习等也不属于本课程的讲授范围。

核心区别是:理解图形学原理,不等于学习某个具体工具的操作;反过来,会使用图形工具也不等于已经理解其背后的图形学原理。

计算机图形学与计算机视觉的区别

用 Model(模型) 和 Image(图像) 之间的关系来更好的理解:

数据关系 课程中的直观解释 典型问题
Model → Image 图形学中的渲染(Rendering) 已知三维场景,怎样生成一张图像?
Image → Model 计算机视觉(Computer Vision)中的一类问题 已知图片,怎样推断场景和物体的信息?
Model → Model 图形学中的建模、模拟等 怎样改变几何形状,或计算物体的运动?
Image → Image 图像处理等领域中的一类问题 怎样对已有图像进行分析或处理?

例如,已经知道游戏角色的模型、材质与灯光,计算屏幕画面,是典型的图形学渲染问题;从一张街景照片推断哪些区域是车辆和行人,则是计算机视觉中的一类问题。


1.5 课程安排

课程概况

  • 课时:共 22 讲,包括图形学概述、数学、光栅化、几何、光线追踪和动画模拟等内容。
  • 前置知识:微积分、线性代数、算法和数据结构;信号处理、数值分析、大学物理(光学)有帮助,但不是必须条件。
  • 作业:官方最终课程信息列出 8 次小作业与 1 次大作业,以编程实践为主,并提供代码框架。
  • 编程语言:课程小作业主要使用 C++。

参考资料


1.6 总结

核心问题 本讲要记住的内容
计算机图形学研究什么? 使用计算机合成和处理视觉信息。
为什么学习图形学? 既有游戏、电影、设计等广泛应用,也涉及数学、物理、几何和软件工程等挑战。
四个主要领域是什么? 光栅化、几何表示、光线传播、动画与模拟。
光栅化和光线追踪有什么区别? 前者从几何图元投影及像素覆盖出发,后者从相机光线及其与场景的作用出发。
图形学是否等于 OpenGL 或 Unity? 不等于。OpenGL 是图形 API,Unity 是游戏引擎;本课程的目标是理解背后的图形学原理。
图形学与计算机视觉的关系是什么? 渲染常从模型生成图像;计算机视觉中的部分任务则从图像推断信息,但两个学科没有绝对边界。

计算机图形学不是某个 API,也不只是光栅化或光线追踪,而是一套理解和构建虚拟世界的基础知识体系。



转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 785293209@qq.com

赏

×

喜欢就点赞,疼爱就打赏