Three.js: BufferGeometry の頂点を更新する方法 質問する

Three.js: BufferGeometry の頂点を更新する方法 質問する

頂点が 2 つある線を更新する必要があり、r58 で変更された上記のものを使用しようとしていますが、線を移動できません。初期化するためにこれを作成しました。

var geometry = new THREE.BufferGeometry();
geometry.addAttribute('position', Float32Array, 2, 3);
geometry.dynamic = true;

var position = geometry.attributes.position;
position.needsUpdate = true;

var p = position.array;

var i = 0;
p[i++] = vertex1.position.x;
p[i++] = vertex1.position.y;
p[i++] = vertex1.position.z;
p[i++] = vertex2.position.x;
p[i++] = vertex2.position.y;
p[i] = vertex2.position.z;

var color = new THREE.Color();
color.g = color.b = 1 - this.value;

var material = new THREE.LineBasicMaterial({
  color: color.getHex(),
  linewidth: 5 // THIS DON'T WORKS IN WINDOWS?
});

this.model = new THREE.Line(geometry, material);

更新レンダリングでは、次の操作を実行します。

var p = this.model.geometry.attributes.position.array;

var i = 0;
p[i++] = vertex1.position.x;
p[i++] = vertex1.position.y;
p[i++] = vertex1.position.z;
p[i++] = vertex2.position.x;
p[i++] = vertex2.position.y;
p[i] = vertex2.position.z;

しかし、線は移動したりレンダリングされたりしませんでした。

ベストアンサー1

あなたの場合、頂点を更新するときにレンダリング ループに以下を追加する必要があります。

this.model.geometry.attributes.position.needsUpdate = true;

position.needsUpdate = trueジオメトリを作成するときに線を削除できます。

また、最新バージョンにアップデートすることをお勧めします。

three.js r.63

おすすめ記事