Как отключить Physijs для повышения производительности на мобильных устройствах?

Я пытаюсь найти способ улучшить производительность моей карточной игры на мобильных устройствах (в комплекте с Cordova).

Сценарий определяет, доступен ли WebGL, и возвращается к Canvas 2d, если он не поддерживается. Но я получаю низкие 5-10 кадров в секунду на моем Samsung Galaxy S4.

Можно ли отключить Physijs? Если нет, то как я могу переписать функции Physijs, чтобы они возвращали только объекты ThreeJS вместо объектов Physijs? Exmeple:

if(disablePhysics) {
        Physijs.createMaterial(elem,v1,v2) {
            return elem;
        }
    }

Ваша помощь, как всегда, ценна, спасибо:)

1 ответ

Если вы хотите отключить физическую симуляцию Physijs на своей веб-странице, то все, что вам нужно сделать, это не вызвать scene.simulate() метод в вашем цикле рендеринга:

function render(){
    if(!disablePhysics){
        scene.simulate();
    }

    renderer.render();
}

Безопасно создавать объекты Physijs и не выполнять имитацию на них. Они наследуют от ТРИ Object3D и его дети, так что должно быть более или менее то же самое без альтернатив Physijs. Просто у каждой сцены есть связанный с ней рабочий, и было бы бесполезно иметь просто сидящий поток. Решение на самом деле легко: создать новый THREE.Scene и перенести все свои Physijs.Mesh возражает против этого.

Заключение

Итак, при отключении физики:

  • Не звони scene.simulate()
  • Просто заполните свою сцену Physijs как обычно
  • Вы можете перенести все свои Physijs.Mesh возражает против THREE.Scene вместо того, чтобы держать их в Physijs.Scene
Другие вопросы по тегам