找回密码
 立即注册
楼主: franciscochonge

零基础如何学习计算机图形学?

[复制链接]
发表于 2021-8-10 15:25 | 显示全部楼层
本人根据前人的意见整理的一个书单:
3D数学基础
* Mathematics for 3D Game Programming and Computer Graphics(中文版:3D游戏与计算机图形学中的数学方法)
* 3D Math Primer for Graphics and Game Development(中文版:3D数学基础:图形与游戏开发)
* Geometric Tools for Computer Graphics(中文版:计算机图形学几何工具算法详解)
* Visualizing Quaternions(The Morgan Kaufmann Series in Interactive 3D Technology)


计算机图形学理论基础
*  Fundamentals of Computer Graphics(中文版:计算机图形学)
*  Computer Graphics: Principles and Practice(计算机图形学原理及实践:C语言描述)
*   Interactive Computer Graphics: A Top-Down Approach with Shader-Based OpenGL(中文版:交互式计算机图形学)
*   Graphics Gems系列(1~5)


实时渲染
* Real-Time Rendering, Fourth Edition
* Real-Time Shadows(中文版:实时阴影技术)
* Real-Time Cameras


离线渲染
* Ray Tracing from the Ground Up(中文版:光线跟踪算法技术)
* Physically Based Rendering, Third Edition
* Advanced Global Illumination




Direct3D
* Introduction to 3D Game Programming with DirectX 12(中文版:DirectX 12 3D游戏开发实践)
* Practical Rendering and Computation with Direct3D 11


OpenGL
* OpenGL SuperBible: Comprehensive Tutorial and Reference (中文版:OpenGL超级宝典)
* OpenGL Programming Guide(中文版:OpenGL编程指南)
* OpenGL ES 3.0 Programming Guide(中文版:OpenGL ES 3.0编程指南)
* OpenGL Shading Language(中文版:OpenGL着色语言)
* Graphics Shaders(中文版:图形着色器)
* OpenGL Insights


Vulkan
* The Official Guide to Learning Vulkan


渲染Tricks系列
* ShaderX系列(1~7)
* GPU Gems系列(1~3)
* GPU Pro系列(1~7)
* GPU Zen
* GPU Zen 2


如果是想从事游戏方面的工作,下面的书单也是非常有用的,可以借鉴:
游戏引擎开发
* Game Engine Architecture(中文版:游戏引擎架构)
* 3D Game Engine Design(中文版:3D游戏引擎设计:实时计算机图形学的应用方法)
* Game Engine Gmes系列(1~3)




游戏物理学
* Physics for Game Developers(中文版:游戏开发物理学)
* Physics for Game Programmers
* Game Physics Engine Development(中文版:游戏物理引擎开发)
* Real-Time Collision Detection(中文版:实时碰撞检测算法技术)


游戏动画
* Character Animation With Direct3D
* Computer Animation, Second Edition
* Realtime 3D Character Animation with Visual C++


