我的计算机图形学学习日记(持续更新)

个人背景

本科:西南某985·软件工程(2019-2023)

硕士:华东某985·软件工程(2023-2026)

方向:计算机图形学

目标技术栈

想到的都先列上……实际上可能一个都精通不了(

  • C++

  • 计算机图形学知识

  • 图形API(OpenGL / Vulkan)

  • 游戏引擎(Unity / Unreal)

  • shader语言

  • 机器学习

  • GPU

学习记录

本科阶段

  • 使用过C++

  • 使用Unity开发过简单的2D游戏

  • 了解了图形学与游戏行业的基本情况

知识积累非常之少,最大的成果是探索到图形学领域+顺利进入心仪的图形学实验室读研。

保研后 ~ 23年6月

  • 适应读研生活
  • 粗略学习GAMES101
  • 完成毕业设计,学会开发blender插件
  • 了解了几何方向与工业软件行业

粗略地学习了GAMES101(没写代码),算是图形学知识初步扫盲了。进组跟着未来导师做了毕设,内容是封装师兄写的工业软件算法做个Blender插件。前端Python+后端C++,做的时候觉得还是蛮有意思的。毕设做完后因为感觉导师方向和个人计划不匹配,于是换到同实验室另一渲染方向导师门下。这段时间了解了计算几何与工业软件行业,把工业软件行业纳入就业考虑。并结识了一些师兄师姐,对图形学领域的宏观认识增加了。

23年7月~23年8月

  • 与新导师沟通,进组
  • 学习图形API(OpenGL)

导师没有布置任务,于是我自由安排了学习内容。暑期主要在学习图形学基础知识与图形API,中途跑了一个OpenCV相机标定的程序。用OpenGL实现一些图形学算法能很好地帮助理解图形学知识,个人感觉《LearnOpenGL》真的写得非常好,是入门的保姆级教材。美中不足的是OpenGL封装了大量的功能,如果在学习过程中对原理不求甚解,很容易变成只学API,这是需要注意的。这段时间还开始整理学习笔记发CSDN,还是挺有成就感的。能学习自己喜欢的东西真的很开心。

23年9月~24年1月 研一上学期

  • 研一上学期,上课写作业

本学期共学习了四门图形学方向的专业课,课程涉及图形学算法、几何、建模、GPU加速等领域,完成了课程作业。

三维CAD建模

相关领域:计算机辅助设计、几何建模、几何引擎、实体建模

  1. 实体模型及其表示方法(B-rep、CSG等)
  2. 三维CAD建模方法(扫掠、布尔等)
  3. 三维CAD建模系统设计、ACIS几何引擎介绍

<考核>

闭卷考试+大作业

大作业:实现基于半边结构的欧拉操作和扫掠建模系统

  1. 定义半边数据结构
  2. 基于半边数据结构,实现五个基本欧拉操作
  3. 基于欧拉操作,实现扫略建模
  4. 对扫略所建的模型进行真实感图形显示

<感想>

大概一年前,我才知道工业软件也是图形学的应用领域,而直到学习了这门课,我终于对工业软件的高精尖有了自己的认知——学这个!真的!太难了!不是学Blender、Maya等等建模软件的使用方法,也不是学怎么在现有软件上二次开发,而是学如何用代码构建一个简易的建模软件,学这个就好像是在学图形学中的机器语言。好在这门课侧重于对于数据结构和算法思想的介绍,是较为偏向导论而非实践类的课程,但它呈现出的复杂还是好几次让我头皮发麻。这个领域网络资料基本没有,如果不是在这里,大概真的很少有老师能开课向硕士生介绍这个领域吧。可惜我学得不好,大作业基本靠往届作业东拼西凑,相比于“写”代码,说是“读”+“缝”代码可能更准确……而且还没读懂(。最后闭卷考试虽然考前复习得很辛苦,但确实让我的脑子留住了不少知识,总算是没完全浪费老师的辛苦教导。

按目前我的研究方向看,未来对于实体建模领域应该不会有太多的涉足了。寒假计划对项目再做个整理,也算给这个领域的学习留下点小小的产出吧。

应用几何造型

相关领域:计算几何、几何建模、NURBS(非均匀有理B样条)、GAMES102

教材:《The NURBS Book 2nd》

  1. 曲线、曲面表示方法
  2. 贝塞尔曲线、B样条曲线曲面
  3. NURBS(非均匀有理B样条)曲线曲面
  4. 几何算法

<考核>

读书报告+大作业

读书报告题目自选,我写的是用贝塞尔曲线对四元数插值,计算机动画相关的

大作业:实现NURBS曲线曲面的基本算法(如求值、求导、求法向等)和蒙皮曲面生成算法

这个大作业我写得超级认真,并写了篇介绍文章:NURBS蒙皮/放样曲面生成算法_nurbs曲线蒙皮-CSDN博客 (点点关注和收藏谢谢喵

<感想>

顶级好课,不能更推荐。老师还在读书的时候就是研究这个的,对该领域的历史都能如数家珍。老师备课是我近年来见过最严谨细致的,每年都会调整课程大纲和大作业题目,课件还配有辅助阅读资料。课程内容也非常实用,NURBS这种表达方式在图形学的很多领域中都有应用,可以说是几何领域非常基础的入门级知识了。

大作业我前后写了近两周,完整地经历了 搞懂需求-构思算法框架-代码实现 的过程,其中也伴随着许多次的破防,比如找不到参考资料的时候、读不懂数学语言的时候、发现实现A算法需要先实现BCDEF算法的时候……当然最终的成就感也是无与伦比的,觉得自己还不错嘛嘿嘿。

GPU计算与工程应用

相关领域:GPU、CUDA、并行加速

教材:《CUDA By Example》

  1. GPU功能及评估指标介绍
  2. CUDA并行加速理论及实践

<考核>

四次小作业+大作业

大作业:对老师给的mesh求交程序用CUDA进行并行加速

两个相交的三角网格模型,每个模型有69964个三角面片,求出它们的交线。原程序for循环了69964x69964次,求交时间2800s,要求加速到几十毫秒(。

<感想>

唉唉唉说到这个大作业我真的会叹气,因为我最后只是交了个半成品,求交时间大概为900ms。而我没写出来也不是因为不会用CUDA,是我不知道怎么用GPU并行加速构建BVH和基于BVH的检测,总的来说是我对图形学算法不够熟悉,这让我很有点挫败。这个项目可以参考的资料其实挺多的,但是期末赶ddl没啥时间了,我也没认真细看,唉。寒假再多学学,加油加油。

这门课还是挺好的,让我完全地意识到了GPU并行加速对于大型的图形学项目有多重要,也让我这个一直学软工的人了解了点硬件知识。还让我决心自己装一台稍微好一点的台式机,总算不是装机白痴了哈哈哈哈哈哈。

计算机图形学

两个大作业,一个是实现层次Z-Buffer,ddl是一月中旬,刚交;另一个是实现蒙特卡洛路径追踪,ddl三月,还没开始写,写完再统一总结。

把所有作业都交了,来总结一下。

其实、我之前总结不出来的主要原因是、我没怎么听这门课。一方面是每周的课程时间和其他安排冲突,另一方面也或多或少有学过GAMES101的自负,结果就是被大作业教做人了,乐。总的来说这门课比GAMES101的讲解更为细致,在101较少涉及的几何领域也有了更多的介绍。不得不说图形学才是我以后的核心技术啊,怎么能不好好学呢。

24年2月~24年3月

  • 装好了自己的第一台台式机!(硬件茶谈好好好!
  • 过年放假!好好休息了半个月
  • 写计算机图形学课程大作业——蒙特卡洛路径追踪
  • 找日常实习:破防、被拷打、自我怀疑

关于大作业的介绍文章已经发布啦:基于OpenGL的蒙特卡洛路径追踪-CSDN博客,这个大作业因为缝了相当大佬的作品,所以技术力还真的是有点小高(。其实二月间已经基本写好了一个CPU并行加速的光追版本了,结果某天在github上随意乱翻,看到了同校前辈的课程作业竟然是用shader实现的,渲染结果和渲染效率都完爆我的作品了啊喂!于是我果断决定——  借鉴前辈的作品!经过半个月的阅读、分析、模仿,现在大概也算化为己有了?

在写作业的过程中,复习了GAMES101、学习了GAMES202、阅读了一部分《RTR4》。学渲染好幸福,好想一直学渲染呜呜呜。

交完图形学的大作业,我硕士阶段的专业课程也就结束了。被安排好日程的生活宣告结束,随之而来的是不知该去向何方的迷茫。24年4月~7月也许是我仅剩的可以自由支配的时间,为了面向就业地提高自己的竞争力,我要认真安排这段时间。

于是三月中旬,我也投身到春招洪流里,试图在人山人海中找到一份日常实习。无忧无虑的人生一去不返,一旦开始看面经、找机会,就发现自己的水平是那么的烂。算法题写不出来,八股文不会背,图形学知之甚少,项目说不清楚……我到底会干啥啊?我到底能干啥啊?我到底要干啥啊?

24年4月~24年5月

  • 找实习:在失败中麻木,在失败中思考
  • 失败后的思考:正在为您重新规划学习路线
  • 读论文、读论文、读论文

完全意识到了自己的水平和目标之间的差距有多大。一共获得了几次面试机会,先临三维-几何算法实习生、字节-图形图像工程师-日常实习、网易-游戏客户端引擎-暑期实习、叠纸-渲染程序员-暑期实习,全都寄了。尤其是网易,完全让我体会到了正式招聘的面试难度之大,水平的差距绝不是能靠几天的突击挽回的。唉,要努力啊。

我发现自己之前的学习有几个误区。一是重视图形学,忽视计算机基础;二是重视理论,忽视实践。我写算法题和背C++八股都不行,这导致我连考核基础的一面都过不了;而我对图形学的了解也非常的局限,基本只学过前向渲染和光线追踪,外加一点点几何知识,这和游戏行业的延迟渲染是比较脱节的。造成这些问题,一方面是因为我学艺不精,本身知识储备就少;另一方面则是没有面向就业进行过学习和训练,这是认知的问题。作为学生,很容易在某一个小领域深入,实际上研究生阶段也确实就是这个要求,但是求职面试似乎更考察知识的全面性。求职能否成功不在于你会什么,在于你得会面试官希望你会的。那么我面试游戏引擎岗,面试官自然希望我了解游戏引擎及其渲染管线及每个阶段的工作原理,这是很自然的事吧。

4月底还被网易的TA岗捞了一面,面完觉得以后还是专心卷引擎岗吧(乐。今年不准备再投实习,已经明白自己的弱点、接下来就要努力弥补了,之后的重心也要逐渐转移到科研上来。虽然最终没有找到实习,但是这个四月我也没有虚度。回望一个月前的自己,我真的又进步了很多。既然知道了努力的方向,就勇敢地向前吧!

——————————————五一假期好好休息了的分割线——————————————

放假一回来五月就过去一周了啊喂……!玩得太开心以至于把焦虑和学习动力一起抛在了脑后,还是得尽快调整重新投入战斗才行啊嘿嘿。开始看论文了,这个月会系统地学习下之后进组要做的内容。另外,与学习主线无关的是,我终于开始学车了!

五月感觉没干什么就要结束了……?这个月开始学习与科研相关的领域,目前主要在看可微渲染相关的文章。也有在规律地刷leetcode,然而周赛还是稳定地卡在7分没有突破可恶,希望突破瓶颈的那天快点到来……以及缓慢地开始看GAMES104了……唉五月感觉挺没有计划的吧,五一假期结束后调整了好几天进入学习状态……加油加油!

leetcode周赛突破7分了!虽然这次比较简单,但是终于终于能突破7分也是喜事一桩嘿嘿。最近在按照灵神的题单刷题,放个记录【灵茶山艾府题单】基础算法精讲 高频面试题

24年6月~24年7月

  • 规律地刷leetcode
  • 进组做科研
  • 学习Taichi

和老师约定好六月底进组做科研,于是六月基本在阅读相关领域论文中度过,辅以每天规律地刷leetcode和学习相关开发工具。研一快结束了才开始做科研,确实有点晚,不过在组里不用做横向,一上来就是奔着毕业的题目去做,感觉也还不错。老师给我的题目我还是挺喜欢的,虽然因为背景比较偏向于工科领域,对图形学理论的研究不算特别深入,但好在所涉及到的技术还是我想学习的。总之加油啦!

七月中旬来更新!上手新课题的速度意外地还不错,组内的参考资料很多,师兄师姐们也很热心,所以感觉干活还挺顺利的。速度快一点的话,希望到七月底能有一个初步的结果?然后再和老师交流下一步要干什么。不过进组之后确实感觉面向就业的学习少了很多,现在基本上也只能保证每天刷一两道leetcode了。我感觉还是得多抽点时间自学,今年春天的惨痛失败犹在昨日,不能掉以轻心了。不训练导致的退步也挺明显的,现在周赛又只能拿7分了,叹气。

最近也在思考,实验室项目所涉及的理论或者技术,应该怎么和我自己的求职规划结合起来。好消息是,实验室项目使用taichi进行开发,这正好是一个学习taichi这一高效的图形学开发工具的好机会。目前准备在做课题之外的时间里多读读taichi的开源项目,希望以后能把这项技能写进简历里吧。

24年8月~24年10月

  • 做第一项工作

不知不觉都已经十月底啦!这三个月主要在做研究生阶段的第一项工作,目前开发的部分已经基本完成也验证通过了。之后可能零零散散会有一些新的任务,但基本不会耗费太多的精力,所以也是时候把重心重新转移到准备就业上来啦!不得不说人对自己的生活总有一种惯性,我只是大概两三个月没怎么碰图形学相关的知识,现在想要重新开始学习就已经感到生涩和逃避了。不过无论如何,是时候继续向前了,加油加油!

24年11月~24年12月

  • 第一项工作收尾
  • 认真地学GAMES202+写作业

在第一项工作的主体内容完成后,我觉得自己的科研进度已经逐渐可以把控了,所以开始把面向就业的学习纳入到日常安排中来,基本上半天学图形学/写Leetcode/背八股,半天做科研这样子。图形学方面,开始认真地学习GAMES202并完成作业,也完全认识到了自己之前的图形学水平有多浅薄。回想24年春天我明明啥也不会就敢去找实习,只能说真的是“勇气可嘉”……再回看当时记录的面经,以前完全不知道在说什么的问题现在也慢慢可以回答,这种感觉真的好好。其实我一直知道我的问题是想得太多而做得太少,总是沉浸于对未来的美好想象却忽视未来要从现在开始前进才能抵达。希望2025年能够在修正自己的缺陷上有更好的成果,加油加油加油!

25年1月~25年2月

  • 第一项工作撰写论文
  • 报名远程课题实践活动

终于开始写小论文了,新手没啥经验,计划过年期间把除实验外的部分都写掉,年后回去做实验,争取2月底投出去吧。

然后就是我终于在找工作的路上成功迈出了一步——报名了tx的图形学远程课题实践活动,并顺利入选啦!去年我也报过这个活动,然而连面试都没收到,今年针对性地准备了简历,总算成功了。还是很值得庆祝的!撒花!!!

虽然做的东西只有一点,没想到论文写起来还挺麻烦的。新手第一次写论文也没什么经验,有很多表达、流程、格式上的东西需要学习。目前和导师定的目标是4月初投一个会议,冲冲冲!

二月中,远程课题实践也开始咯,先从阅读UE5源码起步。要兼顾写论文和课题实践确实有点辛苦,但好在我们这个课题似乎没有什么kpi,所以基本上还能平衡!希望能靠这个课题实践补上我没有游戏引擎学习/使用经验的短板,加油喵!

25年3月~25年4月

  • 写论文、改论文、投论文
  • 四月中旬去腾讯实习啦!!!

3月真的是好忙好忙,感觉每一件事都必须打起十二分的精神来做,好在过去的努力都成为现在前进的助力了。tx的远程课题实践顺利转成线下实习生了,等我论文投出去了就上岗。这份实习各方面都很符合我的预期,能拿到offer真的心满意足了。我都不敢想象如果不是这个机会,3月我又要写论文又要找暑期实习该有多焦虑,只能说感谢命运的馈赠、感谢自己的坚持、感谢所有帮助过我的人。因为这份实习对未来充满期待,好想快点上岗。当务之急就是快把论文写完。坚持坚持坚持!其他暑期实习只投了雷火,走的是实验室这边的绿通,现在HR面结束了(3.26),但还没有发offer。雷火这边感觉进度特别慢不知道为什么,是实验室的绿通相对普通批次开始的比较早吗?

3月24日,终于写完了论文初稿,松了一口气。给师姐看了一遍,看导师看了一遍,之后的一两周就一直在改改改。确实大家的意见都很有帮助,加油加油!尽力而为!

4月7日,终于!!!投掉论文了!!!!!!和导师讨论了之后的安排,导师也很顺利就答应允许我去实习。我准备下周就去线下实习啦!!!

4月中旬到深圳开始实习啦~从看源码开始,对UE慢慢熟悉起来了。不过UE真的是个很庞大的工程,学无止境……

顺便批评一下雷火!!!我HR面结束后没有任何消息通知我,官网上也不把我挂掉!!!

25年5月

  • 回复论文审稿意见
  • 写毕业答辩的开题报告


杂谈区

收到审稿意见咯……让我们认真rebuttal一下!

评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值