在three.r84

时间:2017-04-20 11:08:09

标签: javascript three.js

我最近从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来尝试多种操作。这些都没有奏效。

任何帮助都将受到高度赞赏。

谢谢,

ķ

1 个答案:

答案 0 :(得分:0)

由于您已经需要重新创建顶点,因此重建整个云的工作并不多:

geometry.dispose();
geometry = new THREE.Geometry();

geometry.vertices.push(...);

scene.remove(pointCloud);
pointCloud = new THREE.Points(geometry, material);
scene.add(pointCloud);

https://codepen.io/Sphinxxxx/pen/zwqvmP