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

简短答案:为每个对象创建一种材质,而不是为所有对象创建一种材质

解释:正如 WestLangley 指出的那样,我只需要为每个子对象创建一个单独的材质,而不是让它们都共享相同的材质,即将材质创建放在用于生成对象的循环中,以便每个对象都有自己的材质. 这样,每个对象的材料都会单独更改。

于 2013-08-23T17:22:33.807 回答