我想创建一个大场景使用three.js.并且它包含许多目标。我使用THREE.OBJMTLLoader加载30个对象。它们的大小是4M。所有计算可能是120M。但我的计算机内存是消耗98%的4G内存,现场可能消耗1200M内存。 如何花这么多。有没有办法控制webgl的记忆?我的应用程序执行一个控制对象按场景条件显示的功能,但是如果使用scene.remove(obj),它就不能释放它的ram。
for(var j=0;j<30;j++){
loads.push(new THREE.OBJMTLLoader());
}
for(var i=0;i<10;i++){
(function(){
var index=i;
loads[i].addEventListener( 'load', function ( event ) {
var object = event.content;
var minX,minY,minZ,maxX,maxY,maxZ;
object.position.normalize();
object.position.y = 0;
object.position.x = 1000+2200*index;
object.position.z = 400;
object.rotation.y=Math.PI*0.5;
object.scale.x=object.scale.y=object.scale.z=600;
scene.matrixAutoUpdate = false;
scene.updateMatrix();
groupobjs.push(object);
// scene.add(groupobjs[groupobjs.length-1]);
// scene.add( object );
});
loads[i].load( 'obj/bieshu2.obj', 'obj/beishuhou.mtl' );
})();
}
答案 0 :(得分:1)
OBJMTLLoader
效率不高。请尝试使用OBJLoader
。理想情况下来自dev
分支。