Физический движок
Возможно, эта статья содержит оригинальное исследование. |
Физический движок (англ. physics engine) — компьютерная программа, которая производит компьютерное моделирование физических законов реального мира в виртуальном мире, с той или иной степенью аппроксимации. Чаще всего физические движки для физического моделирования используются не как отдельные самостоятельные программные продукты, а как составные компоненты (подпрограммы) других программ.
Все физические движки условно делятся на два типа: игровые и научные.
- Первый тип используется в компьютерных играх как компонент игрового движка. В этом случае он должен работать в режиме реального времени, то есть воспроизводить физические процессы в игре с той же самой скоростью, в которой они происходят в реальном мире. Вместе с тем от игрового физического движка не требуется точности вычислений. Главное требование — визуальная реалистичность, и для его достижения не обязательно проводить точную симуляцию. Поэтому в играх используются очень сильные аппроксимации, приближённые модели и другие приёмы.
- Научные физические движки используются в научно-исследовательских расчётах и симуляциях, где крайне важна именно физическая точность вычислений. Вместе с тем скорость вычислений не играет существенной роли.
Современные физические движки симулируют не все физические законы реального мира, а лишь некоторые, причём с течением времени и прогресса в области информационных технологий и вычислительной техники список «поддерживаемых» законов увеличивается. На начало 2010 года физические движки могут симулировать следующие физические явления и состояния:
- динамика абсолютно твёрдого тела
- динамика деформируемого тела
- динамика жидкостей
- динамика газов
- поведение тканей
- поведение верёвок (тросы, канаты и т.д.)
В августе 2009 года англоязычный журнал Game Developer , посвящённый разработке компьютерных игр, опубликовал статью о современных игровых движках и их использовании. Согласно данным журнала, наиболее популярным среди разработчиков является движок nVidia PhysX, который занимает 26,8% рынка. На втором месте находится Havok, который занимает 22,7% рынка. Третье место принадлежит движку Bullet Physics Library (10,3%), а четвёртое — Open Dynamics Engine (4,1%).[1]
Использование[править | править код]
Описание[править | править код]
Физический движок позволяет создать некое виртуальное пространство, которое можно наполнить телами (виртуальными статическими и динамическими объектами), и указать для него некие общие законы взаимодействия тел и среды, в той или иной мере приближённые к физическим, задавая при этом характер и степень взаимодействий (импульсы, силы и т. д). Собственно расчёт взаимодействия тел движок и берёт на себя. Когда простого набора объектов, взаимодействующих по определённым законам в виртуальном пространстве, недостаточно в силу неполного приближения физической модели к реальной, возможно добавлять (к телам) связи. Рассчитывая взаимодействие тел между собой и со средой, физический движок приближает физическую модель получаемой системы к реальной, передавая уточнённые геометрические данные средству отображения (рендереру).
Тело[править | править код]
Тело (англ. body) — объект игровой физики, который определяется:
- его формой (есть простые формы: шар, куб, цилиндр; есть сложные формы, набор которых в разных движках может различаться);
- неким набором параметров (масса, упругость, коэффициент трения, инертность по осям).
Связь[править | править код]
Связь (соединение; англ. joint) — ограничения объектов игровой физики, каждое из которых может накладываться на одно или два тела.
Взаимодействие[править | править код]
Как правило, физический движок и решает проблему взаимодействия тел. Тем не менее, может появиться необходимость использования собственного алгоритма взаимодействия, и, как правило, движки предоставляют такую возможность.
Известные физические движки[править | править код]
Список примеров в этой статье не основывается на авторитетных источниках, посвящённых непосредственно предмету статьи. |
Игровые проприетарные[править | править код]
- Havok — некогда самый популярный и распространённый физический движок, используемый в более чем в 100 играх. На данный момент немного уступил своему конкуренту[1];
- Digital Molecular Matter
Игровые свободные[править | править код]
- PhysX — основной конкурент Havok, единственный в мире физический движок, имеющий аппаратную поддержку (см. Физический процессор). Покупка Ageia компанией nVidia привела к переименованию движка в nVidia PhysX. В 2015 году NVIDIA опубликовала исходный код PhysX для пользователей Unreal Engine. На данный момент PhysX занимает первое место по популярности среди физических движков[1];
- Bullet Physics Library — второй по популярности среди свободных физических движков.[1];
- Open Dynamics Engine — третий по популярности среди свободных физических движков[1];
- Tokamak — физический движок с открытым исходным кодом.
- Newton Game Dynamics — изначально проприетарный, а с февраля 2011 года — свободный физический движок.
- Box2D — мультиплатформенный движок для симуляции физики твёрдых тел.
Ныне несуществующие[править | править код]
- NovodeX — физический движок, приобретённый компанией Ageia и преобразованный в PhysX.
- Meqon — физический движок, приобретённый компанией Ageia и интегрированный в состав её движка PhysX.
- Ipion Virtual Physics — физический движок, приобретённый компанией Havok и интегрированный в состав её движка Havok Physics;
- Karma — коммерческий движок от ныне закрытой компании MathEngine, интегрирован в Unreal Engine 2.0/2.5.
Другие[править | править код]
- Open Physics Initiative — проект, инициированный компаниями AMD и Pixelux Entertainment по объединению Bullet Physics Library и Digital Molecular Matter, добавлении в новообразованный продукт поддержки OpenCL и DirectCompute и оптимизации результирующего движка для выполнения на графических процессорах Radeon.
См. также[править | править код]
Примечания[править | править код]
- ↑ 1 2 3 4 5 Bullet ranked third physics library at 10% in Game Developers Magazine survey (англ.). официальный сайт движка Bullet Physics Library (3 сентября 2009). Дата обращения: 24 сентября 2009. Архивировано 16 февраля 2012 года.
Ссылки[править | править код]
- Physics Engine — общая информация о физических движках на сайте GameDev.ru
- Программирование игр: Физика — список терминов и понятий, относящихся к программированию физических движков на сайте GameDev.ru
- Lentyay. Урок физики для геймера (часть 1) — Введение . gamesector.org (23 октября 2006). Дата обращения: 7 июля 2009. Архивировано из оригинала 26 июня 2010 года.
- Lentyay. Урок физики для геймера (часть 2) — AGEIA PhysX . gamesector.org (2 ноября 2006). Дата обращения: 7 июля 2009. Архивировано из оригинала 26 июня 2010 года.
- Lentyay. Урок физики для геймера (часть 3) — Физика на видеокартах . gamesector.org (16 мая 2007). Дата обращения: 7 июля 2009. Архивировано из оригинала 25 июня 2010 года.
- Andretti. Эволюция воды в играх . ITC.ua (3 декабря 2007). — Подборка скриншотов из компьютерных игр, которая демонстрирует развитие визуализации воды. Дата обращения: 2 августа 2009. Архивировано из оригинала 8 июля 2013 года.
- Zogrim. Popular Physics Engines comparison: PhysX, Havok and ODE (англ.). PhysXInfo.com (7 декабря 2009). Дата обращения: 11 марта 2010. Архивировано 16 февраля 2012 года.
- Наталья Зайцева. Разработка физической модели разбиения твердого тела для игрового движка . Intel Software Network (6 октября 2009). Дата обращения: 21 марта 2010. Архивировано 16 февраля 2012 года.