0
我的应用程序中有几个按钮,点击时会将新对象加载到场景中。下面是被用于装载新对象的代码:在THREE.js中加载对象多次后,页面崩溃
character = new THREE.UCSCharacter();
var ucspath = "skinnedModel.json";
manager = new THREE.LoadingManager();
manager.onProgress = function(url, itemsLoaded, itemsTotal) {
console.log(url, itemsLoaded, itemsTotal);
};
var onProgress = function (xhr){
if(xhr.lengthComputable){
var bar = 150;
percentComplete = xhr.loaded/xhr.total * 100;
bar = Math.floor(xhr.loaded/xhr.total * bar);
document.getElementById("bar").style.width = bar + "px";
}
};
var loader = new THREE.XHRLoader(manager);
loader.crossOrigin = true;
loader.load(ucspath, function (text) {
var config = JSON.parse(text);
character.loadParts(config);
avatar = character.root;
avatar.name = "female";
scene.add(avatar);
}, onProgress);
点击按钮10〜12次后,装载变得越来越慢,最终的页面崩溃。我无法使用Chrome开发工具检测到任何不真实的行为。
是否有需要完成的任务,以便根据需要加载多个对象,而不会重载浏览器?
预先感谢。
你尝试[采取堆快照(https://developer.chrome.com/devtools/docs/heap-profiling#basics_snapshot)后每次点击一个按钮? 它是加载相同的模型? – neeh
感谢您的回复。每按一下按钮,快照的大小就会显着增加。我用照片更新了这篇文章。仍然不知道该怎么做。所有模型都非常相似(人形化身)。 –
看来你的模型非常沉重,如果Chrome因此崩溃,我不会感到惊讶。 你可以提供你的模型的平均尺寸/多计数的想法吗? 鉴于模型非常相似,是否可以使用'THREE.Mesh.clone()'为其他模型重复使用相同的基础模型? – neeh