我正在尝试在单个平面上使用多个材质来创建一个简单的地形编辑器。因此,我创建了一些材质,并尝试为我的平面上的每个顶点分配一个材质索引:
var materials = [];
materials.push(new THREE.MeshFaceMaterial( { color: 0xff0000 }));
materials.push(new THREE.MeshFaceMaterial( { color: 0x00ff00 }));
materials.push(new THREE.MeshFaceMaterial( { color: 0x0000ff }));
// Plane
var planegeo = new THREE.PlaneGeometry( 500, 500, 10, 10 );
planegeo.materials = materials;
for(var i = 0; i < planegeo.faces.length; i++)
{
planegeo.faces[i].materialIndex = (i%3);
}
planegeo.dynamic = true;
this.plane = THREE.SceneUtils.createMultiMaterialObject(planegeo, materials);
但是如果我使用MeshBasicMaterial
而不是FaceMaterial
,要么在着色器中出现许多错误,要么只有一个全红平面。我做错了什么?