《计算机图形学编程》笔记——第一章

  • 入门
    • 要求
    • 开源代码
    • 引用

入门

嗨,各位读者朋友们好,最近由于看到图形学有很多好玩的东西,于是想着尝试一下入门学习相关知识。图形学的用途非常推荐各位小伙伴看一下胡渊明博士的GAMES201第一讲:GAMES201:高级物理引擎实战指南2020,概述就介绍得非常好,笔者当初看了这一讲以后对图形学产生了浓厚的兴趣,无奈笔者三天打鱼两天晒网。。。

遗憾的是,看完第一讲后,后续的内容专业性就比较高了,对于流体力学等没什么研究的笔者来说要求太高,无奈只能从更基本的课程开始看。后来发现其实国内有一个维护得比较好的图形学论坛:计算机图形学与混合现实研讨会,这个论坛会定期做技术分享,在此看到了更加经典的课程:闫令琪老师的GAMES101-现代计算机图形学入门。闫老师对于知识的讲解深入浅出,非常适合初学者。同时,如果配合虎书:《Fundamentals of Computer Graphics》一起食用会更加美味。

另外,GAMES101会配有编程作业,相关资源网上也可以获取。但是可能对于入门选手来说,直接上一个这样的内容,会有点吃力,毕竟没有系统的学过c++/opengl,于是笔者退而求其次选择了一本编程书:计算机图形学编程,粗略了学习了一遍。笔者也不求精通,但是至少知道编程的流程,还有各个相关的函数怎么用,对于后续看系统的框架会有所助益。

要求

图形学对于编程和数学的要求非常高,特别是对于动画和模拟等,需要研究很多物理模型等。而常用的图形学编程语言是C++,因为OpenGL调用库是基于C语言开发的,本质上和C++是同源,因此基于C++结合OpenGL写代码,比较方便,尽管C++非常难。

值得注意的是,在开始写代码之前我们还需要安装相关的依赖项,或者说工具库。由于我们需要用OpenGL,着色器语言GLSL,窗口管理程序GLFW,甚至是GLUT。所以我们需要先安装一遍,这个过程是非常简单的。

# opengl
sudo apt-get install libgl1-mesa-dev
# glew
sudo apt-get install libglew-dev
# glfw
sudo apt-get install libglfw3-dev
# optional
sudo apt-get install freeglut3-dev

值得注意的是,OpenGL提供了数学库,即GLM,对于位姿变换的计算比较方便,不过赋值的时候有一些需要注意的地方,这块儿第三章会介绍。

将上面的库装完,我们就可以开始写代码了。课本提供了完整的参考代码,我们可以非常简单地实现可视化效果,得到反馈。

开源代码

由于作者在书本上提供了相关的链接资源,但是出于对版权的尊重,笔者还是不提供相关的源码链接了,非常建议读者朋友们购买书籍:计算机图形学编程来获取代码。

作者提供的代码主要是在Windwos和Mac上运行的程序,因此没有CMakeLists.txt的代码。为了方便在Linux下运行,笔者对每一章进行了封装,此外,每一章提供了README.md介绍代码运行的结果,此外还有附图。

代码地址: yepeichu123 /cg_book_practice 。

为了在README.md中提供可视化的结果,笔者将OpenGL窗口中的内容转换成OpenCV可以存取的图像格式。因此,若是要调用相关函数,需要读者朋友们安装OpenCV,笔者用的是Opencv3.2.0版本。如果觉得麻烦,可以将该函数和CMakeLists.txt中的内容注释。

引用

[1] GAMES201:高级物理引擎实战指南2020
[2] 计算机图形学与混合现实研讨会
[3] GAMES101-现代计算机图形学入门
[4]《Fundamentals of Computer Graphics》
[5] 计算机图形学编程
[6] yepeichu123 /cg_book_practice

更多推荐

《计算机图形学编程》笔记——第一章