选课类别:计划内与自由选修 | 教学类型:理论课 |
课程类别:本科计划内课程 | 开课单位:数学科学学院 |
课程层次:专业选修 | 学分:3.0 |
刘利刚老师的《计算机图形学》课程得到了众多学生的高度评价,被誉为“科大计算方向第一神课”。刘老师以其深厚的学术背景和对于图形学的热爱,提供了一种“指针性”的教学方法,旨在为学生提供一个高角度的知识框架和思考方向。他在课程中不仅清晰讲解基础算法,还介绍大量前沿技术和应用领域,包括NeRF、3DGS、CAD/CAE、实时渲染等。此外,刘老师邀请了业界和学术圈内著名学者交流,极大拓宽了学生的视野。
课程实验设计在深度和广度上都让学生获益匪浅,但对编程能力要求极高。学生需要每周完成一个与计算机图形学有关的实验,包括几何、渲染、动画等不同领域的小任务,最终还需完成一个三人合作的大项目。课程主要使用C++、Qt和VS进行编程,实验框架支持良好,助教在实验支持方面被广泛称赞。然而,繁重的实验任务使得课程退课率较高,仅约50%学生坚持至课程结束。
考试内容集中于图形学的基本概念和课程中提及的经典算法,考试难度适中。刘老师以“为检测知识为目标”而设计考试,不会在难度上为难学生。给分方面,“投入一分收获一分”,态度认真且坚持完成课程任务的学生通常能获得满意的成绩。
这门课被认为是一段真正有价值且独特的学习经历,尤其适合对计算机图形学感兴趣且具备一定编程基础的同学。课程的高要求与高产出确实会对学生的能力提升、方向选择以及职业规划产生重要影响。虽然实验任务量大且对编程水平要求高,但课程框架帮助学生系统、快速地入门并掌握图形学的核心知识。正如多位学生所言,这门课是“上到就是赚到”。
先占个坑吧,考后再补,很难不评价在科大最为有感触的“课”,或许这门课远远超过了“课”的定义。
与其说刘老师开的这门“计算机图形学”是一门课,更不如说是一个方向,一种人生。很幸运今年能选到刘老师的这门课程,毕竟这门课开课的频率也是有目共睹,上一次开课还是20年的时候。目前为止上过的所有课程中,在这门课中的收获无疑是“断档”式领先的,一门课可以从一个方向基本的知识,一直延申到前沿,就已经足以让其他课程望尘莫及。
本门课程感觉可以分为两个部分,前一部分是图形学基础知识的基本介绍,大概是十一周左右的时间;后半部分更为面向前沿,每一节课程都大体介绍了一个方向现有的工作。课程的要求无疑是非常高的,我原先并不是一个很会写代码的人,原先的代码课数值代数、数学建模、数学实验很难提的上有很大的收获(数学实验纯粹自学倒也算是一种对于能力的锻炼吧),这门课的前一部分,除了清明和劳动假期,基本上每周需要实现一个“小任务”,五个和几何相关的任务(简单的图形绘制窗口、图像变换、Poisson Editing、给定边界的极小曲面生成与参数化、ARAP系列工作)、两个和渲染相关的任务(简单的Phong光照模型、Path Tracing)、三个和动画相关的任务(Spring Mass、SPH、角色动画)。所有任务中,ARAP系列工作当时做的我比较绝望了,不过后来莫名奇妙修改了一个遍历方向就搞定了,至今感觉还是未解之谜;渲染的矩阵各种变形是容易错的,而且对于结果的影响很巨大;物理仿真部分助教写的说明文档实在是太详细了,大大简化了该部分的工作量。我在这里非常感谢我的舍友,他在这门课中给予了我非常多的帮助,包括并不限于算法的理解、代码、逻辑、一些简化的方法、C++的特性、一些快捷键等,使得原先在上这门课前从来没用过C++的我对该语言有了一些浅薄的认知。至于最后的大作业,我同样非常感谢我的队友,个人认为最终项目还是达到了较高的完整度,或许也可以继续进行下去吧,大家都对于这个项目付出了极大的努力,而在最后一个晚上,我们de一个bug到了早上七点后才睡觉,或许也是一种新奇体验。
刘老师上课是指针性的,除了用一种很高的观点去看现有的工作,并且将算法的思想和流程讲的非常清楚外,还会外加一些并不要求在这门课中直接实现的工作“指针”,于我而言目的就是提出一些思考的方向,大面积了解现在的工作,或许才可以选择一个更加感兴趣地方向深入探究吧。这在课程后半学期更是如此,讲解了现在火爆的NeRF还有3DGS系列工作,讲了所谓“卡脖子”技术的CAD/CAE问题,讲了大规模场景重建,讲了可微渲染、高质量实时渲染等等,而当今这些方向确实有无数的前辈们成绩斐然,也确实极大的造福了当今社会。
刘老师的connection毋庸置疑是独一档的,在6.10左右请了全球做的极好的几位老师来做报告,与他们的沟通让我察觉出了一种对于这个方向的无比热爱,是我心中所向往的那种学者“性情”。而暑期又请了国内外的专家开讲习班和讲座,今年请到了Minchen大神(虽然有点遗憾是线上),去年是Chenfanfu Jiang老师(他们还是师徒关系hh),每年的报告课程都是异常精彩,我去年选修了计算机图形学前沿课程,并且最终做了一篇对于数字人的综述,不过当时自己读论文感觉还是经常蒙古的,现在看起来要好了不少(所以从我自身感觉,这门课确实以一种合理的方式使得自己的能力得到了提升),在今年的报告上,确实会比去年听的好了太多,也和我自己在张老师的指导下学习了三维重建的一些工作,包括传统的SFM-MVS方法以及隐式表达、显隐结合表达等一系列方法,包括我的大作业的一部分也与重建的内容相关,因此报告中出现了水面有洞、树木噪声太大等问题我切切实实的经历过,甚至报告中的某一款软件我还申请了一个月的试用不过后来找到了国外一个软件的替代;Michen大神在报告中也确实又提及了物理仿真的一系列基本想法,这与课程中的内容是有一些重复的,因此听的时候也不是那么坐牢,这种感觉令人兴奋且是前所未有的。刘老师也将作为今年Pacific Graph的Conference Co-chairs,该会议其中的很多学者都在学术界颇负盛名……以上的种种有一种刘老师杀疯了的感觉,而目前为止感觉可能数学科学学院除了几何物理中心也再没有老师提供如此多的机会,让学生和学术界的大咖进行交流。
总而言之,非常幸运今年能够选到刘老师开设的这一门课,这里的每一节课我都听过了不下两遍,相比于20年的计算机图形学课程也有很大的改变,框架更加简练,文档更加精细,更加涉及到当今世界正在做什么,这对于与时代结合极为紧密的这一个方向自然是极为重要的。感谢三位助教的无私奉献,我在自己写项目的时候觉得框架真的是最困难的一步,配置环境等问题经常让人红温(网上开源的很多库完整的运行感觉都一点不容易。。。),我们的助教却在短时间内写出来完善的框架,并且感觉可以应用于以后的研究学习中,堪称伟大!
而最后在讨论一下关于考试的问题,考试基本上全是图形学最最基本的常识级别内容,全部来源于课堂(甚至是只有作业)提及的经典算法,如扫描线、SPH方法、Mass Spring、Path Tracing、Phong,还有一些基本的定义,OpenGL、API、shaders、齐次坐标、参数化、什么是Poisson方程、极小曲面等等,还有一些算照片大小的、C++的性质等这些基本知识……老师完全不会在所谓的“考试”中难为你,这与我今年带助教的淑芬A2课程完全不一致,期末考试的很多题都完全不应该是出现在考试中的以坑学生为目的而不是检测知识为目的的神金题,而我相信这在科大的培养中屡见不鲜。。。而在这门课中又学到了如此多的知识,让我更加坚定的从事这个方向,因此我愿称之为“科大计算方向第一神课”,乃至我目前上到的“第一神课”。这门课的优秀率绝对极高,刘老师在给分方面绝对不会让学生心寒,毕竟,这可能是我们的“热爱”啊。被教务处卡到现在才出分,也是我本科阶段最后一门需要成绩的课(如果不被迫gap了的话),算是对于本科生涯最完美的句号。
距离第一次点开刘利刚老师的计算机图形学网课也一年了,给刘老师送上我的第一个评课。
我是 2024 春季班上唯一一名大一学生,曾经在凭爱好做游戏开发时了解过一些计算机图形学的内容,在尝试复健算法竞赛却受挫(?)时思考了我应该学一些什么,于是就顺着曾经的热爱找到了这里。于是抱着试试看的心态,我在寒假期间刷完了 2020 年的全部网课,并且在除夕当天下午完成了那年的全部必做实验(当时最后一个是路径追踪,我没有做大作业),也确认了自己可以选下这门课。所以就选课了!因为自己是二刷所以心怀愧疚(?),也为了学到更多东西,我对自己二刷的要求是完成所有选做的实验。最后除了 HW9 的 IISPH 外(我实在调不动 bug 了),我完成了所有选做内容。就算是二刷,这门课带给我的收获也非常大,绝对是一段难忘的体验。不过也因为当时 DDL 的堆积,摧毁了我五月的精神状态(呜呜)。
先说说课程难点。
这门课的难点之一在于需要大量突破自己的舒适区(不论是对数学系还是计算机系)。这门课的预修要求名义上只有数学分析、线性代数,但其实还会涉及大量 C++(贯穿全课,要求不低),数值线性代数(Eigen 的各种使用技巧与各种矩阵操作),偏微分方程(HW3、HW4 及 物理仿真部分的作业)以及少量微分几何(曲面参数化)、最优化(ARAP,Liu13 布料仿真)、概率论(路径追踪)方面的内容。对非信智的同学来说,实验中面向对象的内容与工程的内容的确对编程基础要求极高。虽然的确可以边写实验边学,这门课实用导向的设计也使得不需要系统地学习这些知识、只需大致了解就能啃下需要用到的数学内容,不过想选课的的确需要谨慎。一刷的时候因为数学坐牢了超级久,到了二刷才发现,有许多根本没弄懂的东西在一刷时不明不白地就写出来了。
另一个难点在超大的实验任务量。2024 春季学期共有 10 个小实验作业(比 2020 年还多两个),除了清明和劳动节期间没有布置实验外,是一周一个的要求。二刷时完成每个实验的必做+选做+实验报告,平均需要花费四个晚上。好在大一下的课不多(虽然四月五月的 DDL 非常多……),现在想来如果大二课表塞满的我每周要花这么多时间去做一个自由选修课的作业,简直要死掉啦。2024 春季学期最终只有约 50% 的学生按时坚持下了每一个作业(2020 年甚至就 30% 左右……),也可见这门课的可怕。不过因此,这门课的给分几乎完全是以实验为主的,只要认真做下每个实验,最后一定能拿到满意的总评。
如此难度的课却能受到这样高的评价,当然也和这门课的高质量有关。
这是一门绝对不会让你觉得自学大于听课的课。这门课的讲法非常巧思:
这门课的实验设计也非常巧妙。因为是数院的课程,所以这门课不会像别的学校的 CG 课程那样涉及大量 OpenGL 层的底层实现(也许对计算机系的学生来说并不是一个优点……),而是注重在已有的框架上做更高层的算法实现。老师和助教在实验的设计上都超级进取,作为同时做过两年实验的同学,我觉得我有资格评价,2024 年的许多改进都堪称惊艳。
老师和助教都非常热心。从刘老师的身上能看出许多对图形学真正的热爱(他真的想教会我们!),这点在猫猫虫学长和一名匿名学长的评课中已经说得非常多了。因为我是大一的学生,在学习过程中刘老师也给了我相当多的鼓励,也给了我不少接触学术的机会,相当感谢老师。助教对解答同学的问题非常耐心,课后周围总是会围一圈人。遇到问题时三位助教回 QQ 消息几乎都是秒回,非常惊人。做渲染部分,框架遇到 bug 时几乎只要反馈给助教,过十分钟就能 pull 下来修好 bug 的版本(助教的 Github 那段时间每天都超级绿)。和助教聊天也能体验到他们的热情,在学期结束后也成为了很好的朋友。非常感谢能有认识这么好的学长的机会。甚至我的 Debug 就是助教手把手教的(在此前只会控制台输出),非常感谢呜呜呜((
最小化无意义的内容。课程的给分安排是 作业*60%+大作业*20%+期末考试*20%,期末考试的内容也非常基础,只要认真写作业(甚至不必认真听课)就能拿下。课程不需要任何文科的记忆,也不需要做重复繁杂的工作,只需要写好一个个实验就好。这点在上了一些计算机的课后感受更加深刻了。
超级好玩。闫令琪老师在课上就说过“Computer Graphics is Awesome”!因为是图形学,所以做出来的东西都能亲眼看到,超级漂亮超级酷,简直是数学与计算机交接的一种浪漫。这门课是学以致用的,在学完了课程后马上就可以用学到的知识做一些小游戏小动画,能看到自己所爱的东西就在自己手中被创造出来,这是比分数要贵重得多的奖励。
因为我个人的考虑,在大一下我并没有转去计算数学系,而是选择留在了计科。到了大二,上了三门计算机专业课后,还能时不时感受到刘老师这门课设计的精妙。对课程与实验质量的不懈追求让这门数院的计算机课体验与收获比计算机系的课还要好上不少。如果能抽出一个空闲的学期,又撞上了刘老师开计算机图形学课,请务必试试看!
最近在做 UPenn CIS 5650 (GPU Programming and Architecture) 的课程实验,又感受到了更加精妙惊艳的实验是怎么设计的。这是一门计算机图形学的后续课,讲的是 GPU 编程的更深入应用。Lab 1 用一个简单的 Flocking(类似康威生命游戏)的小实验揭示了 CUDA 的许多应用理念,还用一个不物理的模型教会了物理仿真方向的同学该怎样用 GPU 做网格化模拟,实验中有详细的操作指导与 Debug 指导,实现部分又不会提示过多,做起来也能有“学会了”的成就感。需要自己思考的实验部分(Lab1 2.1 的确定头尾指针那块!试试想想看)在被窝里想清楚时简直是 Eureka Moment。做出来的效果也很漂亮很酷,仅仅是一个难度不大的小实验就能有学到超级多的感觉。如果以后有幸当上一门实验课的助教,一定会试着向这个方向去设计、改进实验。刘老师的图形学课实验也明显有向这些国外大学优秀的实验学习的感觉,再次非常感谢无私奉献改进实验的助教们。
计算机图形学是一门美丽的学科。许多图形学前辈们也给了我非常大的鼓舞。2020 年初刚我从游戏开发接触到 Shader 编写时,正好碰上胡渊鸣老师在知乎上发出了那篇“99 行的冰雪奇缘”。我顺着这条路了解到了不少图形学与物理仿真的内容,心想这太酷太有趣了,我一定要试着学学。高中闭关苦学文化课时突然听闻毛星云老师的噩耗,又让我为图形学人的理想主义感叹了很久。我心里一直放不下对艺术的感情,技术与艺术的结合对我来说简直是最浪漫的事情。也许正是这些让我决定在大一就去试着挑战这门早已听说难度极高的大山,而我也的确做到了。
希望这样理想的种子能够在我的心里埋得更久一些,也希望未来选课的同学们能在这门课中找到和我们一样的热爱。
2024 年课程主页:http://staff.ustc.edu.cn/~lgliu/Courses/ComputerGraphics_2024_spring-summer
2020 年课程录屏参考:https://www.bilibili.com/video/BV1iT4y1o7oM/
GAMES(计算机图形学与混合现实在线)平台:https://games-cn.org/ 上面有大量计算机图形学的网课与讲座资源。
这门课应该是我上大学以来收获最多的课,当然,这门课要付出的也很多。
每一周或者两周一个编程作业,一共有五次,最后有个为期一个月的3人合作的大项目。编程量是很大的,仔细学的话编程能力能有很大提升。主要是用Qt和Vs编程,最后的大项目要用到Unity3D。
刘老师上课上的很好,不是一味地填鸭式教学,而是给我们一个基本的指引,然后让我们自己去搜索相关资料,锻炼自己寻找资源的能力。而且他是个比较有激情有活力的人,精神面貌很好。
学完这门课之后的感觉,不是“以后再也不用和它打交道了”,而是“这门课我算是入门了”。
upd: 2024.9.12
听说jwc要查pksq高分课程的老师,不过没有必要为了这个更改分数。
upd: 2024.7.19
提醒大家出分了。
对于给分不好评价,只能说“一分耕耘,一分收获”,我个人收获了满意的成绩。当然这学期同学水平普遍偏高,不可避免的可能会有不满意的成绩。
本来有很多想说的,但是话到口边,又很难组织语言。
很好的课程,很独特、很有价值的一段学习经历。
推荐计算机编程水平极高,并且愿意花时间的同学选课,我认为你不会后悔的。
有缘再见!
今天大作业展示,课程基本结束了。记录一下刘老师的寄语(大概意思,不是原句):
你们可能之后会选择图形学方向,或者很多其他的方向,但是一定要 Follow Your Heart,这样你才会有动力,而不会感到累。绝大部分的累实际是“心累”。这样你才不会焦虑,不会认为“卷”,因为你自己正在“卷”,或者说你不必需要在意竞争,只需要做你想做的。这样你可以更好的处理人际关系和家庭关系,让你的生活更加美好。我之前在(某个美国名校)碰到一个博士后,已经做了三段博士后了,就是发不出文章做不出成功,他是做代数的。我说:你既然做不好代数,为什么不去转换方向呢?他说已经晚了。博士后是一个工资很低的工作,他如果接着这样痛苦地做着博士后,没有办法做出成果,也会在家庭和人际关系等方面有更多问题。
你们到现在,能力都很强。如果一个人在某个方向有天赋,而且有能力,那么他可以在这个方面做的很成功;如果只有天赋或者只有能力,也可以做的不错。
的确看得出来老师做图形学是充满热爱的。
(可惜我还不能理解这种热爱)
欢迎评论区指正和补充。
利益相关:
几乎每个实验都认真肝了,加分项几乎都做了,总评96
课程相关:
慕名而来,果然学到了很多知识。如果想锻炼自己c++代码水平,这门课绝对值得一选。可惜的是由于疫情在家,没好好听课,只认真学了实验相关的部分,期末过ppt才发现老师上课其实讲了很多。但其实只是作业所学到的知识,已经足够去通过一个图形学相关的算法岗面试了(凭借着九次大作业成功进了字节的图形图像部门,每次面试都要讲一遍光追TAT)
实验相关:
吹爆助教!今年实验体验非常好,助教自己搭的框架(除了使用说明有点少,但问助教回复很快),很多实验只需要自己填空。比如最后一个实验光追,其实自己只需要实现光追的算法,并不需要去考虑opengl的接口。以及助教的c++规范真的强。
课程主页http://staff.ustc.edu.cn/~lgliu/Courses/ComputerGraphics_2020_spring-summer/default.htm
我自己实验 https://github.com/SqrtiZhang/CG_2020spring
实验ddl是每周一早上6:00,充分考虑了我们肝ddl的能力(就是头有点冷
考试相关:
考试比较简单,个人感觉占比比较少。当时脑子抽风了一道很简单的8分大题没写出来。
卷子主要考察定义等基础知识。比如今年考了
利益相关:刘老师学生来刷个好评~
刘老师时隔三年再次开了这门计算机图形学的课程,相较于USTC_CG2020,这门课的实验框架更加简洁细致(环境也跟上了时代主流版本),涉及到的内容也更加丰富多样,加入了动画的相关内容,没能亲自去体验一番真是太遗憾了
课程内容对于代码能力要求极高,需要你熟练掌握C++,会用visual studio和cmake是基础(否则框架工程你可能都跑不起来),如果代码功底太差的话可能会很折磨,因为你不仅要掌握图形学的底层数学逻辑,还要用代码将其实现。
作业量大管饱,平均一周一个实验,最后两周还有大作业,同时最后还有期末考试
听刘老师说这门课退课率极高,从开学的100人到最后大概只有一半的人坚持了下来,刘老师给这些能坚持下来的同学的分数都很不错
这门课的同学大佬云集,如果想要结识志同道合的朋友真的很推荐来选这门课!!
作为信智学部的学生,入门CMake(之前就听说过,但没学)居然是在数院的课程上,悲
作为计院同学,慕名来数院选了这门课。这门课作为编程练习来说效果很好(比计院所有课好),如果是想要了解图形学的话,跟着这门课的进度也可以快速入门。
课程总共有8个assignment,刚开始对于没基础的人来说有些艰难,不过跟上了进度后也就习惯了。ddl是早上8点,可以说充分的考虑到了同学们的能力。(麦教环境不错,可以去那边赶ddl)
最后的大作业非常开放,可以用游戏引擎做游戏,也可以用单片机做自己觉得有意思的玩意。刘老师实验室还有VR设备可以用。我们的大作业是用Unreal 4引擎做了一个游戏。在制作过程中会发现学完这门课后,理解先进的引擎用到的技术也没那么困难。另外我自己也调研过Unity 3D,没想到在另一门课上发挥了作用,所以对我来说选这门课是血赚。
课程也不是没有缺点。assignments中使用的框架没有紧跟时代,有些老库用起来非常难受,但也就是些小问题,没有什么是一晚上不能解决的,如果没解决,那就肝到早上。
这门课除了对编程水平要求很高,极高,非常高,其他方面都非常好
就是作业能不能少一点,听说今年还要比20年多两个作业😰
刘老师教课水平一流,收获很多,无奈内容太多时间太少跳过了很多内容,比如 opengl 的实验,shader 更是直接没讲。
图形学还是很有意思的,看刘老师主页上的课题都很有趣,这课的课程实验也很有趣,能够做出很漂亮的结果。印象最深的是有次作业的附加题是实现刘老师 08 年一篇文章中的算法,肝了一整天没吃饭,但最后的结果实在是漂亮,瞬间觉得这一天值了。
如果你投入时间很多的话,这课是容易拿高分的,我当时每周大概花个一晚上来写代码,最后拿了个 96。
在科大计算数学方向中收获最大的一门课,没有之一。
刘老师开的所有课都值得去听。