Я новичок в трех js. В моем проекте мне нужно нарисовать землю с большим количеством текстуры. Земля имеет много слоев, каждый слой имеет 4 текстуры и текстуры в разных слоях разного размера. Под изображением описывают землю: Граунд одна сетка имеет несколько материал:Динамическое изменение очень много текстур очень низкая производительность
this.mesh = new THREE.Mesh(geometry, new THREE.MultiMaterial(materials));
Предположим, у меня есть машина всегда в центре земли, другими словами, в центре всех слоев. Когда он движется, земля переводится, чтобы автомобиль всегда находился в центре. Поэтому каждый раз переводите текст, мне нужно обновить текстуру в новом положении. Рисунок рисуем 3 слоя для иллюстрации, но в моем проекте 6 слоев. Поэтому каждый раз, когда меняется вся текстура, это означает, что нужно изменить 6 * 4 = 24 текстуры, и это вызывает низкую fps в моей программе.
Это моя функция, чтобы загрузить текстуру из индексированной БД каждый раз, когда изменение текстуры:
Ground.prototype.loadTextureFromIndexedDB = function (url, materialIndex) {
var loader = new THREE.TextureLoader();
loader.crossOrigin = '';
loader.load(url,
function (texture) {
var groundMaterial = ground.mesh.material.materials[materialIndex];
groundMaterial.map.dispose();
groundMaterial.map = texture;
groundMaterial.map.anisotropy = ground.maxAnisotropy;
groundMaterial.map.minFilter = THREE.LinearFilter;
groundMaterial.map.needsUpdate = true;
img = null;
window.URL.revokeObjectURL(url);
});
}
Я пробовал много решений. Один из них представляет собой сетку с BufferGeometry и MultiMaterial с массивом ShaderMaterial. Насколько я знаю, это лучший результат для THREE JS, не так ли? Если это тогда, возможно, ТРИ JS не так сильно, как я думал. Должен ли я перейти на другой API для моего проекта? Кто-нибудь предлагает мне какое-либо решение для повышения производительности в моей программе? Большое спасибо!
вы не дают никакой информации о том, почему вам нужны все эти текстуры, Вы также не дают никакой информации о том, как вы реализуете его сейчас. Без этой информации вам сложно помочь. – 2pha
Спасибо @ 2pha за ваш комментарий. Мне был изменен мой вопрос, поэтому я надеюсь, что вы сможете найти то, что я ошибаюсь в своем коде. – congle
Итак, у вас есть 1 наземный самолет с многоматериалом на нем? Какие материалы вы используете в этом многомерном материале? Вы считали, что пишете свой собственный ShaderMaterial? – 2pha