我最近从three.js版本71切换到版本84。 使用THREE.PointCloud时,很容易从场景中更新(添加和删除)点,如下所示:
function updatePoints(newData) {
geometry.dispose();
geometry.vertices = [];
geometry.vertices.push(...);
scene.add(newPoints);
render();
}
现在在修订版84中,THREE.PointCloud被THREE.Points取代,这种模式不再起作用了,而且我一无所知,为什么会这样。 我的实际代码在r71中完全正常,但在r84中只有一些点被删除。 raycaster不适用于应该移除的点,也不能对它们进行动画处理,但它们不会从场景中消失。
我通过向函数添加scene.remove(oldPoints);
和geometry.verticesNeedUpdate = true;
以及在渲染和添加点到场景之前添加不同的setTimeout
来尝试多种操作。这些都没有奏效。
任何帮助都将受到高度赞赏。
谢谢,
ķ
答案 0 :(得分:0)
由于您已经需要重新创建顶点,因此重建整个云的工作并不多:
geometry.dispose();
geometry = new THREE.Geometry();
geometry.vertices.push(...);
scene.remove(pointCloud);
pointCloud = new THREE.Points(geometry, material);
scene.add(pointCloud);