InstancedBufferGeometry交叉没有发生

时间:2017-06-13 07:24:18

标签: three.js

我尝试了 Instancedbuffergeometry ,它很棒, 交叉点没有发生在 InstancedBufferGeometry 中,我在threejs(r85)库中检查过,checkBufferGeometryIntersection函数只有位置值,我认为偏移和方向值需要与位置一起使用。

我对此有另一个疑问,我只使用了一个rawshadermaterial,然后我如何突出显示选定的几何体。

任何人都可以参考。

提前致谢。

2 个答案:

答案 0 :(得分:1)

就cpu而言(在哪里进行光线投射),这些实例不存在。但是,您可以使用主几何体。您可以做的是,创建另一个BufferGeometry实例,然后使用该几何实例创建相同数量的Mesh个对象。使用相同的逻辑进行实例化以将其放入场景中。您不渲染它们,从而节省了多次绘制调用的开销。你确实可以将它们用于交叉,就好像它是普通的几何体一样,因为它(你只是不渲染它)。

答案 1 :(得分:1)

正如@pailhead已经写过的那样,带有实例几何的光线投射无法正常工作。

实现相同目标的另一种方法是使用所谓的GPU选择。为此,您可以使用特殊着色器将场景渲染为帧缓冲区,该着色器仅为每个实例输出唯一的颜色值。

然后,您可以从该帧缓冲区中对光标下的点进行采样,并从颜色值计算实例ID。

您可以看到此技术的示例herehere