Threejs" geometry.colorsNeedUpdate = true"从r72开始打破?

时间:2015-12-21 20:27:03

标签: three.js

由于r72我无法更新几何顶点的颜色,这是一个已知问题还是我错过了什么?

这里的代码适用于r71但不适用于r72 / 73

 updateVertexColors: function(geometry) {
            var faceIndices = ['a', 'b', 'c', 'd'];
            for(var i = 0; i < geometry.faces.length; i++) {
                var f = geometry.faces[i];
                var n = (f instanceof THREE.Face3) ? 3 : 4;
                for(var j = 0; j < n; j++) {
                    var vertexIndex = f[faceIndices[j]];
                    var p = geometry.vertices[vertexIndex];
                    var color = this.lut.getColor(Math.abs(p.x));
                    f.vertexColors[j] = color;
                }
            }
            geometry.colorsNeedUpdate = true;
        },

颜色被正确分配,但在渲染时不会更新。

感谢。

2 个答案:

答案 0 :(得分:4)

如果您在colorsNeedUpdate上设置THREE.Geometry - 或设置任何needsUpdate标记 - 并且它似乎无效,请确保您像这样重新分配值:

face.vertexColors[ j ] = color;

相反,这样做:

face.vertexColors[ j ].copy( color ); // or use .set(), .setHex, etc.

这可能是库中的错误或限制。

three.js r.73

答案 1 :(得分:0)

这对我有用(更新为随机颜色):

face.color.setHex('0x' + Math.floor(Math.random() * 16777215).toString(16));