2016-11-05 3 views
2

두 개의 움직이는 꼭지점 사이에 선을 그리려합니다. 버텍스의 그림은 이라는 변수에 저장되며, 인 position이 있습니다.움직이는 물체 사이에 선 그리기

선은 thusly 히 생성됩니다

var Line = function(scene, source, target){ 
    var geometry = new THREE.Geometry(); 
    geometry.dynamic = true; 
    geometry.vertices.push(source.object.position); 
    geometry.vertices.push(target.object.position); 
    geometry.verticesNeedUpdate = true; 

    var material = new THREE.LineBasicMaterial({ color: 0x000000 }); 
    var line = new THREE.Line(geometry, material); 

    scene.add(line); 
    return line; 
}; 

이 ..., 소스 및 대상은 정점과 정점 통해 업데이트받을 곳 : 이제

vertex.object.position.add(vertex.velocity); 

, 나는에 source.object.positiontarget.object.position 할당 line.geometry.vertices[0]line.geometry.vertices[1]을 업데이트하려면 다른 버전을 업데이트해야합니다. 그러나 대신 정점 위치가 선 위치와 크게 다릅니다. 꼭짓점은있는 위치이지만 선은 꼭지점에 연결되지 않습니다.

선을 정점과 함께 움직이게하려면 어떻게해야합니까?

답변

3

애니메이션 루프에서 line.geometry.verticesNeedUpdate = true을 설정해야합니다. 왜냐하면 렌더링 후에 매번 false이되기 때문입니다. jsfiddle

+0

불행히도, 그 트릭을하지 않았다. 나는 line.verticesNeedUpdate = true를 가지고있다; 그러나 선은 아직도 도처에있다. 또한 이전 참조를 남길 수있는 위치 벡터에 아무 것도 할당하지 않았습니다. –

+0

'.verticesNeedUpdate'는'THREE.Line()'객체가 아닌'THREE.Geometry()'의 속성입니다. jsfiddle 예제를 보셨습니까? – prisoner849

+0

죄송합니다, 예. 그것이 내가 의미했던 바입니다. line.geometry.verticesNeedUpdate. 나는 당신의 jsfiddle 예제를 연구하고있다. 그것은 매력처럼 작동합니다. 제가 코드에서 다시 만들 수 있는지 봅니다. –