Stefano Maglione Stefano Maglione - 1 year ago 125
Javascript Question

Threejs remove all together object from scene

I tried to make a function to remove all object from scene in one shoot but it removes only one object for invocation.

GeometryModel.prototype.clearScene = function(scene) {
var i;
for(i=0; i < scene.children.length; i++){
obj = scene.children[i];

another solution I tried and that works is this:


but I am not sure if it is correct.

Answer Source

You have to do the opposite:

for( var i = scene.children.length - 1; i >= 0; i--) { }

because in each iteration the .children array changes once you do a .remove() from the start and the indexing of that array changes.

If you want to understand it better, unroll the for loop and follow what the index into the array is.