С чего мне начать писать/использовать движок моделирования 3D-физики?

StackOverflow https://stackoverflow.com/questions/601468

  •  03-07-2019
  •  | 
  •  

Вопрос

Мне нужно написать очень простой трехмерный физический симулятор на Java, где куб и сферы сталкиваются друг с другом, не более того.Я никогда не делал ничего подобного, с чего мне начать?Есть какая-нибудь документация о том, как это делается?какие библиотеки я мог бы использовать повторно?

Это было полезно?

Другие советы

Предполагая, что вы хотите начать, как это сделать, лучше всего начать с ручки и бумаги.Начните определять фокусные точки вашего приложения (например, сферу объектов, куб и т. д., правила, такие как гравитация, столкновение и т. д., определите иерархию объектов и т. д.).

Если вы знаете, как это сделать, и хотите получить представление о технологии, Swing — хороший вариант для создания пользовательских интерфейсов на Java.

Также загляните сюда: http://www.myphysicallab.com/

Урок 39 НеХе — хорошая отправная точка, он написан на C++, но теорию довольно легко понять.

Хорошая библиотека физики Java — jmephysicals (http://www.jmonkeyengine.com/jmeforum/index.php?topic=6459);он довольно прост в использовании и находится поверх ODE (http://www.ode.org/) и jmonkeyengine (http://www.jmonkeyengine.com), который дает вам график сцены (http://en.wikipedia.org/wiki/Scene_graph), опять же, то, что вам понадобится для чего-то помимо очень простого 3D-приложения.

Однако я не пользовался им какое-то время и вижу, что они не выпускались с конца 2007 года, поэтому не уверен, насколько активно сообщество сейчас.

Как насчет того, чтобы сначала определить класс физического объекта?Он имеет положение, скорость, массу и, возможно, подклассы с другими характеристиками, такими как форма, эластичность и т. д.

Затем создайте вселенную (класс), куда поместите эти физические объекты.Звучит забавно :)

Если вам нужно моделировать только сферы/круги и кубы, то все, что вам нужно, это немного векторной математики.

Например, для моделирования простой игры в бильярд каждый шар (сфера) должен иметь положение, трехмерную линейную скорость и трехмерный вектор линейного ускорения.Ваша симуляция будет включать в себя множество маленьких кадров, которые будут постоянно обновлять каждый шарик.Если два или более шаров сталкиваются, вы просто суммируете векторы и вычисляете новые скорости для всех шаров.Например, если мяч ударяется о стену, все, что требуется, — это перевернуть знак мяча, чтобы он отскочил назад...

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

Вы можете начать на этом форуме сообщества, чтобы собрать информацию о том, как все делается:gamedev.net

Конечно, вы можете использовать движок с открытым исходным кодом, например Огр если вы не хотите писать свой собственный код.

Посмотрите физику пули. BulletPhysics.com это форум или проверьте проект на Sourceforge.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top