克隆.clone()和复制.copy() 是threejs很多对象都具有的方法,比如三维向量对象Vector3、 网格模型Mesh、几何体、材质。
.clone()
克隆克隆.clone()
简单说就是复制一个和原对象一样的新对象,下面以三维向量对象Vector3给大家举例,其他的threejs对象都可以参照类似的写法。
const v1 = new THREE.Vector3(1, 3, 2)
console.log('v1',v1)
// v2是新的Vector3对象,和v1的xyz属性值一样
const v2 = v1.clone()
console.log('v2',v2)
.copy()
复制复制.copy()
简单说就是把一个对象属性的属性值赋值给另一个对象,下面以三维向量对象Vector3给大家举例,其他的threejs对象都可以参照类似的写法。
const v1 = new THREE.Vector3(1, 3, 2)
const v3 = new THREE.Vector3(4, 5, 6)
// 读取v1的x y z 赋值给v3的x y z
v3.copy(v1)
.clone()
Mesh克隆通过mesh克隆.clone()
一个和mesh一样的新模型对象mesh2。
const mesh2 = mesh.clone()
mesh2.position.x = 100
通过克隆.clone()
获得的新模型和原来的模型共享材质和几何体
.clone()
几何体和材质克隆const mesh2 = mesh.clone()
// 克隆几何体和材质,重新设置mesh2的材质和几何体属性
mesh2.geometry = mesh.geometry.clone()
mesh2.material = mesh.material.clone()
//改变mesh2颜色,不会改变mesh的颜色
mesh2.material.color.set(0xff0000)