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

目录

个人背景

目标技术栈

学习记录

本科阶段

保研后 ~ 23年6月

23年7月~23年8月

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

三维CAD建模

应用几何造型

GPU计算与工程应用

计算机图形学

24年2月~24年3月

24年4月~24年5月

24年6月~24年7月

杂谈区


个人背景

本科:西南某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的开源项目,希望以后能把这项技能写进简历里吧。


杂谈区

打工?沉淀!

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
学习计算机图形学的路线可以包括以下步骤: 1. 掌握基础数学知识:计算机图形学涉及很多数学概念,如线性代数、向量和矩阵运算、几何学等。建议先学习这些基础数学知识,以便更好地理解后续的图形学概念和算法。 2. 学习图形学基础概念:了解计算机图形学的基本原理,包括坐标系统、颜色表示、光照模型、渲染管线等。可以阅读相关的教材或在线教程,如《计算机图形学原理与实践》等。 3. 学习图形库和API:掌握使用图形库和API进行图形编程的基本技巧。常用的图形库包括OpenGL和DirectX,它们提供了一套函数和工具集,用于图形渲染、对象建模和交互等。 4. 学习图形算法和技术:了解常用的图形算法和技术,如线段裁剪、多边形填充、光照计算、纹理映射等。掌握这些算法和技术可以帮助你实现各种复杂的图形效果。 5. 实践项目和练习:通过实践项目和练习来巩固所学的知识。可以从简单的图形渲染开始,逐渐扩展到更复杂的场景和效果。参与开源项目或自己设计和实现小游戏也是一个很好的锻炼机会。 6. 深入研究和学术探索:如果你对图形学有更深入的兴趣,可以进一步研究和学术探索。阅读相关的研究论文、参加学术会议,了解最新的图形学进展和技术。 记住,图形学是一个广阔而复杂的领域,需要持续学习和实践才能掌握。不断地编写代码、阅读文献、参与讨论和交流,将有助于你不断提升自己的图形学技能。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值