three.js场景射线拾取

68 阅读1分钟
/**
 * event 鼠标事件
 * objects 所需拾取的场景数据
 * camera 相机
 */
getIntersects(event: any, objects: any, camera: any) {
    event.preventDefault()
    // global.app.container 挂载的dom
    let rect = global.app.container.getBoundingClientRect()
     // 世界坐标与窗口坐标的换算;
    var array = [(event.clientX - rect.left) / rect.width, (event.clientY - rect.top) / rect.height]
    this.onUpPosition.fromArray(array)
    this.mouse.set(this.onUpPosition.x * 2 - 1, -(this.onUpPosition.y * 2) + 1)
    this.raycaster.setFromCamera(this.mouse, camera)
    return this.raycaster.intersectObjects(objects, false)
}