(THREE.js)材质不适用于我的自定义THREE.Geometry形状

时间:2015-08-04 11:49:52

标签: colors three.js geometry

我创建了一个三角形,我试图让它变红。但它仍然是黑色的。这个问题似乎不是材料,因为它适用于我制作的其他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;

但无论我把它放在什么变化/哪里,它都不想工作。三角形保持黑色。

1 个答案:

答案 0 :(得分:0)

顶点定义按逆时针顺时针顺时针顺序排列。因此,如果您将new THREE.Face3(0,1,2)更改为new THREE.Face3(0,2,1),您应该会看到一些内容。