Введение

Программное обеспечение для приближенного моделирования физических систем

Физический движок — это компьютерное программное обеспечение, обеспечивающее приближенное моделирование определенных физических систем, таких как динамика твердых тел (включая обнаружение столкновений), динамика мягких тел и динамика жидкостей, применяемое в областях компьютерной графики, видеоигр и кино (CGI). Основное применение физических движков – в видеоиграх (как правило, в качестве промежуточного программного обеспечения), где моделирование происходит в реальном времени. Этот термин иногда используется в более широком смысле для описания любой программной системы, предназначенной для моделирования физических явлений, например, высокопроизводительного научного моделирования.

Описание

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

Научные двигатели

Один из первых компьютеров общего назначения, ENIAC, использовался как очень простой тип физического движка. Он применялся для разработки баллистических таблиц, чтобы помочь американской армии оценивать место падения артиллерийских снарядов разной массы при стрельбе под различными углами и с разными зарядами пороха, а также учитывая отклонение, вызванное ветром. Результаты вычислялись лишь однажды и оформлялись в печатные таблицы, которые выдавались командирам артиллерии. С 1980-х годов физические движки широко используются на суперкомпьютерах для выполнения вычислительной гидродинамики, где частицам присваиваются векторы силы, которые комбинируются для отображения циркуляции. В связи с требованиями к скорости и высокой точности, для ускорения вычислений были разработаны специальные компьютерные процессоры, известные как векторные процессоры. Эти методы могут применяться для моделирования погодных условий в прогнозировании погоды, данных аэродинамических испытаний для проектирования воздушных и водных судов или автотранспортных средств, включая гоночные автомобили, а также для теплового охлаждения компьютерных процессоров с целью улучшения эффективности радиаторов. Как и во многих вычислительно сложных процессах, точность моделирования зависит от разрешения модели и точности вычислений; незначительные колебания, не учтенные в моделировании, могут существенно изменить прогнозируемые результаты. Производители шин используют физическое моделирование для оценки характеристик новых типов протектора в условиях мокрой и сухой дороги, применяя новые материалы для шин различной гибкости и при разных уровнях нагрузки.

Игровые движки

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

Обнаружение столкновения

Объекты в играх взаимодействуют с игроком, окружающей средой и друг с другом. Как правило, большинство 3D-объектов в играх представлены двумя отдельными сетками или формами. Одна из этих сеток – высокодетализированная и сложная форма, видимая игроку, например, ваза с изящными изогнутыми ручками. Для повышения производительности используется вторая, упрощенная невидимая сетка, представляющая объект физическому движку, чтобы он рассматривал вазу как простой цилиндр. Таким образом, невозможно будет вставить стержень или выстрелить снарядом сквозь отверстия в ручках вазы, поскольку физический движок оперирует моделью цилиндра и не учитывает ручки. Упрощенная сетка, используемая для физических расчетов, часто называется геометрией коллизий. Это может быть ограничивающая рамка, сфера или выпуклая оболочка. Движки, использующие ограничивающие рамки или сферы в качестве финальной формы для обнаружения столкновений, считаются крайне простыми. Обычно ограничивающая рамка используется для предварительного отсева возможных столкновений (broad phase collision detection), чтобы сузить их количество перед выполнением более затратного по ресурсам обнаружения столкновений сетка-сетка (narrow phase collision detection). Другой аспект точности при дискретном обнаружении столкновений – частота кадров, то есть количество моментов времени в секунду, когда рассчитывается физика. Каждый кадр рассматривается как отдельный от всех остальных, и интервал между кадрами не вычисляется. Низкая частота кадров и небольшой быстродвижущийся объект приводят к тому, что объект не перемещается плавно, а как будто телепортируется из одной точки пространства в другую при расчете каждого кадра. Снаряды, движущиеся с достаточной скоростью, могут промахиваться по цели, если она достаточно мала, чтобы поместиться в промежуток между рассчитанными кадрами траектории снаряда. Для решения этой проблемы используются различные методы, например, в Second Life снаряды представлены стрелами с невидимыми оперениями, длина которых превышает промежуток между кадрами, чтобы обеспечить столкновение с любым объектом, который мог бы оказаться между рассчитанными кадрами. В отличие от этого, непрерывное обнаружение столкновений, как в Bullet или Havok, не имеет этой проблемы.

Динамика мягкого тела

