抓住相机附近的物体

时间:2014-05-29 19:34:27

标签: three.js

我正在查看http://threejs.org/examples/webgl_nearestneighbour.html,并提出了一些问题。我看到他们使用kdtree来粘贴所有粒子位置,然后有一个函数来确定最近的粒子和颜色。让我们说你有一个画布,大约有100个缓冲几何,大约有72000个顶点/几何。我知道这样做的唯一方法是获取缓冲几何的位置,然后将它们放入kdtree以确定最近的顶点并从那里开始。这听起来很贵。

还有其他方法可以返回相机附近的物体。像THREE.LOD那样的东西呢? http://threejs.org/examples/#webgl_lod它可以根据您输入的设置查看对象的距离并呈现不同的级别。

1 个答案:

答案 0 :(得分:1)

定义"昂贵"。 kdtree的目的是快速找到最近邻元素,它的主要关注点不在于节省内存(尽管它在一个类型化阵列上完成所有内容,但它已经在内存方面退出了便宜)。如果你需要节省内存,你可能需要找到另一种方式。 然而,长度为21&600;' 000的打字阵列确实有点长。我非常怀疑你必须拥有每一个顶点。为什么不为每个几何零件都有一个位置参考点?并且,如果您需要获取与该点相关联的顶点,则需要字典。然后你可以调用 myGeometryVertices [geometryReferencePoint]

Three.LOD适用于光线投射。如果你有一些(几百)个对象可能效果很好。如果你有数十万甚至数百万的职位,你会遇到麻烦。如果你不使用网格;你不能光线跟踪,例如一个粒子。

真的只是用它们构建自己的逻辑。这两者都没有提供预先构建的完美案例解决方案。