游戏编程实践
* Game Programming Patterns(中文版:游戏编程模式)
* Tricks of the Windows Game Programming Gurus(中文版:WINDOWS游戏编程大师技巧)
* Tricks of the 3D Game Programming Gurus-Advanced 3D Graphics and Rasterization(中文版:3D游戏编程大师技巧)
* Game Programming Algorithms and Techniques(中文版:游戏编程算法与技巧)
* Game Coding Complete(中文版:游戏编程权威指南)
* Game Programming Gems系列(1~8)
发表于 2021-8-10 15:32 | 显示全部楼层
今天看到这个问题,想起自己以前的一些经历,就想来答一下,因为这个问题正好是我两年前刚学图形学的时候想问的,今天来回答希望给一些对图形学感兴趣的同学一点点帮助。
我本科是双非的,如果我没有记错的话,学校连个图形学的课都没有。说起来挺有趣的,我一开始对图形学并不关注,我是想做游戏的。大一大二写很多跟游戏有关系的代码,类似什么游戏网络框架之类的,逻辑脚本什么的。然后大三的时候我才知道游戏引擎的核心很大一部分是渲染引擎,我就开始关注图形学了。我一开始学图形学是我在大三暑假的时候,那时候学了一些geometry processing的皮毛,还写了一些shader,写这些东西并没有给我带来什么快感或者说乐趣,然后大概在暑假准备GRE托福的时候,每天晚上没事干的时候就看刷知乎,看到了很多 @文刀秋二 和 @张心欣 老师的帖子,我逐渐开始对rendering和simulation的东西感兴趣,毕竟这两个方向做出来的东西都很好看,人毕竟都是视觉系动物嘛!
大四上把标化考试搞完了,看很多帖子都在吹pbrt这本书,我马上搞了本来看看。完全没基础的我直接看可想而知,这可比glsl难多了,看了五六章就感觉难到看不下去了,但是我心里开始动摇了:我告诉自己,游戏不是我想搞的东西,我想学这个!
所以我从研究生开始学习,除了用过一些图形API,基本也算是零基础。研究生一年读下来我觉得rendering和simulation算是总算搞懂了一些皮毛,所以只能讲讲这两个方向怎么走出新手村。
先说rendering,这里主要说的是离线渲染。首先声明一点,不要直接看pbrt,直接看对大部分人来说就是劝退的。这本书我现在观感其实有点像是软件文档,pbrt附带代码的软件文档,只不过他会详细介绍一些原理,但是这些原理是给有一定基础的人介绍的。所以看之前你必须要先掌握一些基本的东西。这里入门有很多人介绍资源了,我就不说了。具体什么资源有效,我也说不好,因为我入门是靠上课写作业的。但是我觉得先挑一些简单的代码入门,至少用path tracing渲染一个Cornell box,然后再用pbrt学习,这样我觉得是没问题的。下面贴张我自己final project的图:
其实仔细看能看到天花板的光是不对的,我也知道,但是当时时间确实来不及了。我记得我们倒数第二周才把path tracing完成,然后老师交代final project时候禁止我们再搞fancy stuff,只要把场景做好做漂亮,你们现在的渲染器已经足够出色了(其实是在变相吹他自己,因为作业全用的是他的base code)。然后我一直就想搞体渲染,但是只有一个周末,头铁的我还是不管老师的warning开始搞fancy stuff。还好我之前其实看了一些材料,比如pbrt体渲染相关章节,还有迪士尼的production volume rendering(很好的的材料,手把手教你写体渲染,连伪代码都有,堪称业界良心)。然后花了三天大概写到final presentation的那天早上凌晨两三点。。,感觉完成了,然后开始渲染,顶着台式机火力全开的风扇声,带着耳机迷迷糊糊地睡了6个钟头,然后去学校。对,虽然只有10000spp,但渲染这张图花了6个小时,因为我没做任何优化,production volume rendering第四章讲优化的已经根本来不及实现了。到学校才发现天花板的光照⊙0⊙!还好老师最后没发现,主要是演示的时候分辨率控制的好,之后跟老师邮件交流的时候还夸我做得不错。。
接下来讲讲simulation。这里我首先安利一下edx上哥伦比亚大学的网课animation and CGI,非常好的课(当然课程免费想做作业是收费的。。)。这个课介绍了时间积分、刚体、碰撞、软体、流体,想学基础的直接看这个就是。作业整体偏数学,code反而不难,非常适合cs同学食用(没办法,cs同学们学图形学就得补数学)。第九次的软体作业有一个让你算hessian矩阵,算完不说过程结果写了两页草稿纸。。这门课唯一槽点是他的作业要用网页上的一个IDE codio做,没有代码补全不说还贼卡,后面我用mac装了个ubuntu虚拟机做的,明显好多了。
然后我讲讲fluid simulation。我是在今年寒假开始学的,当时并没有学上面那门网课,一开始学的是粒子法,总体来说粒子法没有那么tricky,这里推荐一本书Fluid engine development。这本书和pbrt一样配套代码。可以边学边看代码,但是代码不用全看,只看书里面提到的部分就行,原因后面说。粒子法的部分我觉得写的非常好,我看完就会实现sph的算法了,除了粒子邻近搜索spatial hashing的部分卡了几天,其他都很丝滑。然后网格的部分先别看,因为这本书网格部分讲的不好,很多东西怎么来的没说清楚.先看上面说的网课的流体部分,因为他用的是grid-based的方法,所以看完做完作业再去看Fluid engine development会比较好,很多东西就比较清晰了。这时候就可以拿fluid simulation for graphics这本书一起食用了,因为你已经有一定practical的经验了,看起来不会那么干,如果你没写过一些代码直接去看太理论的东西我个人觉得效果不是很理想。Fluid engine development这本书最后讲的是粒子网格hybrid方法--FLIP,这是现在主流的一种方法,我最近也在基于openvdb实现这种算法(本来想自己实现基础的一些数据结构的,但是openvdb实在太香了)。
这里还要提一点就是数值算法。如果你要学simulation的话,我认为数值算法是必须要好好学的。后面我会贴看什么书、材料来学。这里讲讲为什么,我们PBA(physically-based animation)课的老师说的蛮好的,他说PBA本质和scientific computing解决的问题描述本质是很相似的,但是科学计算的人需要的是结果的精确,而图形学的要的是可控,好看。两个领域虽然解决问题方法可能不同,但是都有同样的基础就是数值算法。数值算法不学好,那你学simulation基础是不够扎实的。这里我举个例子,我在没学数值pde之前,看Fluid engine development 3.4.4.2 讲网格法中diffusion也就是流体粘性的stability,有一处没看懂。

