如何从Object3D中删除和处理所有子几何和网格?

时间:2015-02-25 16:12:08

标签: javascript memory-leaks three.js

在我正在研究的这个项目中,我展示了几个Collada模型,然后在不再需要时将其移除。在项目的某个地方似乎存在内存泄漏,我正在寻找方法让它尽可能顺畅地运行,因为时间不在我身边...... 我觉得我没有以正确的方式移除网格,这可能会导致我的一些内存泄漏。

我用LoadObject(level_1_character, "Assets/Level_1_Character.dae");加载对象,例如level_1_character是Object3D。这会调用以下函数:

function LoadObject(name, url) {
            var mesh, geometry, material, animation;
            var loader = new THREE.ColladaLoader();
            loader.options.convertUpAxis = true;
            loader.load(url, function(col) {
                mesh = col;
                geometry = col.scene;
                name.name = url.toString();
                name.add(geometry);
            });
        }

我根据scene.add(level_1_character);的级别将对象添加到场景中,然后通过执行以下操作将其删除:

level_1_character.traverse(function(child){
            if (child instanceof THREE.Mesh) {
                child.material.dispose();
                child.geometry.dispose();
            }
        });

我不确定这是否真的完全删除了对象。似乎对象仍然存在于内存中。知道我在这里做错了吗?

0 个答案:

没有答案