Альтернативой использованию систем физики жестких тел на основе ограничивающих объемов является использование системы, основанной на методе конечных элементов. В такой системе создается трехмерная объемная тесселяция 3D-объекта. Тесселяция приводит к образованию множества конечных элементов, которые представляют собой аспекты физических свойств объекта, такие как прочность, пластичность и сохранение объема. После построения конечные элементы используются решателем для моделирования напряжений внутри 3D-объекта. Напряжения могут быть использованы для реализации разрушений, деформаций и других физических эффектов с высокой степенью реализма и уникальности. По мере увеличения количества моделируемых элементов, возрастает способность движка моделировать физическое поведение. Визуальное представление 3D-объекта изменяется системой конечных элементов посредством деформационного шейдера, выполняемого на центральном или графическом процессоре. Системы, основанные на методе конечных элементов, ранее были непрактичны для использования в играх из-за высокой вычислительной нагрузки и отсутствия инструментов для создания представлений конечных элементов из 3D-моделей. С появлением более производительных процессоров и инструментов для быстрого создания объемных тесселяций, системы конечных элементов в реальном времени начали применяться в играх, начиная с Star Wars: The Force Unleashed, которая использовала Digital Molecular Matter для эффектов деформации и разрушения дерева, стали, плоти и растений, используя алгоритм, разработанный доктором Джеймсом О’Брайеном в рамках его докторской диссертации.

Браунское движение

В реальном мире физика всегда активна. Все частицы во Вселенной постоянно испытывают флуктуации, вызванные броуновским движением, поскольку силы действуют друг на друга в противоположных направлениях. Для игрового физического движка такая постоянная высокая точность является излишней тратой ограниченных ресурсов процессора, что может привести к снижению частоты кадров. Поэтому игры могут переводить объекты в "спящий" режим, отключая вычисления физики для тех, которые не переместились на значительное расстояние за определенный промежуток времени. Например, в 3D виртуальном мире Second Life, если объект неподвижно лежит на полу и не сдвигается даже на минимальное расстояние в течение примерно двух секунд, то для него отключаются физические расчеты, и он замирает на месте. Объект остается в застывшем состоянии до тех пор, пока обработка физики не возобновится после столкновения с другим активным физическим объектом.

Парадигмы

Физические движки для видеоигр обычно состоят из двух основных компонентов: системы обнаружения и обработки столкновений, а также компонента динамического моделирования, отвечающего за расчет сил, действующих на симулируемые объекты. Современные физические движки могут также включать симуляции жидкостей, системы управления анимацией и инструменты для интеграции ресурсов. Существуют три основных подхода к физическому моделированию твердых тел:
Методы штрафных функций, где взаимодействия обычно моделируются как системы масса-пружина. Этот тип движка популярен для моделирования деформируемых, или мягких тел. Методы, основанные на ограничениях, где решаются уравнения ограничений, аппроксимирующие физические законы. Импульсные методы, при которых импульсы применяются к взаимодействиям объектов. Наконец, возможны гибридные методы, сочетающие элементы вышеперечисленных подходов.

Ограничения

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

Физическая обработка данных (ФПУ)

Физический процессор (ФПУ) — это специализированный микропроцессор, разработанный для обработки физических расчетов, особенно в физическом движке видеоигр. Примеры расчетов, выполняемых с помощью ФПУ, включают динамику твердых тел, динамику мягких тел, обнаружение столкновений, динамику жидкостей, симуляцию волос и одежды, конечно-элементный анализ и разрушение объектов. Суть заключается в том, что специализированные процессоры снимают с центрального процессора (CPU) ресурсоемкие задачи, подобно тому, как графический процессор (GPU) выполняет графические операции вместо основного CPU. Термин был введен маркетингом компании Ageia для представления потребителям их чипа PhysX. Ряд других технологий в диапазоне между CPU и GPU имеют некоторые общие черты, однако решение Ageia было единственным полностью разработанным, продвигаемым на рынок, поддерживаемым и интегрированным в систему исключительно как ФПУ.

Общецелевые вычисления на графических процессорах (GPGPU)

Ускорение аппаратного обеспечения для обработки физики теперь обычно обеспечивается графическими процессорами, поддерживающими более общие вычисления, что известно как вычисления общего назначения на графических процессорах (GPGPU). AMD и NVIDIA предоставляют поддержку вычислений динамики твёрдых тел на своих новейших видеокартах. Серия NVIDIA GeForce 8 поддерживает технологию аппаратного ускорения ньютоновской физики на основе графического процессора под названием Quantum Effects Technology. NVIDIA предоставляет SDK Toolkit для технологии CUDA (Compute Unified Device Architecture), предлагающий API как низкого, так и высокого уровня для GPU. Для своих графических процессоров AMD предлагает аналогичный SDK под названием Close to Metal (CTM), который обеспечивает тонкий аппаратный интерфейс. PhysX — это пример физического движка, который может использовать аппаратное ускорение на основе GPGPU при его наличии.