3Dゲームエンジンのプログラミングには、通常、どのような数学が必要かを知りたいのですが。特定の数学(ベクトルジオメトリなど)または計算アルゴリズム(高速フーリエ変換など)、またはこれはすべてDirectX / OpenGLで抽象化されているため、非常に複雑な数学はもう必要ありませんか?
4 に答える
線形代数!たくさんの線形代数!
ここにあなたがそれらを必要とするクラスと例の状況があります
- ベクトル-位置、速度、法線
- マトリックス-変換
- クォータニオン-回転(ボーンアニメーションに最適)
- 光線-発射物の衝突検出
- 飛行機-発射物の衝突検出
- 錐台-カリングをレンダリング
- 球体-レンダリングカリング、高速衝突テスト
- Axis-Align Bounding Box-カリング、衝突テスト、空間分割
- OrientedBoundingBox-衝突テスト
- 凸包-衝突、空間分割
- 等
ベクターとマトリックスはエンジンのあらゆる場所(グラフィックス、物理学、AIなど)で使用されるため、最初から始める必要があります。
行列、三角法、幾何学、そして少しの線形代数
ほとんどの場合、線形代数と計算幾何学。クォータニオンは広く使用されており、物理エンジンで作業している場合は数値解析が必要です。
日常的にどれだけのものを使用するかは、何をしているかによって異なります。あなたがグラフィック プログラマーであり、したがって 3D グラフィック エンジン自体を構築している場合、実際に計算を行うクラス ライブラリと関数の実装を実装または維持している可能性が高いため、詳細を知ることは比較的重要です。ライブラリをクライアントとして使用している場合、またはゲーム エンジンの別の部分 (AI、オーディオ、UI、カメラなど) で作業している場合は、数学を概念的に理解する必要がありますが、実装方法を知らなくても問題は解決します。頭のてっぺんにあるホワイトボードの逆行列。
グラフィックス API を使用しても、誰かがこの計算を知る必要がなくなるわけではありません。それらは描画に限定されているため、すべてのシーン管理とワールド シミュレーションはグラフィックス API の外部で実装する必要があります。もちろん、ミドルウェアのオプションもありますが、多くのスタジオは独自のシステムを開発しています。
この市場を対象としたかなりの数のリソースがあります。たとえば、Amazon には3D Math Primer For Graphics and Game Developmentのような本があり、おそらくオンラインにもたくさんのものがあります。
複雑な数学が登場しますが、最も重要なのは、そのような数学の背後にある概念を理解することであり、多くの場合、数学自体ではありません。すべてがどのように組み合わされるかを理解している限り、必要な計算の多くにはヘルパーメソッドがよくあります。もちろん、それは使用している開発プラットフォームにも大きく依存します。