Three.LinePieces有不同的材料(颜色)?

时间:2013-03-17 00:12:49

标签: javascript graph three.js visualization

我试图使用three.js绘制一个边长超过10k的密集图。

LinePieces用于提高性能,但我无法弄清楚如何为每条边(Line)指定不同的颜色,因为只能使用一个“材质”来创建Line对象。

以下是一些代码:

function drawEdges() {
    edgeGeometry = new THREE.Geometry();
    edgeMaterial = new THREE.LineBasicMaterial({ opacity: 0.1 });
        foreach source-target node pair:
            edgeGeometry.vertices.push(new THREE.Vector3(source.x, source.y));
            edgeGeometry.vertices.push(new THREE.Vector3(target.x, target.y));
    }
    var edges = new THREE.Line(edgeGeometry, edgeMaterial, THREE.LinePieces);
    scene.add(edges);
}

我的问题是:如果使用THREE.LinePieces,是否可以使用不同的材料?任何提示都表示赞赏。

提前致谢。

1 个答案:

答案 0 :(得分:2)

如果您使用WebGLRenderer,则可以。

在几何体中,您需要指定geometry.colors,一个THREE.Color()数组,其长度等于顶点数。

然后你这样指定材料和网格:

var material = new THREE.LineBasicMaterial( {
    color: 0xffffff,
    vertexColors: THREE.VertexColors
} );

var mesh = new THREE.Line( geometry, material, THREE.LinePieces );

示例:http://mrdoob.github.com/three.js/examples/webgl_lines_colors.html

three.js r.57