阅读量:4
1.场景清空,释放内容
// 假设你已经有一个Three.js的场景对象scene // 函数:清空场景中的所有对象 function clearScene(scene) { while(scene.children.length > 0){ const object = scene.children[0]; if(object.isMesh) { // 如果有几何体和材质,也进行清理 object.geometry.dispose(); if(object.material.isMaterial) { cleanMaterial(object.material); } else { // 材质组是数组,所以我们需要遍历它 for(const material of object.material) cleanMaterial(material); } } scene.remove(object); // 从场景中移除对象 } } // 辅助函数:清理材质资源 function cleanMaterial(material){ material.dispose(); // 清理材质 if(material.map) material.map.dispose(); // 清理贴图 if(material.lightMap) material.lightMap.dispose(); if(material.bumpMap) material.bumpMap.dispose(); if(material.normalMap) material.normalMap.dispose(); if(material.specularMap) material.specularMap.dispose(); if(material.envMap) material.envMap.dispose(); // ... 清理其他你使用的材质资源 } // 使用方法: clearScene(scene);
2.选中物体
如果放在像若依这种前端框架中,会有菜单栏导致计算坐标的位置发生偏移
使用clientX配合getBoundingClientRect函数计算坐标即可