【译】GAMES101-现代计算机图形学入门:Lec01 计算机图形学概述

170 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 N 天,点击查看活动详情


大家好,我是曹骏。因为本人对计算机图形学、WebGPU等非常感兴趣,因此会陆续发布闫令琪博士的《GAMES101:现代计算机图形学入门》课程译文,希望能帮助到更多的同学理解课程,爱上图形学这一浪漫的学科。

我先给出课程的链接:

GAMES101-现代计算机图形学入门(一):计算机图形学概述

1 什么是计算机图形学?What is Computer Graphics?

  • 计算机图形学:利用计算机合成与操作视觉信息 The use of computers to synthesize and manipulate visual information

2 为什么学习计算机图形学 Why study Computer Graphics?

2.1 应用 Applications

  • 游戏 Video Games(写实、风格化渲染,看画面亮不亮可以体现全局光照效果)

  • 电影 Movies(特效是图形学比较简单的应用,一些仿真效果往往很难实现,阿凡达的面部捕捉具有里程碑意义)

  • 动画 Animation(疯狂动物城中对毛发的模拟)

  • 设计 Design(CAD、在虚拟环境中预览视觉效果:汽车、家居)

  • 可视化 Visualization(科学、工程、医学、新闻图表)

  • 虚拟现实 Virtual Reality

  • 增强现实 Augmented Reality

  • 数字绘画 Digital Illustration(Photoshop)

  • 模拟 Simulation(精确的物理模拟仿真:尘土、黑洞对光线的影响)

  • 图形用户界面 Graphical User Interfaces(GUI)

  • 字体 Typography(运用了点阵和矢量,The Quick Brown Fox Jumps Over The Lazy Dog用尽了26个英文字母经常被拿来测试字体)

2.2 学习会遇到的挑战 Fundamental intellectual challenges

  • 创造并与现实的虚拟世界互动 Creates and interacts with realistic virtual world

  • 需要理解各种物理世界的各个方面 Requires understanding of all aspects of physical world

  • 新的计算方法、显示方法、科技进步 New computing methods, displays, technologies

2.3 技术挑战 Technical Challenges

  • (透视)投影、曲线、曲面的数学知识 Math of (perspective) projections, curves, surfaces

  • 光线和阴影的物理学 Physics of lighting and shading

  • 在三维中表现/操作形状 Representing / operating shapes in 3D

  • 动画/模拟 Animation / simulation

  • 本课程不包括硬件编程教学 3D graphics software programming and hardware

忘记以上原因——计算机图形学就是好!
Forget about the previous reasons——Computer Graphics is AWESOME!

3 课程主题 Course Topics

3.1 光栅化 Rasterization

  • 将几何图元(3D 三角形/多边形)投影到屏幕上
    Project geometry primitives (3D triangles/polygons) onto screen
  • 将投影图元分解为片段(像素)
    Break projected primitives into fragments (pixels)
  • 目前游戏的黄金标准(实时应用)
    Gold standards in Video Games (Real-time Applications)

3.2 曲线和网格 Curves and meshes

  • 如何在计算机图形学中表示几何图形(曲面、表面细分时保持拓扑结构)
    How to represent geometry in Computer Graphics

3.3 光线追踪 Ray Tracing

  • 从相机出发向每个像素发射射线(计算交点和阴影;继续反射光线直到击中光源)
    shoot rays from the camera through each pixel(Calculate intersection and shading; Continue to bounce the rays till they hit light sources)

  • 动画/电影的黄金标准(离线应用)目前已经有了实时光线追踪的算法
    Gold standard in Animations/Movies (Offline Applaction)

3.4 动画/模拟 Animation/Simulation

  • 关键帧动画 Key frame Animation

  • 质量弹簧系统 Mass-spring System

3.5 GAMES101不包括 GAMES101 is NOT about

  • 不包括如何使用 OpenGL/DirectX/Vulkan 等API

  • 不包括着色器的语法 The syntax of Shaders

  • 不包括建模与游戏开发 3D modeling using Maya / 3DS MAX / Blender, or VR / game development using Unity / Unreal Engine

  • 不包括计算机视觉、深度学习 Computer Vision / Deep Learning topics, e.g. XYZ-GAN

我们学的是图形学,不是图形学API!
We learn Graphics, not Graphics APIs!

3.6 计算机图形学与计算机视觉的关系

  • 个人理解 Personal Uderstanding
    计算机图形学是从三维模型生成图像(渲染)或三维空间中的模拟(模拟);
    计算机视觉是通过图像语义分割进行建模或依赖深度学习由图像生成其他图像

  • 各个学科、领域之间边界越来越模糊 No clear boundaries

4 参考 References

  • 推荐虎书,第三版就可以
    Steve Marschner and Peter Shirley, "Fundamentals of Computer Graphics", 3rd or later edition.

5 作业 Assignments

  • 大部分程序作业会提供框架和虚拟机映像 Mostly programming tasks with provided code skeletons and virtual machine image

  • 每周一般不超过20行代码 usually no more than 20 lines of code per week

  • 使用C++语言

6 使用集成开发环境 Use An IDE!

  • IDE: 集成开发环境 Integrated Development Environment
  • 帮助你解析整个项目并提供有关成员函数的语法/用法等的提示  Helps you parse a entire project and gives hints on syntax / usages of member functions, etc.
  • 推荐的IDE
    • Visual Studio (Windows only) / Visual Studio Code (cross platform)
    • Qt Creator (personal)
  • 不推荐的IDE Not Recommended IDEs (for C++ programming)
    • CLion, Eclipse
    • Sublime Text, Vi / Vim, Emacs (not even IDEs)