1

我正在使用threex中提供的优秀代码来捕捉对场景中各种对象的点击,这使我可以选择它们。这没有问题。

我想扩展选择功能,用户可以在其中绘制一个选择框(工作),并且我可以检测场景中在此选择中呈现的所有对象。

看threex/three,一般的onclick算法似乎是:

  • 将鼠标坐标投影到Ray
  • 使用ray.intersectObjects(scene),它测试场景中的每个对象的光线相交

这适用于系统中的单个“1D”射线,但似乎没有一种简单的方法可以修改它以使用选择框。

在我尝试扩展此机制以使用选择平截头体之前,是否有替代/现有设施?

4

1 回答 1

3

您的问题的答案是否定的,没有这样的现有设施。

我不会用Raycaster.intersects()这个。

可能最简单的做法是为每个对象分配一个 2DscreenCoords属性,并将其设置为等于对象世界位置的屏幕投影。搜索此站点以了解如何执行此操作。

screenCoords然后,将屏幕空间中选择框内的那些对象视为已选择。

如果您需要完全包含,那么您必须对每个顶点执行上述操作,或者使用边界球之类的东西作为近似值。

三.js r.58

于 2013-05-21T03:01:16.763 回答