Докуметация Cтарт Статьи Форум Лента Вход
Не официальное русскоязычное сообщество

Многопоточная физика

Опубликованно: 12.06.2017, 23:55
Последняя редакция, Andry: 02.05.2018 11:57

Введение

Поскольку bullet еще не многопоточна или ускорена GPU, реализация jME3 позволяет запускать каждое ПространствоФизики(physics space) в отдельном потоке, который выполняется параллельно с рендерингом.

Как это обрабатывается в jme3 и bullet?

SimpleApplication с BulletAppState позволяет установить тип потока через

setThreadingType(ThreadingType type);

Где ThreadingType может быть ПОСЛЕДОВАТЕЛЬНЫМ(SEQUENTIAL) или ПАРАЛЛЕЛЬНЫМ(PARALLEL). По умолчанию ПОСЛЕДОВАТЕЛЬНЫЙ.

Вы можете активировать поток PARALLEL в методе simpleInitApp():

bulletAppState = new BulletAppState();
bulletAppState.setThreadingType(BulletAppState.ThreadingType.PARALLEL);
stateManager.attach(bulletAppState);

Теперь обновление физики происходит параллельно с render(), то есть после того, как были изменения пользователя в вызове update(). Во время цикла update() обновления физики приостанавливается. Таким образом, логика цикла все еще поддерживается: пользователь может устанавливать и изменять значения в объектах с физикой и графе сцены до того, как render() и physicsUpdate() вызываются параллельно. Это позволяет использовать методы физики в update(), как если бы он был однопоточным.

PARALLEL  SEQUENTIAL
1. update(), 2. render() и update() физики.  1. update(), 2. render(), 3. update() физики.
Профиль отладки физики отображается неточно (не синхронизирован)  Профиль отладки физики отображается точно.
Вы можете добавить больше ПространствФизики, используя несколько PARALLEL в bulletAppStates. Вы можете сделать это, если у вас есть объекты с физикой, которые никогда не сталкиваются (например, подземные валун и летающие пушечные ядра над землей), поэтому вы помещаете их в отдельные ПространстваФизики, что улучшает характеристики (меньше столкновений, которые нужно проверить!).

Переведено для jmonkeyengine.ru, оригинал
Автор перевода: Andry

Добавить комментарий

jMonkeyEngine.ru © 2017. Все права сохранены.