Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否删除多个同名项目?_Javascript_Three.js - Fatal编程技术网

Javascript 是否删除多个同名项目?

Javascript 是否删除多个同名项目?,javascript,three.js,Javascript,Three.js,我在场景中添加了“n”个圆圈 var radius = 1; var segments = 32; var circleGeometry = new THREE.CircleGeometry( radius, segments); function generateCircles(){ //scene.remove(circle); var count=0; while (1000> count) { circle = new THREE.Mesh (circle

我在场景中添加了“n”个圆圈

var radius = 1; 
var segments = 32; 
var circleGeometry = new THREE.CircleGeometry( radius, segments); 
function generateCircles(){
  //scene.remove(circle);
  var count=0;
  while (1000> count) {
    circle = new THREE.Mesh (circleGeometry, material);
    scene.add (circle);
    count ++;
  }
}
这样做有效吗

在我的代码中,我调用了这个函数,每次调用它,它都会变慢,我想这是因为场景中有更多的对象。我能做什么

每次调用函数时,我都需要从内存阶段完全删除生成的圆


如果在将圆添加到场景后不需要移动或更改圆,则将它们全部合并到一个网格中并将它们作为一个网格添加到场景中会更有效。然后,只需在生成更多圆之前从场景中移除一个网格:

var radius = 1; 
var segments = 32; 
var circleGeometry = new THREE.CircleGeometry(radius, segments); 
var circlesMesh;

function generateCircles() {
  if (circlesMesh) { scene.remove(circlesMesh); }
  circlesMesh = new THREE.Mesh(circleGeometry, material);
  var count = 0;
  while (count++ < 999) {
    THREE.GeometryUtils.merge(circlesMesh, new THREE.Mesh(circleGeometry, material));
  }

  scene.add(circlesMesh);
}
var半径=1;
var段=32;
var圆几何=新的三个圆几何(半径、段);
var圆形网格;
函数generateCorcles(){
if(circlesMesh){scene.remove(circlesMesh);}
CircleMesh=新的三个网格(圆几何、材料);
var计数=0;
而(计数+++<999){
三.几何网格.合并(圆网格,新三.网格(圆几何,材料));
}
场景。添加(圆形网格);
}

你能发布JSFIDLE吗?@invot是的!