Програма повинна приймати дані, обробляти її та давати вихід. Отже, що саме фізичний двигун приймає як вхід і забезпечує як вихід?
Програма повинна приймати дані, обробляти її та давати вихід. Отже, що саме фізичний двигун приймає як вхід і забезпечує як вихід?
Відповіді:
Двигун фізики відповідає за імітацію рухів та реакцій об'єктів так, ніби вони опиняються під обмеженнями фізики реального світу (або подібної до реальної). Зазначу, це, як правило, не окрема програма, а складова більш великої, цікавішої програми (наприклад, гри).
Вхід до фізичного моделювання - це, як правило, сукупність предметів ("тіл") із властивостями (наприклад, жорсткі вони чи м'які, їх маси, форми тощо), а також сукупність сил, що діють на ці тіла.
Виходячи з цього входу, двигун моделює оновлені положення та орієнтації тіл і застосовує ("виходи") їх. Як правило, коли об'єкти стикаються або перекриваються, це включається у висновок етапу моделювання у вигляді зворотного виклику, який може підключити клієнтський код для обробки певної логіки гри, що стосується зіткнення.
Вхідна швидкість, маса та час, вихід - нові швидкості. Іноді імпульс обертання / кута також є входом і виходом.
По суті, двигуни фізики намагаються імітувати наслідки сили тяжіння та зіткнення. Для кращих фізичних двигунів це означає, що вони включають як постійну, так і тимчасову деформацію об'єктів, включаючи розділення об'єктів на декілька об'єктів, і кутовий імпульс об'єктів. В ідеалі вони також імітують стрес, наприклад, скільки вантажівок може перетнути цей міст, поки він не руйнується, але це досить рідко. Подальше моделювання змінних, таких як опір повітря, також вважатиметься фізичним двигуном, але, наскільки я знаю, вони ще не ввійшли в жодну гру.
Більшість двигунів фізики до певної міри спеціалізовані і будуть імітувати фізику до точки, необхідної для гри. Фізичні двигуни для автомобільних ігор часто сильно відрізняються від фізичних двигунів для 3D-шутерів. І фізичний двигун гри в гольф може мати надмірні розрахунки взаємодії м'яча для гольфу та окремих листя трави, при цьому повністю не вистачає керування швидкими зіткненнями та деформацією автомобіля (якщо він потрапить у м'яч для гольфу) .
Зазвичай двигун фізики використовується для того, щоб змусити об'єкт в грі реалістично поводитися відносно свого оточення, не створюючи конкретних анімацій для кожного можливого сценарію.
Зокрема, фізичний двигун візьме модель з набором властивостей (маса, стики тощо) і виведе її в гру відповідно до набору параметрів.
Раннім прикладом цього були двигуни реггдола (наприклад, в Unreal), які моделювали те, як тіла, що кульгають, падають на сходи тощо.
У сучасних технологіях фізичні двигуни часто будуть тісно інтегровані в загальний пакет ігрових розробок разом з AI, ігровим інтерфейсом, генерацією котлену тощо.
Ви, звичайно, можете стверджувати, що двигуни фізики повертаються до світанку ігрового дизайну, наприклад, понг можна вважати сильним двигуном фізики. Однак головним є те, що фізичний двигун здатний генерувати точки анімації на льоту на основі набору параметрів, а не просто використовувати заздалегідь визначені послідовності анімації від зйомки руху або ручної анімації.
Як згадується в інших відповідях, у деяких класах чи таких іграх, як моделювання водіння чи польоту, фізичний двигун може бути основоположним для гри, і як такий буде головним вкладом в екранну анімацію. Хоча зазвичай цей термін використовується для інструменту загального призначення, який може застосовуватися в різних ситуаціях, не вимагаючи конкретних знань або аналізу конкретного контексту з боку розробника, а не для дуже конкретного симулятора, побудованого з основи. для конкретної програми.
Двигун фізики відповідає за моделювання руху об’єктів у "світі" (що б це не означало в контексті двигуна). В даний час більшість фізичних двигунів використовують для цього механіку Ньютона, оскільки вони є досить простими для імітації та "досить точністю" для більшості цілей, якщо ви не робите космічну сим.
Теоретично, "чистий" двигун фізики потребує трьох входів:
Враховуючи інерцію та сили, двигун переміщує предмети навколо. Вихід двигуна фізики - це просто новий стан "світу" , який гра може потім прочитати та змінити за потребою.
На практиці двигуни фізики не обов'язково такі "чисті" . Об'єкти потрібно створювати та знищувати, а іноді їх потрібно переміщувати так, як не дозволяли закони фізичного двигуна. Це іноді можна зробити поза двигуном, але іноді це робиться всередині, і для цього двигуну потрібно більше входів. Але три вищевказані входи охоплюють основи.
Наприклад, скажімо, що вам потрібно було перемістити персонажа в грі за допомогою джойстика. Якщо ви не використовуєте двигун фізики, це досить просто: коли ви бачите, що користувач переміщує джойстик, ви переміщуєте об'єкт відповідно. За допомогою двигуна фізики ви не переміщуєте об'єкт безпосередньо: ви прикладете до нього силу, відповідну напрямку, в якому ви хочете, щоб об'єкт рухався, і дозволяєте ручку двигуна насправді переміщувати його .
Яка різниця? Навіть якщо нічого іншого на світі немає, об’єкт навряд чи буде рухатися абсолютно однаково, тому що фізичний двигун буде обробляти такі речі, як реалістичне прискорення. Але також можливо, що інші сили можуть діяти на об’єкт одночасно, як інерція, і двигун буде враховувати їх усі . Наприклад, якщо ви застосуєте силу на північ до об'єкта, але щось інше застосовує силу на захід (або об'єкт вже рухався на захід і нічого не сповільнює), то двигун перемістить об'єкт на північний захід.
Ось, що отримує вас фізичний двигун: він відслідковує об'єкти, їх положення та швидкості та сили, що діють на них. Завдяки законам механіки він навіть може створити певні сили самостійно, щоб автоматично обробляти такі речі, як зіткнення, тертя та сила тяжіння, все без вас, розробника гри, не вимагаючи нічого зайвого.
Фізичний двигун - це в основному симулятор фізичних тіл.
Це дозволяє створити тіло (або кілька), вказавши його фізичні властивості, такі як маса, розмір, щільність тощо ...
Це також дозволяє визначити властивості світу фізики, де відбувається моделювання (наприклад, гравітація).
Нарешті, це дозволяє застосувати сили або створити суглоби між тілами.
Після того, як ви визначилися з усіма цими речами, ви можете розпочати моделювання, і Physics Engine підкаже вам, де кожне тіло буде розміщене на наступному кроці (що зазвичай відповідає наступному кадру у вашій грі). І наступний, і так далі ...
Ви бачите спрайт, що рухається на екрані, тому що кожен кадр Ігрового двигуна запитує «Фізичний двигун»
Де зараз це тіло?
і Game Engine оновлює графічне подання відповідно.
Мені зазвичай подобається бачити Фізичний двигун як інструмент для застосування законів фізики декларативно .
Infact замість того, щоб писати код, щоб описати, які обчислення слід проводити, щоб визначити, де буде тіло на наступному кроці, я просто описую світ фізики, встановлюючи атрибути тіл (і самого світу фізики), і я дозволяю фізичному двигунові відповісти це питання для мене.