2011-06-20 4 views
16

Я пытаюсь выбрать физический движок для простого программного приложения. Это было бы симулировать довольно небольшое количество объектов, поэтому производительность не вызывает большого беспокойства. Меня в основном интересует точность движения. Мне также хотелось бы, чтобы движок был межплатформенным между windows/linux/mac и использовался с кодом C++. Я смотрел Bullet, Newton Game Dynamics и ODE, потому что они с открытым исходным кодом. Однако, если Havok/PhysX значительно точнее, я бы тоже подумал об этом.Bullet vs Newton Game Dynamics vs Физические двигатели ODE

Все, что мне кажется, это мнения о двигателях, есть ли какие-либо тщательные сравнения между вариантами? Или у кого-нибудь есть опыт, который пытается развить различные двигатели. Поскольку то, что я пытаюсь сделать, относительно просто, вероятно, нет большой разницы между ними, но я хотел бы услышать, что люди могут сказать о вариантах? Благодаря!

+3

Когда вы говорите, аккуратная, какие движения вы имеете в виду? Достаточно просто точно моделировать баллистические траектории, но тем более для чего-либо, связанного с столкновениями или другими мгновенными событиями. У пули для одного есть проблемы, но я подозреваю, что и другие физические двигатели тоже. –

+0

Я хочу просто моделировать кинематику одного тела (не обязательно жесткую) в условиях переменной гравитации с различными силами, применяемыми в определенное время (т. Е. Внезапно начинающий махал). На самом деле я не собираюсь делать какие-либо столкновения. – Anon

ответ

5

Извините, но вы никогда не найдете реального сравнения относительно точности. Я ищу три месяца для моей магистерской диссертации и не нашел ее. Поэтому я начал делать сравнение самостоятельно, но это еще долгий путь. Я тестирую 3D-двигатели и даже 2d-моторы, и теперь Chipmunk - это тот, который с наивысшей точностью до сих пор. Поэтому, если вам не нужно 3d, я бы рекомендовал это сделать. Однако, если у вас есть срочная потребность в 3d, и ваша проблема так же проста, как вы ее описали (не хотите расширять ее в будущем?) Bullet и ODE сделают это. Я бы предпочел Bullet, потому что он намного более современный и по-прежнему активно поддерживается. По крайней мере, есть Ньютон, с которым я сейчас сражаюсь. Поэтому я не могу дать вам плюсы и минусы, за исключением того, что это немного больше, чтобы познакомиться с (критической) плохой документацией. Надеюсь, что помогает. С наилучшими пожеланиями.

3

Одна вещь, которую я нашел очень ценной в ODE, - это способность изменять практически каждый параметр «на лету». Например, двигатель, похоже, не жалуется, если вы изменяете инерцию или даже форму тела. Вы можете заменить сферу коробкой, и все будет просто работать, или изменить размер сферы. Другие двигатели не так гибки, как правило, потому что они много работают внутри для целей оптимизации. Что касается точности, насколько мне известно, ODE по-прежнему поддерживает очень точный (но медленный) решатель, который, очевидно, не очень популярен в игровой индустрии, потому что вы не можете играть с более чем 25-30 объектами в реальном времени. Надеюсь это поможет.

+6

Итак, вы можете смоделировать [это] (http://www.qwantz.com/fanart/superman.pdf) в ODE! –

+0

+1 для этого редкого понимания. Живое редактирование, вероятно, является обязательным требованием для меня .. но .. это игры, которые не делают это все время в Пуле и Ньютоне? Они настраивают множество значений времени выполнения i recon, или это то, что они в основном ограничены созданием/удалением и удалением объектов? –

7

Хотя это немного устаревшие, есть всеобъемлющее сравнение (в алфавитном порядке) Пуля, JigLib, Ньютон, ОДА, PhysX и других доступной здесь:

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

4

Отметьте Simbody, который используется в технике. Это особенно хорошо для моделирования шарнирных тел. Он был использован в течение более 5 лет, чтобы имитировать динамику опорно-двигательный аппарат человека. Это также один из физических двигателей, используемых в Gazebo, среде моделирования роботов.

https://github.com/simbody/simbody

http://nmbl.stanford.edu/publications/pdf/Sherm2011.pdf

+0

На самом деле это не «физический движок»; это один из нескольких поддерживаемых и только недавно получил поддержку в беседке. – Catskul

+0

Благодарим вас за исправление. Я обновил ответ. – chrisdembia

3

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

  1. Box2D (экспериментальный)
  2. пуля
  3. Dynamechs (устаревшее)
  4. Havok (экспериментальный)
  5. IBDS (экспериментальный)
  6. JigLib
  7. Meqon (устаревший)
  8. Ньютон
  9. ОДА
  10. OpenTissue (экспериментальный)
  11. PhysX (ака NovodeX, Ageia PhysX, NVIDIA PhysX)
  12. Simple Physics Engine (экспериментальный)
  13. Токамак
  14. TrueAxis

Согласно December 2007 paper, связанным в this answer:

Из двигателей с открытым исходным кодом двигатель Bullet обеспечил наилучшие результаты в целом, превосходя даже некоторые из коммерческих двигателей. Tokamak был наиболее эффективным в плане вычислений, что делает его хорошим выбором для игры , но TrueAxis и Newton отлично справились с низкой скоростью обновления . Для симуляционных систем необходимо определить наиболее важное свойство , чтобы выбрать лучший двигатель .

Вот сентября 2007 демо того же автора:

https://www.youtube.com/watch?v=IhOKGBd-7iw