Three.js:如何更新BufferGeometry顶点

20

我只需要更新一个有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个回答

21

在您的情况下,当您更新顶点时,需要在渲染循环中添加以下内容:

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

创建几何体时,您可以删除行 position.needsUpdate = true

我还建议您升级到当前版本。

three.js r.63


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接