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