首页 > 解决方案 > Three.js - 有没有办法在 Raycaster 中使用选择框?

问题描述

我有一个 GLTF 场景,我在其中尝试了示例选择框代码)来选择多个网格。

但是,结果是不准确的,因为它基于每个网格的质心进行挑选,并且还会获取相机不可见的网格(查看房屋模型的一侧会选择框方向上的所有墙壁)。

我还尝试过使用Raycaster,它非常适合使用鼠标/指针进行选择。

有没有办法在 Raycaster 中使用一个选择框或两个 Vector3(框的起点和终点)?

标签: javascriptthree.jsraycasting

解决方案


您可以使用 aRaycaster创建一个Frustum.

  1. 创建两个Plane对象来表示相机的nearanffar平面。
  2. 使用 将Raycaster选择区域的起点/终点与Plane对象相交。
  3. 使用交点来定义Frustum.
  4. 使用Frustum.containsPointandFrustum.intersectsObject查看特定对象是否在您的选择区域内。

推荐阅读