通过书籍学习C ++和面向对象编程绝对没有问题。但是,我真的很想进入3D游戏开发,但我觉得我的数学技能还不够发达。我想了解点积,交叉积,法线,向量等。我也听说微积分对此也是非常重要的,以及线性代数。
我也希望能够理解如何实现fustrum剔除,八叉树,3D照明等。因为现在,当我按照教程进行这些操作时,我觉得我只是在复制代码而根本没有理解底层数学。
不幸的是,我在大学里所做的计算机科学课程并不专注于数学,而是专注于编程,硬件和网络。因此,我从未参加过微积分课程。
理解这些概念的书是什么?
由于
答案 0 :(得分:6)
Dave Eberly(http://www.geometrictools.com/)的任何书籍,如“3D游戏引擎设计”或“3D游戏引擎架构”都可以找到与3D游戏开发直接相关的信息。他的网站也包含大量信息。
另一个浮现在脑海中的是Realtime Rendering书。 (http://www.realtimerendering.com/)网站本身又包含大量信息。
我能给你的最好建议是应用你所读的内容。一旦你理解了这个理论,看到这些概念就会让你更加掌握这个主题。
答案 1 :(得分:5)
“OpenGL红皮书”从一个非常适用的角度来看有一些好东西:http://www.amazon.com/OpenGL-Programming-Guide-Networking-Technology/dp/0321173481
相反的结果,如果你想能够坐下来为半抽象问题找到自己的解决方案,这是一本很棒的线性代数书:http://www.amazon.com/Linear-Algebra-Applications-Differential-Equations/dp/0471174211
“当我按照教程进行这些操作时,我觉得我只是在复制代码”
很难在大学环境中取代被迫做数学问题的压力......你必须提高自己的收益,并放松地想要在代码中做一些复杂的工作。选择一些非常简单的东西,例如绘制XYZ轴和可视化矩阵变换,并在没有任何API调用的情况下从math / scratch进行。
答案 2 :(得分:3)
3D游戏编程和计算机图形学数学。
我不时使用这本书,因为它涵盖了所有线性代数,用于计算三维计算。从洛杉矶的基础知识到变换,几何,光线追踪,光照数学,可见性,碰撞检测(棘手的部分)以及更高级的主题,如线性/旋转物理,流体模拟和多边形技术。
它的重点是理解实施的数学。
答案 3 :(得分:2)
我发现的非常好,我仍然不时地回到它,以便更新 是3D Math Primer for Graphics and Game Development。关于微积分和线性代数,我发现非常有利于回归大学课程记忆Khan Academy的资源......有时候它会对事物提出一个很好的实践观点 有一个真正的才能,使主题有趣和娱乐。
答案 4 :(得分:0)
你会找到一本很棒的线性代数书。查看此问题以获取有关书籍和免费在线课程的建议:
Books & resources to teach myself Linear Algebra
麻省理工学院在www.academicearth.org上提供了一个很棒的课程: