我创建了一个三角形,我试图让它变红。但它仍然是黑色的。这个问题似乎不是材料,因为它适用于我制作的其他Geometries。
这是我的三角形:
var triangle = new THREE.Geometry();
triangle.vertices.push(
new THREE.Vector3(-10,10,0),
new THREE.Vector3(-10,-10,0),
new THREE.Vector3(10,-10,0)
);
triangle.faces.push(new THREE.Face3(0,1,2));
triangle.computeBoundingSphere();
this.redtriangle = new THREE.Mesh(triangle, this.redMat)
我在线尝试了一些建议,使用:
triangle.faces.push(new THREE.Face3(0,1,2));
triangle.faces[0].vertexColors[0] = new THREE.Color(0xFF0000);
triangle.faces[0].vertexColors[1] = new THREE.Color(0xFF0000);
triangle.faces[0].vertexColors[2] = new THREE.Color(0xFF0000);
我的资料
this.redMat = new THREE.MeshLambertMaterial ({
color: 0xFF0000,
shading:THREE.FlatShading,
// I added this line for the suggestion above
// vertexColors:THREE.VertexColors,
side:THREE.DoubleSide
})
我也试过插入
triangle.colorsNeedUpdate = true;
或
geometry.colorsNeedsUpdate = true;
但无论我把它放在什么变化/哪里,它都不想工作。三角形保持黑色。
答案 0 :(得分:0)
顶点定义按逆时针顺时针顺时针顺序排列。因此,如果您将new THREE.Face3(0,1,2)
更改为new THREE.Face3(0,2,1)
,您应该会看到一些内容。