Javascript 在移动对象之间绘制直线
我试图在两个移动的顶点之间画一条线。顶点的图形存储在一个名为Javascript 在移动对象之间绘制直线,javascript,three.js,Javascript,Three.js,我试图在两个移动的顶点之间画一条线。顶点的图形存储在一个名为object的变量中,该变量具有一个位置,该位置是一个3.Vector3 该行是这样创建的: var Line = function(scene, source, target){ var geometry = new THREE.Geometry(); geometry.dynamic = true; geometry.vertices.push(source.object.position); geometry.ve
object
的变量中,该变量具有一个位置
,该位置是一个3.Vector3
该行是这样创建的:
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.position
和target.object.position
分配给line.geometry.vertices[0]
和line.geometry.vertices[1]
,因为我希望一个顶点与另一个一起更新。但是,顶点位置与直线位置相差很大。顶点在它们所在的位置,但直线不连接到顶点
如何使线随顶点移动?在动画循环中,必须设置
line.geometry.verticesNeedUpdate=true
。因为每次渲染后,它都会变成false
。示例不幸的是,这没有奏效。我确实有line.verticesNeedUpdate=true;但是队伍仍然到处都是。我还避免为位置向量分配任何可能留下旧引用的内容。.verticesNeedUpdate
是THREE.Geometry()
的属性,而不是THREE.Line()
对象的属性。您看过我的JSFIDLE示例了吗?对不起,是的。这就是我的意思:line.geometry.verticesNeedUpdate。我正在研究您的JSFIDLE示例。它就像一个符咒,我想看看是否可以在我的代码中重新创建它。