В физическом движке Oimo.js каждая физическая сущность, будь то тело или объект сцепления, может находиться в состоянии покоя. Это ключевой механизм оптимизации: объекты, которые не движутся и не испытывают значительных сил, автоматически переводятся в спящий режим (sleeping), что снижает нагрузку на вычисления и увеличивает производительность симуляции.
Однако в ряде случаев необходимо принудительно разбудить
объект, чтобы он вновь начал участвовать в расчетах физики. Для
этого используется метод wakeUp.
wakeUpМетод wakeUp применяется к экземплярам класса
RigidBody. Его назначение — перевести тело из спящего
состояния в активное, независимо от текущих сил и импульсов. Это
особенно важно при сценариях, когда:
Пример синтаксиса:
rigidBody.wakeUp();
Здесь rigidBody — объект типа
OIMO.RigidBody.
Принудительное пробуждение объекта через wakeUp сразу
включает его в цикл интеграции движка. В Oimo.js это означает:
Важно понимать, что wakeUp не изменяет текущую скорость или ускорение объекта, а лишь переводит его из состояния sleep в активное.
Часто wakeUp используется совместно с:
applyForce — для моментального
приложения силы к телу;setLinearVelocity и
setAngularVelocity — для изменения
кинематики объекта.Пример применения:
rigidBody.wakeUp();
rigidBody.applyForce(new OIMO.Vec3(0, 100, 0));
rigidBody.setLinearVelocity(new OIMO.Vec3(0, 10, 0));
В этом случае объект не только активируется, но и получает начальное ускорение, что делает поведение симуляции предсказуемым.
Необходимость для статических объектов Если тело
было переведено в режим static и затем обратно в
dynamic, вызов wakeUp гарантирует, что оно
начнет корректно реагировать на силы.
Массовые симуляции В проектах с большим
количеством тел, которые могут находиться в покое, чрезмерное
использование wakeUp может снизить производительность.
Следует применять метод только к объектам, которые действительно должны
активизироваться.
События столкновений Oimo.js автоматически
разбудит тело при сильном внешнем воздействии, однако слабые
взаимодействия или программные изменения позиции могут требовать явного
вызова wakeUp.
wakeUp для всей
цепочки.wakeUp только при
необходимости, чтобы не перегружать физический движок.wakeUp для редких программных ситуаций.Метод wakeUp обеспечивает точный контроль
состояния активности объектов в Oimo.js и является неотъемлемым
инструментом для сложных интерактивных симуляций и игр.