问题:
我创建了一个网格并克隆了它。当我尝试选择一个时,两者都被选中。网格具有不同的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()
之间的材料有何不同?
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}}
答案 0 :(得分:3)
当我尝试选择一个时,两者都被选中。
事实并非如此。只有一个被选中,但两者都被突出显示。
克隆网格会创建一个新网格,但新网格与原始网格共享材质(和几何体)。
因此,在您的演示中,您只有一个网格共享的材质实例。
这就是为什么当你改变一个网格的颜色时,另一个网格也会改变。