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

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

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

Введение

Поскольку 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. Все права сохранены.