Three.js加载大场景和ram满98%,如何控制内存

时间:2014-10-05 13:50:52

标签: javascript three.js

我想创建一个大场景使用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' );
                })();
            }

1 个答案:

答案 0 :(得分:1)

OBJMTLLoader效率不高。请尝试使用OBJLoader。理想情况下来自dev分支。