2009-08-24 5 views
17

J'aimerais avoir une idée du type de mathématique généralement nécessaire pour la programmation du moteur de jeu 3D? Des mathématiques spécifiques (telles que la géométrie vectorielle) ou des algorithmes de calcul (tels que les transformations de Fourier rapides), ou tout cela est-il abstrait avec DirectX/OpenGL, de sorte que les mathématiques complexes ne sont plus vraiment nécessaires?Mathématiques utilisées dans la programmation du moteur 3D (jeu)

+1

3D La programmation graphique nécessite une bonne compréhension de l'algèbre linéaire. [Tutoriel de mathématiques vectorielles pour 3D Computer Graphics] (http://chortle.ccsu.edu/vectorlessons/vectorindex.html) est de loin la meilleure ressource pour l'apprentissage des vecteurs et des matrices. Il est également interactif en ce qu'à la fin de chaque section il y a une question de test pour vérifier et sceller la compréhension de ce sujet. – legends2k

+0

Cette question doit être déplacée vers l'un des autres sites Stack Exchange, tels que Game Development ou Math. (Je ne sais pas si c'est vrai, car cette question inclut la programmation) – Andreas

Répondre

14

Matrices, trig, la géométrie la plupart du temps et un peu d'algèbre linéaire

Jetez un coup d'oeil ici http://www.essentialmath.com/

+5

Et les vecteurs, beaucoup de vecteurs! – Marius

+2

Tant de vecteurs ... :( –

+0

En fait, vous pouvez vous débarrasser des vecteurs, et il y a certains avantages importants: les tenseurs sont plus agréables à travailler – ima

1

mathématiques complexes entre en jeu, mais le plus important est la compréhension des concepts sous-jacents tels mathématiques et souvent pas le calcul lui-même. Tant que vous comprenez comment tout cela va de pair, il existe souvent des méthodes auxiliaires pour de nombreux calculs dont vous aurez besoin. Bien sûr, cela dépend en grande partie de la plate-forme de développement que vous utilisez également.

+0

Avez-vous une suggestion pour savoir où apprendre les concepts et comment ils s'appliquent à la programmation de jeux. trouver des sauts dans l'enseignement/comment/faire les maths et non/quand/vous devriez l'utiliser – TheGeoff

+0

@TheGeoff: la programmation graphique 3D nécessite une bonne compréhension de l'algèbre linéaire. [Tutoriel de mathématiques vectorielles pour 3D Computer Graphics] (http://chortle.ccsu.edu/vectorlessons/vectorindex.html) est de loin la meilleure ressource pour l'apprentissage des vecteurs et des matrices. Il est également interactif en ce qu'à la fin de chaque section il y a une question de test pour vérifier et sceller la compréhension de ce sujet. – legends2k

4

Algèbre linéaire et géométrie algorithmique pour la plupart; Les quaternions sont largement utilisés et l'analyse numérique est nécessaire si vous travaillez sur un moteur physique.

La quantité que vous utiliseriez quotidiennement dépend de ce que vous faites. Si vous êtes un programmeur graphique, et donc la construction du moteur graphique 3D lui-même, alors vous implémenteriez ou maintiendriez des implémentations de bibliothèques de classes et des fonctions qui font réellement le calcul, donc il serait relativement important de connaître les détails sanglants. Si vous utilisez la bibliothèque en tant que client ou travaillez sur une autre partie du moteur de jeu (IA, audio, UI, caméra, etc.), vous devrez comprendre les mathématiques de manière conceptuelle, mais vous pouvez certainement vous en passer. une matrice inverse sur un tableau blanc du haut de votre tête.

Les API graphiques n'éliminent pas le besoin pour quelqu'un de connaître cette mathématique; ils sont limités au dessin, donc toute la gestion de scène et la simulation du monde doivent être implémentées en dehors de l'API graphique. Bien sûr, il existe également des options de middleware, mais de nombreux studios développent leurs propres systèmes.

Il existe un bon nombre de ressources ciblées sur ce marché. Par exemple, sur Amazon il y a des livres comme 3D Math Primer For Graphics and Game Development, et il y a probablement beaucoup de choses en ligne aussi.

16

Algèbre linéaire! Beaucoup de lots d'algèbre linéaire!

Voici quelques classes et des situations d'exemple où vous les avez besoin

  • Vector - position, la vitesse, normals
  • Matrice - transformations
  • Quaternion - rotations (grands pour les os animations)
  • Ray - détection de collisions de projectiles
  • Avion - détection de collision de projectile
  • Frustum - rendre culling
  • Sphère - rendre culling, test de collision rapide
  • Axis-Align Boîte englobante - abattage, des tests de collision, le partitionnement spacial
  • Boîte de jonction orientée - essais de collision
  • Convex Hull - collision, le partitionnement spacial
  • etc.

Vous devriez commencer par Vector et Matrix, car ils seront utilisés partout dans le moteur (graphiques, physique, AI, etc.)

+0

On dirait que la plupart se déplacent et détectent les collisions. –

Questions connexes