Javascript 在three.js中是否可以将多个不同的纹理映射到几何体的一个面?

Javascript 在three.js中是否可以将多个不同的纹理映射到几何体的一个面?,javascript,three.js,Javascript,Three.js,是否可以将多个不同的纹理映射到three.js中几何体的一个面 我不想创建多个面并指定MaterialIndex,因为几何体所需的面数在运行时会发生变化 这是我最后一次失败的尝试(three.js r.71): 这将产生以下结果: 我还想看到右边的板条箱2,板条箱1上面的板条箱3等等。我不明白为什么不能将面分成4个面,并在每个面上绘制纹理。我不认为你可以在一张脸上画很多纹理,就像它是几个脸一样(你也不应该没有几个问题)。@Spencer,脸的数量和大小取决于其他因素。所以,我需要以编程的方式处

是否可以将多个不同的纹理映射到three.js中几何体的一个面

我不想创建多个面并指定MaterialIndex,因为几何体所需的面数在运行时会发生变化

这是我最后一次失败的尝试(three.js r.71):

这将产生以下结果:


我还想看到右边的板条箱2,板条箱1上面的板条箱3等等。

我不明白为什么不能将面分成4个面,并在每个面上绘制纹理。我不认为你可以在一张脸上画很多纹理,就像它是几个脸一样(你也不应该没有几个问题)。@Spencer,脸的数量和大小取决于其他因素。所以,我需要以编程的方式处理这个问题。目前我正在画布上绘制图像,并将其用作面材质,但存在性能问题。请检查此线程
//get some materials
var materials = [];
materials.push(loadTextures(1));
materials.push(loadTextures(2));
materials.push(loadTextures(3));
materials.push(loadTextures(4));
var faceMaterial = new THREE.MeshFaceMaterial(materials);

//create objects
var wireframeObj = new THREE.Mesh(geometry.clone(), new THREE.MeshBasicMaterial({
    wireframe: true,
    color: 'red'
}));
var mainObj = new THREE.Mesh(geometry, faceMaterial);
scene.add(wireframeObj);
scene.add(mainObj);

camera.position.z = 100;
renderer.render(scene, camera);

function loadTextures(i) {
    var texture = new THREE.Texture();
    texture.wrapS = THREE.RepeatWrapping;
    texture.wrapT = THREE.RepeatWrapping;
    texture.repeat.set(2, 2);

    var image = new Image();
    image.onload = function () {
        texture.image = this;
        texture.needsUpdate = true;
    };
    image.src = 'images/crate' + i + '.gif';

    return new THREE.MeshBasicMaterial({ map: texture });
}