选择克隆网格
问题描述:
问题:选择克隆网格
我创建了一个网格并将其克隆。当我尝试选择一个时,两者都被选中。网格具有不同的ID,但材质和几何ID是相同的。
我创建了一个简单的jsfiddle例如:jsfiddle
我如何克隆:
var cloned = object.clone();
或
var cloned = new THREE.Mesh(object.geometry, object.material);
在这两种情况下,结果是一样的,在点击一个 - 同时选择。我试图改变材料ID,没有帮助。
如果我创造新的物质,那么一切都很好,我可以选择每个单独的对象:
var cloned = new THREE.Mesh(object.geometry, new THREE.MeshLambertMaterial(....));
或
var cloned = new THREE.Mesh(object.geometry, object.material.clone());
我的问题。object.clone().material
和 object.material.clone()
之间的材料有什么区别?
相同的行为是当我用相同的材料创建多个网格。鼠标放在一个网格上将选择全部10个网格。例如:
var geo = new THREE.CubeGeometry(....)
var material = new THREE.MeshLambertMaterial(....)
for(var i = 0; i < 10; i++){
var mesh = new THREE.Mesh(geo, material);
}
答
当试图选择的一个,两个被选择。
这是不正确的。只有一个正在被选中,但都被突出显示。
克隆网格会创建新的网格,但新网格与原始网格共享材质(和几何体)。
因此在您的演示中,您只有两个网格共享的材质实例。
这就是为什么当您更改一个网格的颜色时,另一个网格也会发生变化。