计算机图形学(渲染方向)学习全攻略

您所在的位置:网站首页 建模跟渲染 计算机图形学(渲染方向)学习全攻略

计算机图形学(渲染方向)学习全攻略

2024-03-17 11:59| 来源: 网络整理| 查看: 265

博主以前是打算做计算机视觉的,但是出于好奇,不幸进入了图形学的大坑。在学图形学中,有一些经验和方法,与大家分享一下。

这个博客文章我会不断进行更新,将适合的资料学习顺序进行总结。

准备阶段(一般是刚入大学的大学生)

首先需要学习编程语言,这里主要指C/C++,C++语言是图形学的基础编程语言,是绝对绕不开的。

入门编程书:

建议的阅读顺序:The C Programming Language->C primer plus -> C++ primer 

推荐顺序理由:第一本书最简洁,例子和解释也都非常好,建议认真阅读,把里面每个程序都写一遍,然后一本一本地来读。

C primer plus可以零基础阅读,但是鉴于比较厚,还是放在第一本书后面读比较好。

C++ primer是需要有一定编程基础才能开始啃的,千万不要听别人瞎建议一上来就啃C++primer,这本书序言部分也说过,假定读者有编程的基础。C++ primer阅读的时候建议列一个提纲,将阅读过的内容目录整理一下,经常回顾,否则你很有可能学完一遍以后不知道自己学了什么,甚至学了一半就学不下去了。

《数据结构与算法》,虽然很多时候我们意识不到数据结构的重要性,但现代的图形学代码资源一般都充斥了大量的数据结构,比如堆栈和树,没有专门学习过数据结构是很难快速掌握一些原理的。

需要具备的数学知识:

高等数学,线性代数,概率论,复变函数(会一点就好,以后再慢慢拓展)

但是强烈建议在科研和学习中,每天抽固定的一两个小时来学习数学知识:高等代数、数学物理方法、信号与系统、随机过程、离散数学、数学分析、数值分析等科目都是图形学必备的数学基础,如果每天拿出一两个小时来学习这些东西,有针对性目的性地学习一下,经常做点题练习一下,用不了两年,你就会真的变成能够利用数学来解决问题的人。

数学能力和编程能力是将高手和一般人区分开的唯一标准。

开始阶段(可以和准备阶段一起学习)

首先建议先学习光栅技术主导的渲染技术,因为毕竟目前游戏领域还是光栅为主导的,光栅学会了,对GPU管线等理解都有很多好处。当然也可以从光线追踪开始学起,其实差不太多。

有很多大佬说最好一上来自己做光栅引擎,这个见仁见智,我个人的想法是还是先学习一下主流的图形学编程方法,然后再自己动手做。

在学习前,可以在B站上看一下闫令琪大佬的计算机图形学入门,有个初步的认识:

GAMES-Webinar的个人空间_哔哩哔哩_Bilibili

图形学三大方向:仿真、渲染、建模都可以简单了解了解。讲真,一开始别人说起这个比较新的课程时我个人是带着有色眼镜去看待的,我不太相信图形学可以用视频来教学。但是不得不说这里面的内容还确实不错,很适合初学者学习了解,但是不要指望看个视频就能把所有理论公式都学会,仅当了解图形学里面有什么内容。

接下来的学习顺序:Learning OpenGL -> RayTracing in one weekend等三本书(Peter Ray tracing 三部曲)

每个都要从头到尾学两遍以上,再考虑进入下一阶段。

之后再学习这个小教程:Home · ssloy/tinyrenderer Wiki (github.com)

这个教程有两个部分需要学习,一是光线追踪器,二是光栅器。学习一下基本原理,还可以对上面的光线追踪三部曲的书中实现的代码进行一下统筹和优化

同时学习一下CUDA编程的方法:

《CUDA by Example.An Introduction to General-Purpose GPU Programming(特别简单,适合入门)》然后可以买一本《The CUDA Handbook(比较难,但是很全面)》用来当参考手册。

提高阶段

这个阶段可以看的书有很多,在进入这个阶段之前,确保自己真正学会了Learning OpenGL和光追三部曲这些教程里的内容。然后,就是圣经了:

成神必备之书,尽量全都读完,重点是实践,一定要自己编程操作一下。阅读顺序为,先读完一二三四章,然后剩下的一边优化自己的引擎一边学习,或者用到哪里学哪里。

对于图形学来说,离线和实时渲染没必要完全分得那么清楚,放在一起学最好。

《realistic-image-synthesis-using-photon-mapping》

《Spherical Harmonic Lighting:The Gritty Details》

《Robust Monte Carlo Methods for Light Transport Simulation》

《Real-Time Rendering 4th Edition》

《Advanced Global Illumination》

这些书可以从头到尾阅读和实验(相信我,图形学你不自己做实验基本上坚持不下来),也可以根据兴趣阅读,《Robust Monte Carlo Methods for Light Transport Simulation》是比较早的论文,但是非常经典,最佳博士论文。

(2023.9.6 补充:科研人员,如果不是来自图形学大组且没有导师指导,不建议学习BDPT和MLT等复杂算法,学了你也发不出什么论文,学神经渲染或者可微渲染或者nerf,水个论文毕业要紧)

我写的一个《PBRT》从零到全部吃透的系列电子小书,目前已经完成,发布在了我们的网站上:PBRT基础理论与代码实战 – Dezeming Family  教读者一步一步从零开始,不但掌握源码,还能自己构建一个PBRT引擎。同时我还在写这套系列书的续集——《PBRT——专业知识理论与代码实践》系列,将里面涉及的原理讲透彻。

基础巩固阶段

《Fundamentals of computer graphics steve-marschner》

是时候回来复习一下基础了。这本书不太建议从头到尾读,可能会比较枯燥,没事的时候翻一番,用到的时候仔细看就好。

之所以不把基础入门书放在最前面,主要是因为你阅读它并不能自己做出来一些好玩的demo,会使图形学学起来非常枯燥。

专业阶段

《GPU Germs》《GPU Pro》

《RayTracing Gems》

《各种论文……》

这个时候就不要从头到尾地学了,研究什么方向就去学什么方向就好了。尤其是对于一般院校的研究人员,在缺乏大佬指导以及缺乏同行交流的前提下,是没有多少时间和精力全都弄懂的。

各种论文之类的都根据自己的方向着重学习,找几篇文献综述,把里面的论文一篇一篇阅读完,建立在自己方向的基础,比如博主本人是医学影像体渲染方向,主要就是各种体渲染算法及其优化算法,以及先进的全局光照技术。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3