web-dev-qa-db-ja.com

3D(ゲーム)エンジンプログラミングで使用される数学

3Dゲームエンジンのプログラミングには、通常、どのような数学が必要かを知りたいのですが。特定の数学(ベクトルジオメトリなど)または計算アルゴリズム(高速フーリエ変換など)、またはこれはすべてDirectX/OpenGLで抽象化されているため、非常に複雑な数学はもう必要ありませんか?

25
Alex

線形代数!たくさんの線形代数!

ここにあなたがそれらを必要とするクラスと例の状況があります

  • ベクター -位置、速度、法線
  • マトリックス -変換
  • クォータニオン -回転(ボーンアニメーションに最適)
  • レイ -発射体の衝突検出
  • 飛行機 -発射体の衝突検出
  • 錐台 -カリングをレンダリングします
  • -レンダリングカリング、高速衝突テスト
  • 軸-境界ボックスの位置合わせ -カリング、衝突テスト、空間分割
  • 指向性バウンディングボックス -衝突テスト
  • 凸包 -衝突、空間分割
  • 等.

ベクトルとマトリックスはエンジンのあらゆる場所(グラフィックス、物理学、AIなど)で使用されるため、最初から始める必要があります。

20
Aleks

ほとんどの場合、線形代数と計算幾何学。クォータニオンは広く使用されており、物理エンジンで作業している場合は数値解析が必要です。

毎日どれだけの量を使用するかは、何をしているかによって異なります。グラフィックプログラマーであり、したがって3Dグラフィックエンジン自体を構築している場合は、実際に数学を実行するクラスライブラリと関数の実装を実装または維持する可能性が高いため、厄介な詳細を知ることは比較的重要です。ライブラリをクライアントとして使用している場合、またはゲームエンジンの別の部分(AI、オーディオ、UI、カメラなど)で作業している場合は、数学を概念的に理解する必要がありますが、実装方法がわからなくても確実に回避できます。頭のてっぺんから離れたホワイトボード上の逆行列。

グラフィックAPIは、誰かがこの数学を知る必要性を排除するものではありません。これらは描画に限定されているため、すべてのシーン管理とワールドシミュレーションはグラフィックAPIの外部で実装する必要があります。もちろん、そこにもミドルウェアのオプションがありますが、多くのスタジオは独自のシステムを展開しています。

この市場をターゲットにしたかなりの数のリソースがあります。たとえば、Amazonには グラフィックスとゲーム開発のための3D数学入門書 のような本があり、おそらくオンラインにもたくさんのものがあります。

4
Whomever

複雑な数学が登場しますが、最も重要なのは、そのような数学の背後にある概念を理解することであり、多くの場合、数学自体ではありません。すべてがどのように組み合わされるかを理解している限り、必要な計算の多くにはヘルパーメソッドがよくあります。もちろん、それは使用している開発プラットフォームにも大きく依存します。

2
Nathan Taylor