Вы можете пересечь объект сцены, проверить, какие у вас есть объекты, а затем удалить их. Если есть некоторые Meshes, которые вы хотите сохранить, укажите для них атрибут или имя и также проверьте это имя.
Следующий пример функции clearScene()
удаляет по вызову все меши из сцены, которые имеют keepMe
- атрибут набор для ложных или не имеют один вообще:
floor = new THREE.Mesh(/* ... */);
floor.userData = { keepMe: true };
// ...
function clearScene() {
var to_remove = [];
scene.traverse (function(child) {
if (child instanceof THREE.Mesh && !child.userData.keepMe === true) {
to_remove.push(child);
}
});
for (var i = 0; i < to_remove.length; i++) {
scene.remove(to_remove[i]);
}
}
Jsfiddle: http://jsfiddle.net/L0rdzbej/138/
Исключение-исправление на основе этого answer от @gaitat
Извините, но он не удаляет все сетки. Он удаляет некоторые из них. :/ – sRcBh
Он удаляет только первый, третий, пятый ... И я получаю сообщение об ошибке: 'TypeError: б [с] не определена \t ... б = this.children, с = 0, D = b.length, c
sRcBh
Ops, мой тестовый файл не был достаточно сложным, я проверю это :-) –