我正在尝试使用单个平面来显示多种材质。我目前正在使用MultiMaterial和我打算在其中使用的材料(纹理)。
我遇到的问题是我使用的材料似乎在整个平面上分成了每个面部的小块。但是我希望材料覆盖1 / n量的平面/网格。
我目前的代码(缩短):
var splitX = 2;
var splitY = 2;
var geometry = new THREE.PlaneGeometry(800, 800, splitX, splitY);
var materials = [
new THREE.MeshBasicMaterial({
map: preloaded texture..., side: THREE.DoubleSide
}),
new THREE.MeshBasicMaterial({
color: 0xff0000, side: THREE.DoubleSide
})
];
// set a single square inside the plane to the desired textured material
geometry.faces[0].materialIndex = 0;
geometry.faces[1].materialIndex = 0;
// set the other squares inside the plane to use the coloured material
for(var i = 1; i < geometry.faces.length / 2; i++) {
geometry.faces[i * 2].materialIndex = 1;
geometry.faces[i * 2 + 1].materialIndex = 1;
}
var mesh = new THREE.Mesh(geometry, new THREE.MultiMaterial(materials));
scene.add(mesh);
我标记了纹理的每个角落,看它是否会显示我指定的2个面中的整个纹理,但它没有。任何帮助将不胜感激,以解决这个问题! :)