three mesh.clone() 问题

发现问题的场景:

有一个mesh,其他mesh都是基于此mesh去clone的,然后每个mesh都需要修改为自己的颜色,代码如下:

const solidLineMesh = this.solidLineMeshTemplate.clone();
solidLineMesh.material.color.setHex(color);

出现问题:每个mesh的颜色都是一样的,并没有根据color动态修改

原因:

mesh.clone()获取的新模型和原来的模型是共享材质的几何体的,所以代码改动如下

const solidLineMesh = this.solidLineMeshTemplate.clone();
solidLineMesh.material = this.solidLineMeshTemplate.material.clone();
solidLineMesh.geometry = this.solidLineMeshTemplate.geometry.clone();
solidLineMesh.material.color.setHex(color);

你可能感兴趣的:(webgl和threejs,js)