2016-04-27 8 views
0

シーンには、いくつかのメッシュオブジェクト(キューブ)が追加されています。各キューブに対してEdgeHelperが作成されています。キューブが移動して回転し、Edgehelpersが移動して回転します。Three.js:EdgesHelperとメッシュを一致させる方法

関連するキューブメッシュが選択されている場合、EdgeHelperの色を変更したいと思います。 (選択方法は重要ではありません)。

特定のキューブメッシュを指定すると、関連するEdgeHelperオブジェクトはどうやって見つかりますか?

答えて

2

あなたが与えられたmeshためedgesHelperを作成し、あなたがメッシュに新しいプロパティを追加するだけですが:

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

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

var edgesHelper = new THREE.EdgesHelper(mesh); 

mesh.edgesHelper = edgesHelper; 

は今、あなたがそうのようなヘルパーの色を変更することができます

three.js r.76

+0

素晴らしい作品!どうもありがとう。しかし、どのように(このプロパティのトリックを使用せずに)THREE.jsは、対応するソース "メッシュ"の位置と回転で同期されたEdgesHelperの位置と回転を維持するのだろうか? – steveOw

+0

あなたの答えの別のものを見つけました。多くのヘルパーがこのコード行を持っています。 "this.matrix = object.matrixWorld;"すなわち、edgeHelperは、ソースメッシュオブジェクトのマトリックスを使用する。 – steveOw

1

あなたは彼らに同じ.name属性に割り当てることができ、メッシュとEdgeHelpers作成:メッシュが選択されている場合

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

ありがとうございました。私はこれがどのように機能するか見ることができます。しかし、選択されたメッシュの.name値と一致する.name値を持つものを見つけるためには、すべてのedgeHelpersのスキャン/検査が必要です。だから私は、WestLangleyのメッシュのプロパティとしてedgeHelperを割り当てる方法を好む。 – steveOw

関連する問題