Поради, необхідні для двигуна фізики


12

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

Перш за все, я бачив, що гра-фізика-розробник двигунів настійно рекомендується для вирішення цього завдання, і мені було цікаво, чи можете ви дати мені другу думку. Чи можу я його зрозуміти? Крім того, під час перегляду Amazon я натрапив на архітектуру Game Engine, і оскільки я хочу побудувати свій фізичний двигун для ігор, я подумав, що це також може бути добре прочитаним.

По-друге, я знаю, що моделювання фізики дуже інтенсивно обчислюється, тому я хотів би використовувати або CUDA, або OpenCL. Право зараз я схиляюся до OpenCL, тому що це буде працювати як на NVIDIA, так і на ATI чіпсетах. Що ви, хлопці, пропонуєте?

PS: Я буду реалізовувати це в C ++ в Linux.

Відповіді:


10

Ось як я навчився писати фізичний двигун, його все безкоштовно і дуже рекомендується:

  1. Документи Девіда Барафф в Particulary Введення в фізичне моделювання

  2. Динамічна імітація твердих систем тіла з дисертацією Брайана Вінсента Міртіха

  3. Качич / Баллок "Практична система динаміки" SIGRAPH 2003, EDIT: Посилання додано .

Ці документи були згадані в іншій чудовій статті Ніка Порчіно (LucasArts) в одній із книг про дорогоцінні камені Gems 4 "Написання двигуна фізики на основі Верле". Це не безкоштовно, але воно коштує кожної копійки.

Також подивіться на інші двигуни, ось джерело двигуна Bullet Physics .

Про реалізацію CUDA / OpenCL: спочатку змусьте її працювати на процесорі, це досить складно :)

Будьте в курсі, що, швидше за все, ви через деякий час викинете свій двигун, оскільки його занадто важко зробити стабільним і добре інтегрованим двигуном фізики з конкурсний список функцій самостійно, однак це чудовий досвід навчання!

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

І останнє, але не менш важливе: ігноруйте зіткнення, коли ви починаєте, спочатку зосередьтеся на стабільному моделюванні.


Це виглядає як чудова відповідь, але ви, можливо, захочете трохи відформатувати його.
Качка комуністична

Дякую за відгук. Я погоджуюся, що мені не вдасться зробити конкурентоспроможний двигун, але моя головна мета - це частина навчання.
adivasile

1
@ Комуністична качка дякую за підказку, я був новим у стороні, і я визнаю, що я лінувався перевірити параметри формату, виправив це :)
Maik Semder

1
Додав посилання на папір Качича, сподіваємось, що це правильно :)
Рей Дей

5

Майк має рацію, документи Барафа - чудовий початок, але не забувайте, що Кріс Хекерс пише про жорстку динаміку тіла: http://chrishecker.com/Rigid_Body_Dynamics !

Також його поради щодо "[..] ви викинете двигун" цілком вірні. Але ти багато чого навчишся!

Що стосується частини CUDA / OpenCL вашого запитання: Якщо ви знаєте CUDA, то перехід на OpenCL стає дуже простим. Я рекомендую спочатку вивчити CUDA, оскільки там так багато хороших навчальних посібників, приклад кодів та бібліотек обчислень. Наприклад:

Але майте на увазі: почати роботу на CUDA - це просто, почати роботу з фізичного моделювання - це набагато складніше, але поєднувати обидва - досить складно!


ви абсолютно праві, це ще один чудовий ресурс, про який треба згадати, +1 для статті Кріса Хекера
Maik Semder

4

Я також почав з Барафом, але це вже трохи датується. Вам потрібні ітеративні розв'язувачі та найкращий папір для цього - « Ітеративна динаміка Еріна Катто» . У вас є все необхідне там, щоб реалізувати свій фізичний двигун. Ви можете трохи зануритися в кандидатську дисертацію Ерлебена, якщо вам потрібні більше деталей (наприклад, стики та інші математичні речі), але це майже все. Мені б хотілося, щоб я його знайшов із самого початку - трохи пройдіться на форумі Bullet, там є багато інформації (можливо, занадто багато).

Що стосується книг, то багато книг там невтішні, але я рекомендую анімацію на основі фізики Кенні Ерлебен або «Фізичні перлини гри».

Не знаю багато CUDA / OpenCL (хоча я завжди хотів це зробити), але ви обов'язково повинні перевірити роботу Такахіро Харади.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.