说明
学习 AR 的过程中,其实绕不开计算机图形学。
如果熟悉 OpenGL,可以直接找 OpenGL 与图形学相关书籍;如果熟悉 Unity,可以直接找 Unity 与图形学相关书籍;如果都不熟悉,可以去看 GAMES101 现代计算机图形学入门主讲老师:闫令琪。
对于 iOS 开发者来说,了解图形学的基本知识后,还需要学习相关算法:3D 数学,和相关 API:Metal。这里我就来说说我觉得不错的 3D 数学与 Metal 相关书籍。
Metal
关于 Metal 的书籍非常少,感觉写得全面且不断更新的就是 Raywenderlich 家的 Metal by Tutorials。
知乎上有部分中文版:Metal 入门学习
这本书的好处是:带着你从 0 开始,用 Metal 写出一个极简的 3D 渲染引擎。同时还介绍了 MPS(Metal Performance Shaders),以及与 SceneKit 和 SpriteKit 的结合使用。
缺点是:比较侧重于 API 的使用,没有对图形学和 3D 数学进行过多讲解。
关于 Metal 在 ARKit、RealityKit 中的使用,也可以看我的专栏文章,主要讲解 Metal Shader 入门,及在 ARKit、RealityKit 中的使用:
3D 数学
3D 数学基础方面推荐3Blue1Brown的视频:线性代数的本质,B 站上有中文字幕和翻译。 除了视频,还有下面几本书值得学习,需要注意的是,普通开发者并不需要完全掌握书上的全部内容,了解基础知识更重要:
- 《计算机图形学几何工具算法详解》
- 《3D游戏与计算机图形学中的数学方法》 第3版
- 《3D数学基础图形与游戏开发》 第2版 (一定要买第二版!!!)
- 《计算机图形学——几何体数据结构》
几何工具算法详解 | 3D 游戏与图形学中的数学方法 | 3D数学基础图形与游戏开发 | 几何体数据结构 | |
---|---|---|---|---|
优点 | 2D、3D 算法有插图 | 数学与 3D 引擎结合,推荐 | 数学与 3D 引擎结合,强烈推荐! | 侧重几何体,树与图 |
缺点 | 偏数学,与图形学结合太少 | 内容多,但不够详细 | 内容多又详细,但太厚了 | 艰深,入门用不到 |
推荐指数 | ★★ | ★★★★ | ★★★★★ | ★★ |
3D 数学知识学习起来,确实枯燥乏味,比刷 LeetCode 还艰难。不过好处是,只要掌握入门知识,熟悉向量和矩阵运算,就足以应付一般的开发工作了。毕竟,3D 引擎和框架帮我们处理大部分复杂过程。
对于这几本书中讲解的一些基础知识,比如向量和矩阵运算,我总结了一系列文章,用 Swift 实现了其中的若干算法,并配有插图和讲解: ARKit 与计算几何 ARKit 与计算几何
如果实在看不进去数学书,可以去看我的文章,为方便大家理解,其中配图很多,如下: