我实际上发现了this个问题,但它说material.color
不存在。我需要知道如何更改我正在绘制的立方体的各个面的颜色:
var newCube = new THREE.Mesh(new three.CubeGeometry(size, size, size), new three.MeshNormalMaterial({ vertexColors: three.FaceColors }));
答案 0 :(得分:33)
以下是设置和更改立方体面部颜色的方法:
var geometry = new THREE.BoxGeometry( size, size, size );
for ( var i = 0; i < geometry.faces.length; i ++ ) {
geometry.faces[ i ].color.setHex( Math.random() * 0xffffff );
}
var material = new THREE.MeshBasicMaterial( { color: 0xffffff, vertexColors: THREE.FaceColors } );
如果在渲染几何体后更改了geometry.faces[i].color
,则必须设置geometry.colorsNeedUpdate = true
。 (canvasRenderer
不需要这样做。)
three.js r.84
答案 1 :(得分:6)
此处is a fiddle适用于在此结束并希望看到此代码正常工作的人。
我制作了一个盒子并将三种颜色绑在脸上:
// colors
red = new THREE.Color(1, 0, 0);
green = new THREE.Color(0, 1, 0);
blue = new THREE.Color(0, 0, 1);
var colors = [red, green, blue];
for (var i = 0; i < 3; i++) {
geometry.faces[4 * i].color = colors[i];
geometry.faces[4 * i + 1].color = colors[i];
geometry.faces[4 * i + 2].color = colors[i];
geometry.faces[4 * i + 3].color = colors[i];
}
在animate
循环中更改了面部颜色。
同时使用a related question here检查a great answer,以证明在THREE.BufferGeometry
个实例上使用了材料索引和组。