Фізи́чний руші́й (англ. physics engine) — програмний рушій, що робить симуляцію фізичних законів реального світу у світі віртуальному з тим або іншим ступенем апроксимації. Найчастіше фізичні рушії використовуються не як окремі самостійні програмні продукти, а як складені компоненти (підпрограми) інших програм.

Симуляція фізики фізичним рушієм

Наведено чотири приклади симуляції фізичним рушієм падіння об'єкта на схил. Приклади різняться акуратністю симуляції:

  1. Без фізики.
  2. Гравітація, нема виявлення зіткнень.
  3. Гравітація і виявлення зіткнень, нема механіки твердого тіла.
  4. Гравітація, виявлення зіткнень і обчислення обертань через тертя.

Усі фізичні рушії умовно діляться на два типи: ігрові й наукові.

Перший тип використовується в комп'ютерних іграх як компонент ігрового рушія. У цьому випадку він повинен працювати в режимі реального часу, тобто відтворювати фізичні процеси в грі з тою ж швидкістю, з якою вони відбуваються в реальному світі. Разом із тим, від ігрового фізичного рушія не потрібно точності обчислень. Головна вимога — візуальна реалістичність, — і для її досягнення не обов'язково проводити точну симуляцію. Тому в іграх використовуються дуже приблизні апроксимації, наближені моделі й інші програмні «трюки».

Наукові фізичні рушії використовуються в науково-дослідних розрахунках і симуляціях, де вкрай важлива саме фізична точність обчислень. Разом із тим швидкість обчислень не грає істотної ролі.

Сучасні фізичні рушії симулюють не всі фізичні закони реального світу, а лише деякі, причому із часом і прогресом у галузі інформаційних технологій і обчислювальної техніки список «підтримуваних» законів збільшується. На початок 2010 року фізичні рушії можуть симулювати такі фізичні явища й стани:

У серпні 2009 року англомовний журнал Game Developer[en], присвячений розробці комп'ютерних ігор, опублікував статтю про сучасні ігрові рушії та їхнє використання. Згідно з даними журналу, найпопулярнішим серед розробників є рушій nVidia PhysX, що займає 26,8% ринку. На другому місці перебуває Havok, що займає 22,7% ринку. Третє місце належить рушію Bullet Physics Library (10,3%), а четверте — Open Dynamics Engine (4,1%).[1]

Використання ред.

Опис ред.

Фізичний рушій дозволяє створити деякий віртуальний простір, який можна наповнити тілами (віртуальними статичними й динамічними об'єктами), і вказати для нього якісь загальні закони взаємодії тіл і середовища, тією, чи іншою мірою наближені до фізичних, задаючи при цьому характер і ступінь взаємодій (імпульси, сили тощо). Властиво розрахунок взаємодії тіл рушій і бере на себе. Коли простого набору об'єктів, що взаємодіють за певними законами у віртуальному просторі, недостатньо в силу неповного наближення фізичної моделі до реального світу, можливо додавати (до тіл) зв'язки. Розраховуючи взаємодію тіл між собою й із середовищем, фізичний рушій наближає фізичну модель одержуваної системи до реального світу, передаючи уточнені геометричні дані засобові відображення (рендереру).

Тіло ред.

Тіло (англ. body) — об'єкт ігрової фізики, що визначається:

  1. його формою (є прості форми: куля, куб, циліндр; є складні форми, набір яких у різних рушіях може різнитися);
  2. деяким набором параметрів (маса, пружність, коефіцієнт тертя, інертність по осях).

Зв'язок ред.

Зв'язок (з'єднання; англ. joint) — обмеження об'єктів ігрової фізики, кожне з яких може накладатися на одне або два тіла.

Взаємодія ред.

Як правило, фізичний рушій і вирішує проблему взаємодії тіл. Проте, може з'явитися необхідність використання власного алгоритму взаємодії, і, як правило, рушії надають таку можливість.

Відомі фізичні рушії ред.

Ігрові пропрієтарні ред.

  • Havok — колись найпопулярніший і розповсюджений фізичний рушій, використовуваний у більш ніж ста іграх. У наш час небагато поступився своєму конкурентові[1];
  • PhysX — основний конкурент Havok, єдиний у світі фізичний рушій, що має апаратну підтримку. Спочатку розроблений фірмою Ageia за назвою NovodeX, після випуску физичного процесора PhysX перейменований в Ageia PhysX SDK. Купівля Ageia компанією nVidia призвела до перейменування рушія на nVidia PhysX SDK. Зараз PhysX посідає перше місце за популярністю серед фізичних рушіїв[1];
  • TrueAxis;
  • Meqon — фізичний рушій, придбаний компанією Ageia та інтегрований до складу її рушія PhysX. Передбачається його використання в Duke Nukem Forever;
  • Ipion Virtual Physics — фізичний рушій, придбаний компанією Havok й інтегрований до складу її рушія Havok;
  • Newton Game Dynamics — пропрієтарний безкоштовний фізичний рушій;
  • Karma — комерційний рушій від нині закритої компанії MathEngine, інтегрований в Unreal Engine 2.0/2.5.

Ігрові вільні ред.

Ігрові апаратні ред.

  • PhysX — фізичний процесор; працює так само, як і графічна карта, але на користь фізики PhysX. Тобто при наявності такої плати й гри з PhysX ігрова фізика буде значно кращою, ніж без використання адаптера PhysX.

Наукові ред.

Інші ред.

Див. також ред.

Посилання ред.

  • Physics Engine — загальна інформація про фізичні рушії на сайті GameDev.ru
  • Програмування ігор: Фізика — список термінів і вимог, що ставляться до програмування фізичних рушіїв на сайті GameDev.ru
  • Lentyay (23 жовтня 2006 року). Урок фізики для геймера (частина 1) - Вступ. gamesector.org. Архів оригіналу за 26 червня 2010.
  • Lentyay (2 листопада 2006 року). Урок фізики для геймера (частина 2) - AGEIA PhysX. gamesector.org. Архів оригіналу за 26 червня 2010.
  • Lentyay (16 травня 2007 року). Урок фізики для геймера (частина 3) - Фізика на відеокартах. gamesector.org. Архів оригіналу за 25 червня 2010.
  • Andretti (3 грудня 2007 року). Еволюція води в іграх. ITC.ua. Архів оригіналу за 8 липня 2013.
  • Zogrim (7 грудня 2009 року). Popular Physics Engines comparison: PhysX, Havok and ODE (англійською) . PhysXInfo.com. Архів оригіналу за 8 липня 2013.
  • Наталя Зайцева (6 жовтня 2009 року). Розробка фізичної моделі розбивки твердого тіла для ігрового рушія. Intel Software Network.

Примітки ред.

  1. а б в г д Bullet ranked third physics library at 10% in Game Developers Magazine survey (англійською) . офіційний сайт рушія Bullet Physics Library. 3 вересня 2009 року. Архів оригіналу за 8 липня 2013.