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

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

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

Введение

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

Как это обрабатывается в 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. Все права сохранены.