这里μ是粘性系数,Δt是时间步长,Δx是网格分辨率。当你需要模拟粘性很大的液体比如说蜂蜜的时候,c就会很大,但是作者说这里c必须小于0.5如果你想保证计算的stability,他用了trangle filtering来解释,可能怪我悟性差点意思,反正我当时是没看懂的。直到我学了数值pde以后,我看书再看到这里的时候,我直接就可以用Von Neumann Stability analysis解释这里c为什么小于0.5。对于下面这个方程:

这里D就是上面的μ。如果时间积分用explict euler,空间微分用centeral difference scheme的话可以证明这里是条件stable的,条件就是c<0.5。这样的角度我觉得明显比书里作者介绍的要convincing多了。
数值方法的学习主要分成两部分,我们学校分成scientific computing1和2,1主要教numerical linear algebra、数值积分,pca这样一些东西。用的书是Introduction to Scientific Computing and Data Analysis by Mark H. Holmes,电子书我记得可以网上有的免费下。这本书讲的真的很好,通俗易懂。 2讲的就是数值偏微分了,fdm和fvm部分用的是mit开源课的材料,这个课的笔记抄棒,不上课直接看笔记都行。后面fem、边界元、谱方法都是老师手写授课,就没法分享了。但是不要灰心,还有一个资源 油管上MIT qiqi wang老师有完整的工科用的数值偏微分,就是按照MIT授课fdm fvm fem的逻辑来的,讲得超级棒,因为是随堂录的,顺序排的有点乱,但是边讲理论边教你实现,傻瓜式教学,我每看一个视频都会点个赞。
不知不觉写了这么多了,最后扯一些题外话。以前我想学图形学没有老师带也没人教,所以现在把自己认为可行的一些学习经验分享出来,供大家参考,希望对大家有帮助。严格来说,才读了一年研究生不到,只能算学了点皮毛,其实今天看到这个问题的时候第一反应是:我干嘛不提个问题叫《有一定基础以后如何进一步学习图形学》,凑成系列问题算了。


ok,不扯了,最后贴一些链接书单,看着用就可以:
Fluid engine development和pbrt这两书的配套代码确实很好,有一定基础了就可以看,但是我个人觉得不用去模仿,因为新手学习最主要先把算法撸出来,不用管其他的。这两本书的代码都做了很细致的抽象导致很难读,你直接学他的代码有点本末倒置了,反而容易把自己淹没在细节里,初学实现算法才是最重要的。但是可以看代码学习他的抽象,Fluid engine development代码我看的时候觉得抽象得很好,再看看自己写的垃圾真的嫌弃。


渲染的书我就不写了。是我rtr pbrt两本书不够厚,还是你飘了。
还有很好的两个回答:
https://computergraphics.stackexchange.com/questions/5152/progressive-path-tracing-with-explicit-light-sampling
https://computergraphics.stackexchange.com/questions/2316/is-russian-roulette-really-the-answer
学到path tracing时候有用,两个帖子都是带师级教学。其实渲染有问题可以多上stackchange的graphics板块,上面高人蛮多的。




simulation推荐一些我看过的材料(买了没看的先不贴上来,后面有时间看了我会补充):
学习基本的一些物理知识:
Classical Dynamics of Particles and Systems 质点动力学和刚体动力学,经典教材。
Vectors, Tensors and the Basic Equations of Fluid Mechanics 流体力学入门的,一个字,妙!
弹性力学的话,我买了书没看,但是需要要去网上看看视频文档之类的,把胡克定律从一维推广到三维的过程一定要搞懂,矩阵为什么对称,上CGI的网课的软体部分会很有帮助。
变分法搜youtube搜PengTitus,基础的一些部分给你整的明明白白。


