Three.js剪辑和光线投射

问题描述:

我正在使用这里的答案实现剪辑glClipPlane - Is there an equivalent in webGL?Three.js剪辑和光线投射

我已经尝试过全局和每个对象剪辑。我的raycaster正在交叉剪辑的部分对象。有没有办法保证raycaster只与物体的可见部分相交?

剪切发生在GPU上。正常的光线投射发生在CPU上。

您将不得不在应用程序级别的光线投射逻辑中实施剪裁。

另一种方法是使用GPU拾取。你将不得不花费一些时间来理解它是如何工作的,以及它是否适合你的用例。

Here是GPU挑选的three.js示例。

three.js所r.82

+0

谢谢。我使用平面到点距离检查在应用层实现了它。 – Patrick

if (renderer.clippingPlanes.length > 0) { 
    objs = objs.filter(function(elem) { 
    return renderer.clippingPlanes.every(function(elem2) { 
     return elem2.distanceToPoint(elem.point) > 0; 
    }); 
    }); 
} 
+1

尽管这段代码可能解决了这个问题,但应该总是给它添加一个解释。 – BDL