2016-11-05 14 views
2

私は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の例を勉強しています。それは魅力のように機能します、私は私のコードで再作成できるかどうかを見ています。 –

関連する問題