我正在尝试根据变量更改多维数据集的颜色.我创建了两个立方体,我想根据它们之间的距离改变颜色.
立方体的创建方式如下:
geometry = new THREE.CubeGeometry( 50, 50, 50 );
material = new THREE.MeshBasicMaterial( { color: 0xff0000, wireframe: true } );
cube = new THREE.Mesh( geometry, material );
scene.add( cube );
Run Code Online (Sandbox Code Playgroud)
现在我尝试过这样的事情:
if(distance > 20)
{
cube.material.color = 0xffffff;
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.我查看了示例,但找不到合适的内容.
尝试用不同的颜色绘制每个立方体面时,我发现了一个螺纹,提出了一种实现此目的的方法:
var geometry = new THREE.BoxGeometry(5, 5, 5);
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
});
Run Code Online (Sandbox Code Playgroud)
但是使用three.js r86,我得到以下结果:
得到了组成每个面孔的三角形,分别绘制。
为了达到理想的效果,我对上面的代码进行了以下修改:
var geometry = new THREE.BoxGeometry(5, 5, 5);
for ( var i = 0; i < geometry.faces.length; i += 2 ) {
var faceColor = Math.random() * 0xffffff;
geometry.faces[i].color.setHex(faceColor);
geometry.faces[i+1].color.setHex(faceColor);
}
var material = new THREE.MeshBasicMaterial({
color: 0xffffff,
vertexColors: THREE.FaceColors
});
Run Code Online (Sandbox Code Playgroud)
但这一切似乎有点奏效了!