解决threejs对mesh进行clone后“修改material原皮肤也变更”问题

本文探讨了threeJS中clone方法的使用细节,特别是当使用Raycaster射线选择obj模型并增强颜色时,发现原对象material也会变化的问题。文章解释了原因在于threejs的clone方法仅实现浅拷贝,并提出了解决方案:对内部对象也进行clone。

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");

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牟云飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值