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().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);
}
4

1 回答 1

3

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

那不是真的。只有一个被选中,但两个都被突出显示。

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

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

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

于 2013-03-14T22:46:17.577 回答