Войти
Физика для игрСтатьи

Что нужно, чтобы заняться программированием физики в играх

Автор:

Данная статья является "началом", она не претендует на полноту раскрытия затронутых вопросов. Участники сообщества приглашаются для её расширения.

Программирование физики - это большая и сложная тема. Особенно, если целью ставится разработка собственного физического движка, а не использование готового. И, если касательно готовых движков ещё можно найти какую-то инфу на русском, то доки по "теории" программирования физики почти все на английском.

Различают 2Д и 3Д физические движки. У того и у другого есть и общие аспекты, и специфичные, адаптированные решения.

Для программирования физического движка в целом вам, скорее всего, потребуются следующие знания:

  • "школьные" знания законов механики
  • векторная алгебра
  • умение дифференцировать векторные выражения
  • определение, свойства матриц и операции с ними
  • понятие кватернионов
  • основные знания по теории графов
  • "геометрические" алгоритмы, как-то: построение выпуклых оболочек многогранников, триангуляция, возможно, сечение многогранников плоскостью, и т. д.
  • численные методы интегрирования
  • область теоретической механики, рассматривающая движение твёрдых тел - координаты, законы движения, понятие тензора инерции и методы его вычисления, уравнения движения для начала...
  • область теоретической механики, рассматривающая движения твёрдых тел "со связями", с ограничением степеней свободы, уравнения связей, методы симуляции систем со связями и методы решения возникающих при этом задач, в частности понимание задачи о дополнительности (LCP), и понимание существующих алгоритмов её решения, их достоинств и недостатков.
  • методы решения систем линейных уравнений
  • методы разбиения пространства
  • А также:

  • от нескольких месяцев до нескольких лет свободного времени
  • куча энтузиазма, упорства и готовность бороться со множеством возникающих в ходе имплементации багов и выплывающих подводных камней
  • желателен напарник
  • обязательно знание английского на уровне свободного чтения технической литературы
  • Также, вам будет необходим опыт работы с OpenGL или Direct3D для отрисовки происходящего в вашем физическом мире, а также опыт работы с существующими библиотеками типа std или boost, или разработка собственных аналогов (а как же безопасный код, да и контейнеры вам понадобятся).

    Тема определения столкновений - непростая штука. Многие не идут дальше случаев сфера-сфера и сфера-плоскость. Некоторые приближают форму сложных объектов весьма грубо - теми же сферами, параллелепипедами, цилиндрами. Быстрые алгоритмы точного определения столкновений между полигональными моделями для понимания требуют знаний уровня 1го-2го курсов мат. анализа и аналитической геометрии в ВУЗе, и неслабой расположенности к абстрактному, стереометрическому и алгоритмическому мышлению. К тому же, без владения английским, задача изучения темы программирования физики в играх и, в частности, Определения Столкновений является, имхо, невыполнимой.

    2 мая 2006