用于3D(游戏)引擎编程的数学

Ale*_*lex 24 math game-engine

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

Ale*_*eks 19

线性代数!大量的线性代数!

以下是您需要它们的类和示例情况

  • 矢量 - 位置,速度,法线
  • 矩阵 - 转换
  • 四元数 - 旋转(非常适合骨骼动画)
  • -抛射碰撞检测
  • 平面 - 弹丸碰撞检测
  • Frustum - 渲染剔除
  • 球体 - 渲染剔除,快速碰撞测试
  • 轴对齐边界框 - 剔除,碰撞测试,空间划分
  • 定向边界框 - 碰撞试验
  • 凸壳 - 碰撞,空间分割
  • 等等

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


Mar*_*ett 18

矩阵,三角形,几何几何和一些线性代数

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

  • 和矢量,很多矢量! (5认同)
  • 向量是一阶张量 - 没有"摆脱"它们有利于张量. (5认同)

小智 6

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

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

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

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