Scratchapixel 的“3D 渲染基础”课程涵盖哪些内容?

更新时间

Scratchapixel 的“3D 渲染基础”(The Foundations of 3D Rendering)是一条面向初学者的完整学习路径,按“先动手出结果、再补理论”的顺序组织,覆盖从相机模型、光线追踪、几何求交、矩阵变换,到着色、光照、纹理,再到全局光照、路径追踪、体积渲染和加速结构。它适合零基础或想系统补齐渲染原理的人;但数学部分(如矩阵求逆、蒙特卡洛方法)被单独放在“计算机图形学数学”栏目,定位是查阅型参考,而不是入门起点,因此不建议从那里开始学。

课程的组织方式

根据网站首页的说明,这套课程刻意区别于多数教材:先让学习者看到可运行的结果,再回头解释背后的理论。首页列出的顺序大致是:

  1. 以光线追踪为例的 3D 图形学入门
  2. 需要准备什么、起点在哪
  3. 渲染一张 3D 场景图像
  4. 计算 3D 点的像素坐标
  5. 针孔相机模型
  6. 光栅化
  7. 透视与正交投影矩阵
  8. 光线追踪技术概览
  9. 用光线追踪生成相机光线
  10. 一个最小光线追踪器
  11. 光线追踪:渲染三角形
  12. 多边形网格入门
  13. 用矩阵变换物体
  14. 着色入门
  15. 着色器与 BRDF 入门
  16. BRDF、线性与曝光的创意探索
  17. 光照入门
  18. 纹理入门
  19. 加速结构入门
  20. 全局光照与路径追踪
  21. 体积渲染

这条主线的好处是每一步都对应一个可验证的小目标,例如“算出某个 3D 点的像素坐标”“用最小光线追踪器渲染出图像”“让光线与三角形求交”。

核心知识点拆解

相机模型与投影

课程从针孔相机模型讲起,解释相机如何把 3D 场景映射到 2D 图像,并进一步讲到透视投影矩阵和正交投影矩阵。配套的“放置相机:LookAt 函数”放在数学栏目中,用于理解相机朝向的计算。学完这部分,应能回答“一个 3D 点为什么会落在图像的某个像素上”。

光线追踪主线

这是课程的主干:先讲光线追踪的整体思路,再讲如何为每个像素生成相机光线,然后实现一个最小光线追踪器,接着处理光线与三角形的求交,扩展到多边形网格,最后引入加速结构来降低求交成本。这条线把“渲染一张图”拆成了可逐步实现的环节。

变换、着色与光照

矩阵变换部分讲如何用矩阵移动、旋转、缩放物体;着色部分从着色器和 BRDF 入手,说明材质如何决定光线与表面的交互;光照和纹理则分别处理光源与表面细节。首页还单列了一篇“BRDF、线性与曝光”的创意探索,偏向理解线性空间与曝光的关系。

进阶主题

全局光照与路径追踪、体积渲染属于主线后段的进阶内容,适合在掌握基础光线追踪之后学习。加速结构则直接服务于性能:当场景中的三角形数量变多时,需要空间结构来减少不必要的求交测试。

数学栏目怎么用

“计算机图形学数学”栏目明确说明自己不是起点,而是当其他课程提到相关概念时用来查阅的参考。内容包括几何、矩阵求逆的高斯-乔丹法、插值、LookAt 函数、着色数学、蒙特卡洛方法的数学基础与实践、傅里叶变换入门。合理的使用方式是:在主线课程遇到某个数学工具时,再跳到对应页面补课,而不是先通读数学栏目。

其他相关栏目

首页还列出几个独立栏目,可作为主线的补充:

栏目 内容
计算机图形学精粹 黑体辐射等不属于大类的专题
几何方法 图形学中定义形状的方法,如贝塞尔曲线与曲面
数字成像 图像读写、文件格式、色彩空间、色彩管理与基础图像处理
程序化生成虚拟世界 值噪声、Perlin 噪声、天空颜色模拟等自然现象的程序化仿真
工具 开发 3D 工具时有用的各种技术

其中“数字成像”下的“光、颜色与色彩空间入门”“数字图像:从文件到屏幕”“简单图像处理”适合想理解图像管线的人;“程序化生成”适合对噪声和自然现象仿真感兴趣的人。

学习路径建议

如果目标是系统入门 3D 渲染,可以按首页顺序从“以光线追踪为例的 3D 图形学入门”开始,一路做到“加速结构入门”,中途遇到数学概念再查数学栏目。如果目标只是理解某一块,例如相机投影或 BRDF,可以直接跳到对应章节,但需要接受课程默认你已具备前面环节的基础。首页还提到 Scratchapixel 图书项目正在推进,计划在 2026 年底前分享首批成果,可作为后续关注点。