2014-11-06 2 views
1

THREE.LineTHREE.LineBasicMaterial을 사용하고 THREE.VertexColors을 설정하여 다른 정점에 대해 서로 다른 색상의 Three.js로 선을 그려 넣으려고합니다. 인접 꼭지점의 색상 사이에 보간법이없는 것을 선호합니다 (예 : 두 꼭지점 사이의 중간 지점에서 색상이 불 연속적으로 변경됨).THREE.LINE의 정점 색상

나는 재료에 shading: THREE.FlatShading를 설정했지만, 나는 LineBasicMaterial을 위해 그 옵션이 아니에요 지금 실현 :

http://jsfiddle.net/214huf0a/이 줄에 지점 간의 색상의 스무딩을 방지하기 위해 내장 (또는 쉬운) 방법이 Three.js에서 또는 내 셰이더를 작성해야합니까?

답변

7

THREE.LineSegments을 사용하고 vertexColors = THREE.VertexColors을 설정하여 각 세그먼트에 하나의 색상을 갖는 three.js로 줄을 만들 수 있습니다. 내가 찾던 정확히 무엇을

for (var i = 0; i < geometry.vertices.length; i+=2) { 
    geometry.colors[ i ] = new THREE.Color(Math.random(), Math.random(), Math.random()); 
    geometry.colors[ i + 1 ] = geometry.colors[ i ]; 
} 

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

var line = new THREE.LineSegments(geometry, material); 

three.js를 r.85

+0

. 우리의 호기심은, Three.js가'LineBasicMaterial'을 표현하기 위해 사용하는 특정 쉐이더의 결과 인 'THREE.LinePieces'와는 다른 행동입니다. 또는 모드를 THREE.LinePieces로 설정하면' GL_LINE_STRIP'보다는 GL_LINES'을 사용 하시겠습니까? – caseygrun

+0

두 번째 것. – WestLangley

관련 문제