相关疑难解决方法(0)

Three.js Collada - 处理()和释放内存(垃圾收集)的正确方法是什么?

我已经通过ColladaLoader成功导入了.dae场景.

问题是,我需要在几个.dae文件之间切换.

我似乎无法正确实现dispose方法.

        dae.traverse(function(obj) {

            console.log('unloading ' + obj.id);

            scene.remove(obj);

            if(obj.geometry)
                obj.geometry.dispose();
            if(obj.material)
                obj.material.dispose();
            if(obj.mesh)
                obj.mesh.dispose();
            if(obj.texture)
                obj.texture.dispose();

        });

        scene.remove(dae);
Run Code Online (Sandbox Code Playgroud)

我可能做错了什么?

非常感谢提前!


编辑:

这是整个代码.

    var renderer = null;
    var scene = null;
    var camera = null;
    var controls = null;
    var dae = null;
    //var loader = null;

    function init() {


        renderer = new THREE.WebGLRenderer( { alpha: 1, antialias: true, clearColor: 0xffffff } );
        renderer.setSize( 800, 600 );

        var elem = $('.main3d')[0];
        elem.appendChild( renderer.domElement );

        scene = new THREE.Scene();

        camera …
Run Code Online (Sandbox Code Playgroud)

blender collada three.js

8
推荐指数
2
解决办法
6260
查看次数

在three.js中释放内存

我的应用程序加载了很多网格.摆脱旧网格我试图处理它们.但记忆永远不会被释放.

我错过了什么吗?

我复制的简单例子:

  1. 加载100个大二进制网格
  2. 再次处置所有这些
  3. chrome任务管理器说使用250mb内存,它与没有第2步的情况完全相同

    MEMTEST

    var scene = new THREE.Scene();
    var mymesh=Array();
    
    // 1. load a lot of geometry/meshes...
    
    for(var i=0;i<100;i++)
    {
        var bloader;
        bloader = new THREE.BinaryLoader();
    
        bloader.load( "objekte/presto_6.js" , function( geometry ) 
        {
            mymesh.push(new THREE.Mesh( geometry, new THREE.MeshBasicMaterial( {color:0xffffff } ) ));
            scene.add(mymesh.length-1);
        });
    }
    
    // 2. try to dispose objects and free memory...
    
    for(var j=0;j<mymesh.length;j++)
    {
        mymesh[j].geometry.dispose();
        mymesh[j].material.dispose();
        screne.remove(mymesh[j]);
    }
    
    mymesh=Array();
    
    </script>
    
    Run Code Online (Sandbox Code Playgroud)

javascript memory three.js

4
推荐指数
1
解决办法
9442
查看次数

用threejs释放内存

当我使用scene.remove(网格)移除网格时,我有一些问题在三j中释放内存,网格被删除但似乎没有释放从js使用的内存.

我正在使用webglrenderer和缓冲几何来测量网格和窗口.

javascript three.js

1
推荐指数
1
解决办法
866
查看次数

标签 统计

three.js ×3

javascript ×2

blender ×1

collada ×1

memory ×1