Как отключить 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