我试图使用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,是否可以使用不同的材料?任何提示都表示赞赏。
提前致谢。
答案 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