Qual è il modo corretto di rimuovere la scena della forma della mesh? In questo esempio:TRE js rimozione di oggetti dalla scena (ancora riservati in HEAP)
removable_items = [];
box = new THREE.Object3D();
scene.add(box);
function add() {
var mesh = new THREE.Mesh(new THREE.IcosahedronGeometry(10, 5), new THREE.MeshPhongMaterial({color: 0xFFFFFF}));
box.add(mesh);
removable_items.push(mesh);
//clean(); ///// when is integrated in function memory is cleaned properly
}
function clean() {
if(removable_items.length > 0) {
removable_items.forEach(function(v,i) {
v.parent.remove(v);
});
removable_items = null;
removable_items = [];
}
}
function makeExperiment(r) {
var i = 0;
while (i < r) {
add();
i++;
if(r === i) console.log(r+' finnished ');
}
}
makeExperiment(50);
/// dopo che i mannualy impostato clean();
maglie non sono visibili in scena più, come previsto, ma davanzale utilizzando la memoria, che dopo un certo tempo di rivestimento con perdita di memoria e crash del browser.
Dov'è il problema, THREE.js ha fatto altri riferimenti?
Three.js R73
EDIT: quando è clean();
integrato in funzione (commentata ora nel codice) memoria viene pulita correttamente. Ma quando ho impostato clean();
manualmente dopo che makeExperiment();
è terminato, la memoria non è impostata come libera.
sto guardando questo - che programma/strumento si usa per guardare la memoria? – dcromley
La tua dichiarazione 'new THREE.IcosahedronGeometry (1, 5)' Il 2 ° parametro è dettaglio. Avere come 5 rende un sacco di elaborazione. È quella parte del tuo problema a cui vuoi rispondere? L'impostazione predefinita è 1. – dcromley
Im che utilizza la mesh di dettaglio elevata per motivo, per illustrare chiaramente l'esempio di memoria. È lo stesso problema con i modelli JSON o OBJ, o la geometria della scatola, è sufficiente ripetere la funzione makeExperiment più a lungo. Sto usando la console chrome e l'istantanea della memoria di Chrome. – Martin