2013-03-14 131 views
3

问题:选择克隆网格

我创建了一个网格并将其克隆。当我尝试选择一个时,两者都被选中。网格具有不同的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()之间的材料有什么区别?

相同的行为是当我用相同的材​​料创建多个网格。鼠标放在一个网格上将选择全部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); 
} 

回答

3

当试图选择的一个,两个被选择。

这是不正确的。只有一个正在被选中,但都被突出显示。

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

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

这就是为什么当您更改一个网格的颜色时,另一个网格也会发生变化。