我正在使用Three.js r83。THREE.js动态添加点到点几何不会渲染
我想动态地添加点到几何,但场景永远不会更新。
这工作:
var tmaterial = new THREE.PointsMaterial({
color: 0xff0000,
size: 5,
opacity: 1
});
var tgeometry = new THREE.Geometry();
var pointCloud = new THREE.Points(tgeometry, tmaterial);
for(var i = 0; i< 1000; i++) {
x = (Math.random() * 200) - 100;
y = (Math.random() * 200) - 100;
z = (Math.random() * 200) - 100;
tgeometry.vertices.push(new THREE.Vector3(x, y, z));
}
tgeometry.verticesNeedUpdate = true;
tgeometry.computeVertexNormals();
scene.add(pointCloud);
这不起作用:
var tmaterial = new THREE.PointsMaterial({
color: 0xff0000,
size: 5,
opacity: 1
});
var tgeometry = new THREE.Geometry();
var pointCloud = new THREE.Points(tgeometry, tmaterial);
scene.add(pointCloud);
for(var i = 0; i< 1000; i++) {
x = (Math.random() * 200) - 100;
y = (Math.random() * 200) - 100;
z = (Math.random() * 200) - 100;
tgeometry.vertices.push(new THREE.Vector3(x, y, z));
}
tgeometry.verticesNeedUpdate = true;
tgeometry.elementsNeedUpdate = true;
tgeometry.computeVertexNormals();
renderer.render(scene, camera);
正如你看到的,唯一的区别是,我加入顶点前加scene.add(pointCloud);
。
我错过了什么?
你可以找到一个fiddle由于@hectate
要明白我的意思,只是更换
init(); setPoints(); animate();
通过
init(); animate(); setPoints();
你是什么three.js所的版本?检查文档[这里](https://github.com/mrdoob/three。js/wiki /更新)如何更新的东西... – Wilt
请参阅http://stackoverflow.com/questions/36699389/verticesneedupdate-in-three-js/36699654#36699654和http://stackoverflow.com/questions/ 31399856 /绘图一个行与 - 三JS-动态/ 31411794#31411794。 – WestLangley
@WestLangley我目前正在探索BufferGeometry,看起来像点的数量是固定的。 – Ant