解决threejs对mesh进行clone后“修改material原皮肤也变更”问题
程序员文章站
2022-05-26 19:10:50
...
threeJs提供了很多copy和clone方法,copy用来复制原对象属性到自己创建的新对象去,clone则直接复制一个新的对象,但是使用Raycaster射线做obj模型选择时,使用clone方式选择指定对象对其颜色进行增强,但是修改新对象的material原皮肤也变更。
这是因为threejs中的clone方法是一个浅度的clone,clone复制了新的对象,但是原对象内部的对象(属性为对象)不会被clone,我们需要对内部对象也进行clone就可以
borderMesh = mouseonverIntersects[i].object.clone();
borderMesh.material = borderMesh.material.clone();
borderMesh.material.color.set("#ff0000");