Three.js通过按钮控制加载后模型部分构件在选中后删除。

由于加载的模型并不是直接在scene的children中,所以要进行筛选,不能直接使用scene.remove,主要代码如下:

if (intersects.length !== 0 && intersects[0].object instanceof THREE.Mesh) {
    intersects[0].object.material = changedMaterial;
    //获取到选中构件的name
    removeByName = intersects[0].object.name;
}
document.getElementById('removeMesh').onclick = function() {
    selectedObject = scene.getObjectByName(removeByName);
    scene.traverse(function (obj) {
        if (obj.type === 'Group') {
        group = obj;
    }
    })
    selectedObject.traverse(function (obj) {
    if (obj.type === 'Mesh') {
        obj.geometry.dispose();
        obj.material.dispose();
    }
    })
    group.remove(selectedObject);
}    

记得使用dispose释放所有后代网格模型绑定几何体占用内存

最终效果如下:

 

posted @ 2021-01-20 11:15  Chill_寒  阅读(506)  评论(0编辑  收藏  举报