2013-03-14 166 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

當試圖選擇的一個,兩個被選擇。

這是不正確的。只有一個正在被選中,但都被突出顯示。

克隆網格會創建新的網格,但新網格與原始網格共享材質(和幾何體)。

因此在您的演示中,您只有兩個網格共享的材質實例。

這就是爲什麼當您更改一個網格的顏色時,另一個網格也會發生變化。