Динамическое моделирование в вычислительной физике — это моделирование систем объектов, которые могут свободно перемещаться, обычно в трех измерениях в соответствии с законами динамики Ньютона или их приближениями. Динамическое моделирование используется в компьютерной анимации , чтобы помочь аниматорам создавать реалистичные движения, в промышленном дизайне (например, для моделирования столкновений на раннем этапе краш-тестирования ) и в видеоиграх . Движение тела рассчитывается с использованием методов временной интеграции .
В информатике программа, называемая физическим движком, используется для моделирования поведения объектов в пространстве. Эти движки позволяют моделировать то, как тела многих типов подвергаются воздействию различных физических стимулов. Они также используются для создания динамических симуляций без необходимости знать что-либо о физике. Физические движки используются во всей индустрии видеоигр и фильмов, но не все физические движки одинаковы. Они, как правило, делятся на реальные и высокоточные, но это не единственные варианты. Большинство физических движков реального времени неточны и дают только самое ничтожное приближение к реальному миру, тогда как большинство высокоточных движков слишком медленны для использования в повседневных приложениях.
Чтобы понять, как построены эти физические движки, требуется базовое понимание физики. Физические движки основаны на реальном поведении мира, описанном классической механикой . Двигатели обычно не учитывают современную механику (см. Теорию относительности и квантовую механику ), поскольку большая часть визуализации имеет дело с большими телами, движущимися относительно медленно, но самые сложные движки выполняют вычисления как для современной механики, так и для классической. Модели, используемые в динамических симуляциях, определяют, насколько точны эти симуляции.
Первая модель, которая может быть использована в физических движках, управляет движением бесконечно малых объектов с конечной массой, называемых «частицами». Это уравнение, называемое Вторым законом Ньютона (см. законы Ньютона ) или определением силы, является фундаментальным поведением, управляющим любым движением:
Это уравнение позволяет нам полностью моделировать поведение частиц, но его недостаточно для большинства симуляций, поскольку оно не учитывает вращательное движение твердых тел . Это самая простая модель, которую можно использовать в физическом движке, и она широко использовалась в ранних видеоиграх.
Тела в реальном мире деформируются, когда к ним применяются силы, поэтому мы называем их «мягкими», но часто деформация пренебрежимо мала по сравнению с движением, и ее очень сложно моделировать, поэтому большинство физических движков игнорируют деформацию. Тело, которое предполагается недеформируемым, называется жестким телом . Динамика жесткого тела имеет дело с движением объектов, которые не могут изменять форму, размер или массу, но могут изменять ориентацию и положение.
Чтобы учесть вращательную энергию и импульс, мы должны описать, как сила прикладывается к объекту, используя момент , и учесть распределение массы объекта, используя тензор инерции . Мы описываем эти сложные взаимодействия с помощью уравнения, несколько похожего на определение силы выше:
где — центральный тензор инерции , — вектор угловой скорости , — момент j -й внешней силы относительно центра масс .
Тензор инерции описывает местоположение каждой частицы массы в данном объекте по отношению к центру масс объекта. Это позволяет нам определить, как объект будет вращаться в зависимости от приложенных к нему сил. Это угловое движение количественно определяется вектором угловой скорости.
Пока мы остаемся ниже релятивистских скоростей (см. Релятивистская динамика ), эта модель будет точно моделировать все соответствующее поведение. Этот метод требует, чтобы физический движок решал шесть обыкновенных дифференциальных уравнений в каждый момент времени, который мы хотим визуализировать, что является простой задачей для современных компьютеров.
Инерциальная модель намного сложнее, чем нам обычно нужно, но она самая простая в использовании. В этой модели нам не нужно менять наши силы или ограничивать нашу систему. Однако, если мы внесем несколько разумных изменений в нашу систему, моделирование станет намного проще, а время наших вычислений уменьшится. Первым ограничением будет представление каждого крутящего момента в терминах главных осей. Это значительно усложнит программирование каждого крутящего момента, но значительно упростит наши уравнения. Когда мы применяем это ограничение, мы диагонализируем тензор момента инерции, что упрощает наши три уравнения в специальный набор уравнений, называемых уравнениями Эйлера . Эти уравнения описывают весь вращательный импульс в терминах главных осей:
Недостатком этой модели является то, что все вычисления находятся на переднем конце, поэтому она все еще медленнее, чем нам бы хотелось. Реальная полезность не очевидна, поскольку она все еще опирается на систему нелинейных дифференциальных уравнений. Чтобы облегчить эту проблему, нам нужно найти метод, который может удалить второй член из уравнения. Это позволит нам интегрировать гораздо легче. Самый простой способ сделать это — предположить определенную степень симметрии.
Два типа симметричных объектов, которые упростят уравнения Эйлера, — это «симметричные волчки» и «симметричные сферы». Первый предполагает одну степень симметрии, что делает два члена I равными. Эти объекты, такие как цилиндры и волчки, можно выразить одним очень простым уравнением и двумя немного более простыми уравнениями. Это не принесет нам большой пользы, потому что с еще одной симметрией мы можем получить большой скачок скорости почти без изменения внешнего вида. Симметричная сфера делает все члены I равными ( скаляр момента инерции ), что делает все эти уравнения простыми:
Эти уравнения позволяют нам моделировать поведение объекта, который может вращаться, способом, очень близким к методу имитации движения без вращения. Это простая модель, но она достаточно точна, чтобы производить реалистичный вывод в реальном времени Динамические симуляции . Она также позволяет физическому движку сосредоточиться на изменяющихся силах и крутящих моментах, а не на изменяющейся инерции.