2016-04-27 19 views
0

在場景中,我添加了幾個網格物體(立方體)。每個立方體都有EdgeHelper。立方體移動並旋轉,Edgehelpers隨着它們移動和旋轉。Three.js:如何匹配EdgesHelper到網格

我想改變一個EdgeHelper的顏色,當它與關聯的立方體網格被選中時。 (選擇方法並不重要)。

因此,給定一個特定的立方體網格,我如何找到關聯的EdgeHelper對象?

回答

2

當您創建一個給定的meshedgesHelper,所有你需要做的是一個新的屬性添加到網格:

var mesh = new THREE.Mesh(...); 

var edgesHelper = new THREE.EdgesHelper(mesh); 

mesh.edgesHelper = edgesHelper; 

現在你可以改變助手顏色像這樣:

mesh.edgesHelper.material.color.set(0xff0000); 

three.js r.76

+0

很好用!非常感謝。但是我想知道THREE.js如何(不使用這個屬性技巧)保持任何EdgesHelper的位置和旋轉與其相應源「mesh」的位置和旋轉保持同步? – steveOw

+0

啊哈,找到了另一個答案......很多幫手都有這行代碼「this.matrix = object.matrixWorld;」即edgeHelper使用源網格物體的矩陣。 – steveOw

1

當您創建網格和EdgeHelpers你可以將它們分配相同的.name屬性:

mesh0.name = 0; 
edgeHelper0.name = 0; 

mesh1.name = 1; 
edgeHelper1.name = 1; 

...and so on 

**if you wrap this in a loop even better 

所以在選擇網可以通過讀取其.name屬性,並選擇相應的edgeHelper。

+0

謝謝。我可以看到這將如何工作。但是它需要對所有edgeHelpers進行掃描/檢查,以找到與.name值匹配的選定網格的.name值。所以我更喜歡WestLangley將edgeHelper指定爲網格屬性的方法。 – steveOw