在THREEjs中为每个面设置随机颜色会产生黑色物体

时间:2017-03-29 08:37:14

标签: javascript three.js

我正在尝试渲染几何图形,每个面都用随机颜色着色。

我遍历Escape并为每张脸设置一个随机颜色。在那之后我创建了一个新材料,它被添加到网格中。在我看来,我已经设置了所有必要的标志,但我的物体仍然在场景中呈现黑色。

场景包含两个方向灯以及环境光。如果我使用geometry.faces,对象也会显示为黑色,但会有一些来自定向光的反射。

以下是代码:

THREE.MeshPhongMaterial

我使用的是最新版本的three.js:r84

有人看到我错过的东西吗?

1 个答案:

答案 0 :(得分:0)

咦!我知道了! 我们不能只为面部指定颜色,但我们需要将它分配给每个顶点。是的,那么我们有插值,这不是我想要的东西,但至少我们可以看到颜色。如果有人知道如何在没有插值的情况下直接为脸部指定颜色,我将不胜感激!

这是代码的新版本,只需调整for循环:

var faceIndices = [ 'a', 'b', 'c' ];
for ( var i = 0; i < geometry.faces.length; i ++ ) {
    var face  = geometry.faces[ i ];
    for( var j = 0; j < 3; j++ ) {
        color = new THREE.Color( 0xffffff );
        color.setHex( Math.random() * 0xffffff );
        face.vertexColors[ j ] = color;
    }
}