选择克隆网格

时间:2013-03-14 14:45:35

标签: three.js

问题:

我创建了一个网格并克隆了它。当我尝试选择一个时,两者都被选中。网格具有不同的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().materialobject.material.clone()之间的材料有何不同?  var geo = new THREE.CubeGeometry(....) var material = new THREE.MeshLambertMaterial(....) for(var i = 0; i < 10; i++){ var mesh = new THREE.Mesh(geo, material); }

当我使用相同的材​​质创建多个网格时,同样的行为。在一个网格上向下鼠标将选择所有10个网格。例如:

{{1}}

1 个答案:

答案 0 :(得分:3)

  

当我尝试选择一个时,两者都被选中。

事实并非如此。只有一个被选中,但两者都被突出显示。

克隆网格会创建一个新网格,但新网格与原始网格共享材质(和几何体)。

因此,在您的演示中,您只有一个网格共享的材质实例。

这就是为什么当你改变一个网格的颜色时,另一个网格也会改变。