选择three.js中边界框中的所有对象

时间:2013-05-20 17:15:35

标签: three.js

我使用threex中提供的优秀代码,允许我捕获场景中各种对象的点击,这样我就可以选择它们。这没有问题。

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

查看三个/三个,一般onclick算法似乎是:

  • 将鼠标项目投射到Ray
  • 使用ray.intersectObjects(scene),它会测试场景中每个对象的光线 路口

这适用于单个' 1D'在系统中使用光线,但似乎并不是一种简单的方法来修改它以使用选择框。

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

1 个答案:

答案 0 :(得分:3)

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

我不会使用Raycaster.intersects()

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

然后,考虑选择那些screenCoords在屏幕空间的选择框内的对象。

如果你需要完全遏制,那么你必须为每个顶点做上述操作,或者使用像边界球这样的近似值。

three.js r.58