Я использую код ниже, чтобы загрузить и клонировать модель GLTF. На практике это работает, однако это слишком много ресурсов, и модель составляет около 2 МБ. У него нет текстур, а материалы представляют собой единый MeshPhongMaterial.
Я понимаю, что два способа оптимизировать это - объединить их в один me sh вместо клонирования, однако после многочисленных попыток (таких как итерация в пределах функции загрузки с a для l oop), я имею не смог успешно сделать это. Второе - создание экземпляров, однако из ряда примеров я понимаю, что для обработки атрибутов требуется материал шейдера.
Я немного не в себе и буду очень признателен за любую помощь.
Большое спасибо!
loader.load('obj/floor/floor-base-details-base.gltf', (gltf) => {
floorBaseModel = gltf.scene;
floorBaseModel.traverse( function ( node ) {
if ( node.isMesh ) {
node.castShadow = true;
node.receiveShadow = true;
if ( node instanceof THREE.Mesh ) {
node.material = base_material;
}
}
});
for(var i = 0; i < 15; i++){
var floorBaseClone = floorBaseModel.clone();
offsetPos = (i+1)* -595;
floorBaseClone.position.set(0,0,offsetPos);
floorBaseGroup.add(floorBaseClone);
}
});
floorBaseGroup.scale.set(1,1,1);
floorBaseGroup.position.set(0,-15,425);
scene.add(floorBaseGroup);