光线投射群组中的对象+群组中的对象

时间:2019-02-25 02:41:25

标签: three.js raycasting

我要实现的目标:起初,您只能在“可交互”组中选择对象。现在,当您单击“可交互”的对象时,您可以选择“主”组中的任何对象。 (您要拾取一个可交互对象,然后选择一个要放置的对象。)

“主”包含组“可交互”。现在,我只能从在“可交互”中进行选择切换到在“主”中进行“无交互”选择。

这是我的代码:

function render() {

  raycaster.setFromCamera(mouse, camera);

  if (obj_selected) {intersects = raycaster.intersectObjects(master.children)}
  else {intersects = raycaster.intersectObjects(interactable.children)}

  if (intersects.length > 0) {
    if (INTERSECTED) INTERSECTED.material.emissive.setHex(INTERSECTED.currentHex);

    INTERSECTED = intersects[0].object;
    INTERSECTED.currentHex = INTERSECTED.material.emissive.getHex();
    INTERSECTED.material.emissive.setHex( 0xf4425f );
  } else {
    if (INTERSECTED) INTERSECTED.material.emissive.setHex(INTERSECTED.currentHex);
    INTERSECTED = null;
  }

  renderer.render(scene, camera);

}

我希望我的解释不要太混乱。预先感谢。

1 个答案:

答案 0 :(得分:1)

没关系,我想通了!

因此,我没有将网格划分为组,而是将网格添加到了数组中。我有三个数组:主数组,静态数组和可交互数组。如果我掌握了交叉路口,那么我就可以访问场景中的所有对象而不会弄乱组。

结论:我只是在对事物进行分类时不认为应该使用组。