ТРИ. js - Объединение / вставка кратных одной и той же модели GLTF, без материала шейдера ..? - PullRequest
0 голосов
/ 03 мая 2020

Я использую код ниже, чтобы загрузить и клонировать модель 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);
...