CS自学指南-计算机图形学
GAMES101
课程简介
- 所属大学:UCSB
- 先修要求:线性代数,高等数学,C++
- 编程语言:C++
官方介绍:
本课程将全面而系统地介绍现代计算机图形学的四大组成部分:(1)光栅化成像,(2)几何表示,(3)光的传播理论,以及(4)动画与模拟。每个方面都会从基础原理出发讲解到实际应用,并介绍前沿的理论研究。通过本课程,你可以学习到计算机图形学背后的数学和物理知识,并锻炼实际的编程能力。 作为入门,本课程会尽可能的覆盖图形学的方方面面,把每一部分的基本概念都尽可能说清楚,让大家对计算机图形学有一个完整的、自上而下的全局把握。全局的理解很重要,学完本课程后,你会了解到图形学不等于 OpenGL,不等于光线追踪,而是一套生成整个虚拟世界的方法。从本课程的标题,大家还可以看到“现代”二字,也就是说,这门课所要给大家介绍的都是现代化的知识,也都是现代图形学工业界需要的图形学基础。
GAMES101 是国内相当有名的图形学公开课。和大家印象中满是数学和算法的图形学不同,这门课以十分生动的方式带我们进入了图形学这个领域的大门。
每个project代码量都不会很多,但是却都十分有趣。在做这些project的过程中,我们会实现简单的光栅化,并渲染一个简易的模型,我们还会实现光线追踪,以追求渲染更好的质量。每个project中还有选做的拓展作业,可以让我们渲染的模型具有更好的质量,更快的渲染速度。
喜欢玩游戏的同学应该对实时光线追踪有一定的了解,这门课的老师闫令琪就对这一技术有直接的推动作用。
跟着课程的视频,做完每一个project,相信你会和我一样对图形学,以及现代的渲染技术产生浓厚的兴趣。
课程资源
- 课程网站:GAMES101, GAMES101
- 课程视频:bilibili, 官网
- 课程教材:Fundamentals of Computer Graphics
- 课程作业:8 个 project
GAMES202
课程简介
- 所属大学:UCSB
- 先修要求:线性代数,高等数学,C++,GAMES101
- 编程语言:C++
官方介绍:
本课程将全面地介绍现代实时渲染中的关键问题与解决方法。由于实时渲染 (>30 FPS) 对速度要求极高,因此本课程的关注点将是在苛刻的时间限制下,人们如何打破速度与质量之间的权衡,同时保证实时的高速度与照片级的真实感。
本课程将以专题的形式呈现,课程内容会覆盖学术界与工业界的前沿内容,包括:(1)实时软阴影的渲染;(2)环境光照;(3)基于预计算或无预计算的全局光照;(4)基于物理的着色模型与方法;(5)实时光线追踪;(6)抗锯齿与超采样;以及一些常见的加速方式等等。
除了最新最全的内容之外,本课程与其它任何实时渲染的教程还有一个重要的区别,那就是本课程不会讲授任何与游戏引擎的使用相关的内容,并且不会特别强调具体的着色器实现技术,而主要讲授实时渲染背后的科学与知识。本课程的目标是在你学习完这门课的时候,你将有深厚的功底去开发一个属于你自己的实时渲染引擎。
作为 GAMES101 的进阶课程,难度有一定的提升,但不会很大,相信完成了 GAMES101 的同学都有能力完成这门课程。每个 project 代码量都不会很多,但是都需要一定的思考。
课程资源
GAMES103
课程简介
- 所属大学:Style3D/OSU
- 先修要求:线性代数,高等数学,大学物理,编程能力,基本图形知识
- 编程语言:C#
官方介绍:
本课程将作为基于物理的计算机动画技术入门,着重介绍各种基础的物理动画模拟技术。
该课程主要涵盖四个方向,分别为:1)刚体模拟;2)质点弹簧、约束与布料模拟;3)基于有限元的弹性体模拟;4)流体模拟。
本课程内容将不会涉及具体的物理模拟引擎,但会讨论各种引擎背后的技术,以及它们的优缺点等等。由于开发学习物理模拟需要一定的数学基础,课程初始阶段也会花一定的时间复习必备的数学知识。顺利完成课程之后,同学们应该会对基础的物理模拟技术有深入理解,对高级的模拟技术也会有部分接触。
图形学可粗略分为渲染、模拟、几何三个领域。GAMES101 和 GAMES202 主要以渲染为主,而对于物理模拟,GAMES103 则是很棒的学习资源。
课程资源
- 课程网站:GAMES103
- 课程视频:bilibili
- 参考资料:课程PPT
- 课程作业:共四次作业,可见官方BBS小程序或非官方的Repo:GAMES103 HW
Stanford CS148
课程简介
- 所属大学:Stanford
- 先修要求:线性代数,高等数学,Python
- 编程语言:Python
官方介绍:
这是一门计算机图形学的入门课程,这门课的一开始使用 Blender 去生成图像,并且理解底层的数学知识,包括三角形、法向量、插值、纹理映射、凹凸贴图等等。之后会介绍光线和颜色以及它们如何影响计算机的显示和打印。同时也会介绍 BRDF 以及一些基本的光照和着色模型。课程的最后,会涉及到光线追踪、反走样、加速结构等内容。
具体课程信息可以查看课程网站。
这门课程比起 GAMES101 浅一些,编程语言使用的是 Python,对于不熟悉 C++ 的同学比较友好。
课程资源
- 课程网站:CS148
- 课程视频:无,直接看lecture就可以了,也可以参考 GAMES101 视频
- 课程教材:Fundamentals of Computer Graphics
- 课程作业:8 个 hw, 1 个 final project
CMU 15-462 : COMPUTER GRAPHICS
课程简介
- 所属大学:CMU
- 先修要求:基础的向量微积分和线性代数 , 基础的 C/C++ 编程能力。
- 编程语言:C/C++
本课程全面介绍了计算机图形学。它侧重于基本概念和技术,以及它们与图形中多个问题领域(渲染、动画、几何、成像)的交叉关系。主题包括:采样、混叠、插值、光栅化、几何变换、参数化、可见性、合成、过滤、卷积、曲线和曲面、几何数据结构、细分、网格划分、空间层次结构、光线追踪、辐射测量、反射率、光场、几何光学,蒙特卡洛渲染,重要性采样,相机模型,高性能光线追踪,微分方程,时间积分,数值微分,基于物理的动画,优化,数值线性代数,逆运动学,傅立叶方法,数据拟合.
课程资源
- 课程网站:http://15462.courses.cs.cmu.edu/fall2022/
课程视频:
课程教材:15-462 没有唯一的课本, 提供了各种书籍供你参考. 如下:
- 课程作业:参见课程主页