学习c++:
efficient c++
c++ primer(工具书)
cuda c++ programming guide


数值:
MIT 数值偏微分开源课,03年的是工科版,09的是数学系版本,互补使用即可。
https://ocw.mit.edu/courses/aeronautics-and-astronautics/16-920j-numerical-methods-for-partial-differential-equations-sma-5212-spring-2003/lecture-notes/
https://ocw.mit.edu/courses/mathematics/18-336-numerical-methods-for-partial-differential-equations-spring-2009/lecture-notes/
Introduction to Scientific Computing and Data Analysis直接google搜吧,前几个有一个就是pdf,直接买太贵了,能省点是点吧。




siggraph course notes:
这里我就不贴了,硕鼠酱带佬那边有,实在不行网上搜好了,可以多翻,年年都是宝,前两天看turbulence topic的那个lecture notes我差点跪地上。




最最最后分享一个视频,是我上课期间实现的pci-sph,真正的从圣诞节写到清明节。本来想贴到github上的,但是因为写的代码跟屎山样的,自己看都费劲,就先不贴了,后面有时间整理一下再给大家参考。(折射部分有问题,不用ray tracing的话没法解决,因为折射本来就是用shader的trick实现的,看看就好,不必认真)。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-8-10 15:35 | 显示全部楼层
各位大佬说的很多了,但我也想说点关于渲染的东西,顺便推荐一下自己写的PBRT-零基础到完全吃透的系列书(网站免费下载,希望能在大家的建议和帮助下让系列书质量更加提高,来帮助更多的人)。
系列14和15已经完成,实现光线微分、纹理和体渲染:
PBRT系列书14和15
系列11和12已完成,关于实现完整的路径追踪器和微表面材质:
系列11和系列12
已经写完的系列书(正在校准勘误中)
《光追三部曲》Ray Tracing in One Weekend/One Week/The Rest of Life确实是很不错的光线追踪基础入门教材。配合虎书Fundamentals of Computer Graphics能打下一个很好的基础。
但要想真的做出点有趣的东西,一定得上更牛逼的引擎。这里我推荐PBRT,虽然书写得实在不适合阅读,但至少还有本书。(从图形学光线追踪入门到把PBRT主体吃透用了多久?至少我只用了半年,还是在主要精力放在自己的科研工作的前提下,所以相信大家很快就能接触到这本书)。
作为水平不够,全局动态IBL光照做不出来,也无法做出创新,快要打算退出渲染科研圈的人,我决定在6月前发布一个系列书,总标题就叫做《PBRT——从零基础到吃透系列》本系列书第一本已发布:https://dezeming.top/ 网站需要设置和备份,以及重新设置布局,需要等几天的时间
每本书大概也就两三天就能看完,加上自己动手实现,不会超过5天。而且除了第一本关于了解场景文件使用和PBRT结构的书,该系列的每本书完成之后都能渲染出一些有趣的图像,每本书最终能渲染出的图像都会作为本书的封面
已经写完的系列内容
PBRT系列书
我的习惯是用Latex或者博客上做非常全面的笔记,好处是查找知识点时非常方便。后来包括朋友和博客上问我的人多了,我就想,能不能换种方式,将笔记转换为一些小书,于是,这个系列的初版就诞生了。它和我以往的笔记都有不同,是以读者的角度展开的,风格类似于《光追三部曲》。为了写这个系列,我重新开始,从头到尾移植和实现PBRT引擎,因此,里面所有的内容都是可以复现的。
虽然我们的引擎是从《光追三部曲》开始构建,但从系列三开始,就已经完全剔除了《光追三部曲》中实现的全部内容,而是开始构建一个完全由PBRT实现的引擎。
当你能够一点一点构建,从原理到源码,直到把整个PBRT移植一遍以后,你就真正弄懂了PBRT引擎,自己实现一个同样优秀的引擎也并非难事。
虽然已经写完了9本,但是还得校验几遍才能发布,不然可能写错的内容会误导读者。校验应该就没有写书费时间了。
欢迎访问我的个人网站,该系列书都会发布在这个网站上(网站目前做得比较潦草,还请谅解)。
Dezeming Family

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-8-10 15:39 | 显示全部楼层
Upd 2020.08.20 : 今天pbrt-v4放出第一版啦,以下内容均指pbrt-v3。


