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释放所有后代网格模型绑定几何体占用内存。
最终效果如下: