27

我想知道 3D 游戏引擎编程通常需要什么样的数学?任何特定的数学(例如矢量几何)或计算算法(例如快速傅立叶变换),或者这一切都被 DirectX/OpenGL 抽象出来了,因此不再需要高度复杂的数学?

4

4 回答 4

21

线性代数!很多很多线性代数!

这只是您需要它们的类和示例情况

  • 矢量- 位置、速度、法线
  • 矩阵- 变换
  • 四元数- 旋转(非常适合骨骼动画)
  • Ray - 弹丸碰撞检测
  • 平面- 弹丸碰撞检测
  • Frustum - 渲染剔除
  • Sphere - 渲染剔除,快速碰撞测试
  • Axis-Align Bounding Box - 剔除、碰撞测试、空间分区
  • 定向边界框- 碰撞测试
  • Convex Hull - 碰撞,空间分割
  • 等等

您应该从 Vector 和 Matrix 开始,因为它们将在引擎中的任何地方使用(图形、物理、AI 等)

于 2010-01-23T11:17:48.890 回答
20

主要是矩阵、三角函数、几何和一些线性代数

看看这里http://www.essentialmath.com/

于 2009-08-24T03:51:36.603 回答
6

大部分是线性代数和计算几何;四元数被广泛使用,如果您正在使用物理引擎,则需要进行数值分析。

你每天会使用多少东西取决于你在做什么。如果您是一名图形程序员,并因此构建 3D 图形引擎本身,那么您可能正在实现或维护实际执行数学运算的类库和函数的实现,因此了解血淋淋的细节相对重要。如果您将库用作客户端或在游戏引擎的另一部分(AI、音频、UI、相机等)上工作,那么您将需要从概念上理解数学,但您当然可以避免不知道如何实现头顶白板上的逆矩阵。

图形 API 并没有消除人们了解这个数学的需要;它们仅限于绘图,因此所有场景管理和世界模拟都需要在图形 API 之外实现。当然,也有中间件选项,但许多工作室推出自己的系统。

有相当数量的资源针对这个市场。例如,在亚马逊上有诸如3D Math Primer For Graphics and Game Development之类的书籍,网上可能也有很多东西。

于 2009-08-24T04:21:37.307 回答
2

复杂的数学发挥作用,但最重要的是理解这种数学背后的概念,而不是数学本身。只要您了解这一切是如何结合在一起的,通常会有许多您需要的计算的辅助方法。当然,这在很大程度上也取决于您使用的开发平台。

于 2009-08-24T03:59:49.223 回答