现在(2020)来看,正如前面高赞的几位所说,零基础入门图形学最舒服的姿势就是GAMES的课程了。
pbrt(书)非要说的话是离线渲染入门,不是图形学入门。pbrt(书)对于零基础来说太重了,不好把握重心。从内容上来讲,pbrt(书)没有那么难,只是东西太多,比较散。不推荐直接拿来入门,但是不代表你入门的时候不能看它。你可以每过一段时间翻翻目录,看看你对每一章的认识有没有变化,如果你差不多能明白2-19章大致是要干嘛的了(可能在明白渲染方程之后?),你可以读一下你感兴趣的内容(跳着读)。书里面代码太多,读起来有时候感觉挺割裂的,当然了这其实算是feature。
如果你想入门离线渲染,留给你一个小建议:如果你不是过于执着于一个你自己的渲染器,或者说一个兴趣向的产品,那我不建议你重头写一个离线渲染器(smallpt这种级别不算)。
如果你为了学习,那么教育向挖空填代码的Nori2是一个很好的起点(Nori系实际上有三个,一个EPFL的,一个ETH的,一个Cornell的,Cornell这个是Nori的Java版,名字也改成了Wakame)。另一个教育向的代码是pbrt,Standford是拿它来上课的(当然也有原因是mmp是instructor之一)。
Nori和pbrt相比就是体量小,优点是,你可以比较容易地了解代码的每个部分都是干嘛的,魔改起来需要考虑的东西也少一些。缺点是,支持的东西少,不过为了教育目的其实是足够的,如果你魔改的东西多了,你需要改Nori的一些设计。
那么,用这两个代码做基础的大作业区别在哪,用Nori你努努力能在部分方面达到pbrt("复制"pbrt内容),再努努努努力能在部分方面超过pbrt(复现论文),其实不如直接在pbrt基础上加东西,能够集中精力在更有价值的事情上。
所以作为自学来说,推荐你用Nori完成日常作业,然后在pbrt的基础上复现一篇论文作为大作业,虽然Nori切换到pbrt上会需要一点点时间熟悉代码,不过这个难度其实不高。
这里没有提mitsuba,因为mitsuba即使是编译成功就能劝退很多零基础了,而且也不适合学习向。
回到开头,不推荐重头开始写的原因很简单,你如果花别人两倍三倍的时间去完成一件事,对你来说也算是"战略上的懒惰"。你也可以问问你自己,达到pbrt/blender/arnold的真子集和能够实现某个他们不支持的效果,哪个更吸引你。而且有多少人知道pbrt本身是不完善的,是留给书后作业空间的,又有多少人完成过其中一部分。
能够站在巨人的肩膀上是好事,这一次你可以选择依靠他人。(魔改了pbrt它就是你的渲染器了)
我也听别人说过"为了锻炼代码能力"这种理由,其实帮助非常小,而且如果你目的太多了也不好顾全大局。
如果你一定要完全自己写,给一个关于场景文件的建议。我见过包含场景最多的还真是pbrt的,另外有一个单独的pbrt_parser项目,你可以拿来用。mitsuba2有一个mitsuba2-blender项目可以把blender导出mitsuba2格式。Benedikt Bitterli有一些mitsuba格式的场景。usd的场景不是很了解,我也没怎么见过,nvidia好像有一个,usd自己有2个,apple有几个。obj+mtl的场景,Morgan McGuire有一些。luxcore/appleseed也有很多场景,而且他们都是自带blender导出的。总之能用现成的parser尽量就用,实在不行在parser改一点。你也可以自己有个场景文件格式,然后写几个converter把别的格式转过去。祝愿你不要在这种地方浪费太多时间。(wenzel有部分场景是他老婆给他造的,你有吗[狗头保命])
<a href="http://www.zhihu.com/zvideo/1279409051386789888" data-draft-node="block" data-draft-type="link-card">其实我不觉得入门离线渲染需要先入门计算机图形学,或者说他俩有什么定死的先后顺序,它俩的感觉更像是入门计算机图形学是在熟悉API,当然我其实也有点记不清最开始学习的感觉了。
图形学是一个大方向,如果可以我希望你尽可能多学点(render/simulation/geometry/...),CV的东西也可以算进来,把自己的路走宽。
发表于 2021-8-10 15:46 | 显示全部楼层
目前也正在学图形学的相关知识,我是真正的初学者,毫无图形学基础的那种,只有一点点的编程经验,綫性代數和微積分學過也基本忘光了那種。所以如果你是个完完全全的初学者,这个回答应该适合你的。当然,你的英语能力要能看懂简单的原版书籍和强烈的学习兴趣。如果你的英语能力不好,那就从现在开始看起,慢慢练,大部份书的英文都非常浅显易懂的。
就我的学习经历来说一说吧。先学习一些基本的数学概念比如3维坐标,旋转矩阵,投影等等,可以看
3D Math Primer for Graphics and Game Development, 2nd Edition这本书比较浅显易懂(后面你可以更深入的学习投影几何,仿射几何,傅里葉/小波變換等数学知识),然后看Peter Shirley写的那本
Fundamentals of Computer Graphics, Fourth Edition对图形学的各个分支有个大致的概念,书后列的参考文献,早期的一些论文也去翻翻,可以很好的开拓你的思路,能了解图形学需要哪些知识。在看书的过程中学习一下
OpenGL编程找找图形编程的感觉。然后可以看看CMU的這門課程
Computer Graphics課件做的蠻好的,清晰易懂,做一做上面的課程作業。再根据相应的分之继续学习吧,实时渲染方面的
Real-Time Rendering, Fourth Edition离线渲染方面的
From Theory to Implementation还有Glassner写的
Principles of Digital Image Synthesis也可以翻翻,这本书寫的很好,只需要微積分的基礎,主要集中在渲染背後的原理上,渲染背后的一些物理,視覺方面的知識,可以学到很多图形学所需要的数学知识,可以大大拓寬你的知識面。可以把書中reference中感兴趣的论文读一读,尝试着实现一下。动画,建模方面的SIGGRAPH上的course notes可以去看看,比如幾何方面的課程
CS 348a Main Page數值算法方面的
Mathematical Methods for Robotics, Vision, and Graphics需要學一些數學知識的時候可以上MIT的OCW上看看
Free Online Course Materials大致就这些了,到這大概就算入門了,後面的話就是遇到問題,缺什麽學什麽。
发表于 2021-8-10 15:51 | 显示全部楼层
计算机图形学主要研究如何使用数学算法在计算机中有效地表达、生成、处理以及显示相关图像图形。计算机图形学近年来被广泛应用于计算机辅助设计、虚拟现实、游戏、动画、影视特效等领域。

关于计算机图形学大体有7个主要研究的方向,人邮君建议,对于零基础学习计算机图形学的同学建议先选定一个主要研究的方向。
计算机图形学研究的方向分为:
    描述复杂物体图形的方法与数学方法物体图形描述数据的输入几何图形的存储物体图形数据的运算处理实时动画和多媒体技术物体图形数据的运算处理制定与图形应用软件有关的技术标准
这几个研究方向虽然都是解决在计算机中有效表达和处理三维世界的属性的问题,但是各个方向之间学习内容的差异还是很大的。
这里给准备入门或者刚入门计算机图形学的同学推荐这本《计算机图形学编程》,这本书以C++和OpenGL 作为工具,比较全面地依次介绍了:OpenGL 图像管线、图形编程数学基础、管理3D 图形数据、纹理贴图、3D 模型、光照、阴影、天空和背景、增强表面细节、参数曲面、曲面细分、几何着色器等计算机图形学的基础和准备工作类的内容。
同时,作者对计算机图形学的几个研究方向进行了介绍,可以称之为【一本计算机图形学的地图工具型书籍】,非常适合新入门的同学了解计算机图形学的基础内容。
如果看完了《计算机图形学编程》,确定自己不是三分钟热度,明确了这是自己努力的方向,之后的阶段我认为比较重要的是根据计算机图形学的研究方向,有针对地提升自己的基础能力。
例如物理学中的力学(流体力学,运动学,动力学),例如数学中的拓朴、差值理论、微分几何,例如图形学的数据结构,以及非常非常重要的计算机编程语言例如C或C++的学习。
这些基础能力都是计算机图形学的基本框架,而对于编程语言零基础的同学最重要的是编程语言的学习。C或C++可以算作是计算机图形学中的普通话,是学习计算机图形学最最基础的能力。对于编程语言零基础的同学,人邮君建议看看《C++ Primer Plus(第6版)中文版》这本书。
这本书通过大量短小精悍的程序详细而全面地阐述了 C++的基本概念和技术,并专辟一章介绍了C++11新增的功能,并配有丰富的配套资源,非常适合小白入门。
如今三维数据的日益增多,让机器通过分析三维数据来理解物理世界的方向正在迅速崛起。随着深度学习尤其是卷积神经网络(CNN)在各领域的多项突破,如何将CNN运用到三维数据目前是计算机图形学研究的重要课题。
已经在计算机领域有一定基础,并且致力于在此方向进行探索的同学,推荐阅读《深度学习》这本书。
在理解机器学习在计算机图形学的应用后,再细细学习《深度学习》的内容,这样能够保证在快速理解的情况下,不缺失深度学习的底层原理。
另外向大家推荐中国农业大学的线上计算机图形学课程,在读完计算机图形学的书籍后,跟随课程能够快速入门计算机图形学的内容。
祝对此方向有志向的同学能够在此领域有所建树。
关联阅读

<a href="http://www.zhihu.com/question/375640180/answer/1620708795" data-draft-node="block" data-draft-type="link-card" data-image="http://pic2.zhimg.com/v2-905bb346af5546905d0eae5178eeb7ad_ipico.jpg" data-image-width="800" data-image-height="800" class="internal">在 2020 年,为什么还会把《C primer plus》推荐给小白?求推荐计算机图形学,渲染,shader方面的入门书籍?想要自己做一款游戏,需要学习哪些知识?========
赠人玫瑰,手留余香,不要忘记点赞、收藏、关注 @人民邮电出版社 哦~
一键三连,感恩有你~

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-8-10 15:53 | 显示全部楼层
第一步,打基础。任何知识都是积累而成的,不可能只看一本书、一个教程就能掌握。
如果有某种途径告诉你零基础能学会,那么该途径不是在通过打基础慢慢积累,就是在骗人。

拿出你的课本,看看读者要求,一般会告诉你需要什么准备知识。到对应领域去找最经典教材,继续看看需要什么准备知识。以此回溯,直到能看懂。

最起码的,先要具备基本的线性代数、空间几何和编程能力。
发表于 2021-8-10 16:02 | 显示全部楼层
推荐收看我录的光线追踪、路径追踪相关的教程视频:
光线追踪图形学课程
本系列课程讲解“光线追踪”、“路径追踪”相关的技术点,给出数学推导,用伪代码表示算法框架和思路,并最终基于我的Wonder.js引擎实现,给出实现代码。


另外可以阅读Web 3D的相关资料的资料分享:
wonder-yyc:分享收集的Web 3D学习资源感谢你的阅读~有问题可加我QQ群:106047770,为你服务~
发表于 2021-8-10 16:07 | 显示全部楼层
看了很久的 pbrt第三版 ,我越来越觉得图形学吃力是因为数学没学好。我认为需要先看如下的课程,才能解决看 pbrt第三版 很吐血的问题(按顺序看):
【麻省理工公开课】单变量微积分_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili麻省理工公开课 多变量微积分 Denis Auroux_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili【完整版-麻省理工-线性代数】全34讲+配套教材_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili【MIT公开课】RES.6-012 概率导论 · 2018年春(完结 · 英文字幕)_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili斯坦福 傅立叶变换及其应用 (Stanford EE 261, The Fourier Transforms and its Applications)【英】_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili-------------------------分割线-----------
网上有很多很好的图形学课程,也有很多很好的经典的图形学书籍,但是最大的问题是没办法讲清楚里面的数学,默认你数学很好。看了之后仍然稀里糊涂的。
比如 pbrt第三版 里面的一章讲傅立叶变换的,寥寥几页就讲完了,没有学过的根本看不懂。如果有时间,建议从数学基础开始打,一劳永逸解决问题。
有很多图形学的书,你只要有中学数学水平,就能看懂。这种书基本上讲一下向量,讲一下矩阵就直接进入图形学了。我认为这种书看似捷径,但最终你还是得回头补数学的。
我认为,图形学其实不应该算作计算机系的课程,应该算作数学系的课程。
发表于 2021-8-10 16:07 | 显示全部楼层
为什么大二了还零基础?这才是最关键的。如果是你不努力,知道如何学也没用。图形学是各个分支里最需要编程能力和代码积累的,不花时间和精力出不来。先解决这个吧。
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-24 04:25 , Processed in 0.096482 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表