0

そのため、three.js に raycaster があり、グループがいつロールオーバーされたかを検出できます。現在のところ、グループの子にマウスを合わせると、グループ全体のマテリアルが変更されるように機能しています。これが私の質問です。どの特定の子がロールオーバーされたかを検出し、その特定の子のみを強調表示するにはどうすればよいですか?

コードは次のとおりです。

var raycaster = new THREE.Raycaster(camera.position, vector.sub(camera.position).normalize());

var intersects = raycaster.intersectObjects(tiles_group.children, true);

if ( intersects.length > 0 ) {
  intersectedObject = intersects[0].object;        
  intersectedObject.material.emissive.setHex( 0xffffff );      
  intersected = true;      
} else {
  intersected = false;}

これは簡単なはずですが、何時間も検索して試した後、適切なロジック/構文が見つからないようです。この投稿を読んだり返信したりしてくれた人に、事前に感謝します!

4

1 に答える 1

1

短い答え : すべてのオブジェクトに対して 1 つのマテリアルを作成するのではなく、オブジェクトごとに 1 つのマテリアルを作成します。

EXPLANATION : WestLangley が指摘したように、すべての子オブジェクトに同じマテリアルを共有させるのではなく、子オブジェクトごとに個別のマテリアルを作成する必要がありました。 . このように、マテリアルはオブジェクトごとに個別に変更されます。

于 2013-08-23T17:22:33.807 に答える