Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js InstancedBufferGeometry相交未发生_Three.js - Fatal编程技术网

Three.js InstancedBufferGeometry相交未发生

Three.js InstancedBufferGeometry相交未发生,three.js,Three.js,我尝试了Instancedbuffergeometry,效果非常好, 在InstancedBufferGeometry中未发生相交,我在threejs(r85)库中进行了检查,checkBufferGeometryIntersection函数仅具有位置值,我认为偏移和方向值需要与位置一起使用 我还有一个疑问,我只使用了一种rawshadermaterial,那么我如何突出显示选定的几何体 有人能在里面指路吗 提前感谢。就cpu而言(在进行光线投射时),这些实例并不存在。但是,您的主几何图形可用。

我尝试了Instancedbuffergeometry,效果非常好, 在InstancedBufferGeometry中未发生相交,我在threejs(r85)库中进行了检查,checkBufferGeometryIntersection函数仅具有位置值,我认为偏移和方向值需要与位置一起使用

我还有一个疑问,我只使用了一种rawshadermaterial,那么我如何突出显示选定的几何体

有人能在里面指路吗


提前感谢。

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

如前所述,使用实例化几何体的光线投射无法工作

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

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


您可以看到此技术的示例,或者。

基于CPU的光线投射与基于GPU的实例不兼容,除非您编写自定义代码来处理它。three.js r.85这里的答案有什么问题,你希望在github上得到什么?@pailhead。正如WestLangley所说,我正在尝试使用自定义着色器编程。他还说不要在github上发布并使用SO。