objects=[];
raycaster = new THREE.Raycaster();
mouse = new THREE.Vector2();
//监听全局点击事件,通过ray检测选中哪一个object
document.addEventListener("mousedown", (event) => {
  event.preventDefault();
  this.mouse.x = (event.clientX / this.renderer.domElement.clientWidth) * 2 - 1;
  this.mouse.y = - (event.clientY / this.renderer.domElement.clientHeight) * 2 + 1;
 

  this.raycaster.setFromCamera(this.mouse, this.camera);
  this.scene.children.forEach(child => {
    if (child instanceof THREE.Mesh) {//根据需求判断哪些加入objects,也可以在生成object的时候push进objects
      this.objects.push(child)
    }
})
var intersects = this.raycaster.intersectObjects(this.objects);
 

if (intersects.length > 0) {
  console.log(intersects[0].object)
}
}, false)

 

 
官方demo:https://threejs.org/examples/canvas_interactive_cubes.html

相关文章:

  • 2022-01-07
  • 2021-12-20
  • 2022-12-23
  • 2022-12-23
  • 2021-07-17
  • 2021-12-04
  • 2022-03-05
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2021-12-12
  • 2021-09-08
  • 2022-01-02
  • 2021-12-12
  • 2021-10-13
相关资源
相似解决方案