Математика, используемая в 3D (Game) Engine Programming - PullRequest
24 голосов
/ 24 августа 2009

Я хотел бы получить представление о том, какая математика обычно необходима для программирования движка 3D-игр? Любая конкретная математика (например, векторная геометрия) или алгоритмы вычислений (например, быстрые преобразования Фурье), или это все абстрагировано от DirectX / OpenGL, так что очень сложная математика больше не нужна?

Ответы [ 4 ]

19 голосов
/ 23 января 2010

линейная алгебра! Много много линейной алгебры!

Вот только классы и примеры ситуаций, в которых они вам нужны

  • Вектор - положение, скорость, нормали
  • Матрица - преобразования
  • Quaternion - вращения (отлично подходит для анимации костей)
  • Луч - обнаружение столкновения снаряда
  • Самолет - обнаружение столкновения снаряда
  • Frustum - выбраковка рендера
  • Сфера - отбор рендера, быстрое испытание на столкновение
  • ограничивающая ось ограничивающая коробка - выбраковка, испытания на столкновение, пространственное разделение
  • Ориентирующая ограничивающая рамка - испытания на столкновение
  • Выпуклая оболочка - столкновение, пространственное разделение
  • и т.д.

Вы должны начать с Vector и Matrix, так как они будут использоваться повсюду в движке (графика, физика, AI и т. Д.)

18 голосов
/ 24 августа 2009

Матрицы, триг, геометрия в основном и немного линейной алгебры

Взгляните сюда http://www.essentialmath.com/

4 голосов
/ 24 августа 2009

По большей части линейная алгебра и вычислительная геометрия; Кватернионы используются широко, и числовой анализ необходим, если вы работаете над физическим движком.

Сколько вы будете использовать ежедневно, зависит от того, что вы делаете. Если вы программист графики и, следовательно, создаете сам движок трехмерной графики, то вы, вероятно, будете реализовывать или поддерживать реализации библиотек классов и функций, которые фактически выполняют математику, поэтому было бы относительно важно знать мрачные подробности. Если вы используете библиотеку в качестве клиента или работаете над другой частью игрового движка (AI, аудио, пользовательский интерфейс, камера и т. Д.), То вам нужно будет понять математику концептуально, но вы, безусловно, можете обойтись без знания того, как реализовать обратная матрица на доске над головой.

Графические API-интерфейсы не исключают необходимость знания математики; они ограничены рисованием, поэтому все управление сценами и моделирование мира должны быть реализованы вне графического API. Конечно, есть и промежуточное ПО, но многие студии используют свои собственные системы.

Существует достаточное количество ресурсов, предназначенных для этого рынка. Например, на Amazon есть такие книги, как 3D Math Primer для графики и разработки игр , и, вероятно, в Интернете есть и много других вещей.

2 голосов
/ 24 августа 2009

В игру вступает сложная математика, но наиболее важным является понимание концепций, лежащих в основе такой математики, а зачастую и самой математики. До тех пор, пока вы понимаете, как все это происходит вместе, часто есть вспомогательные методы для многих вычислений, которые вам понадобятся. Конечно, это в значительной степени зависит от используемой вами платформы разработки.

...