Three.js剪辑和光线投射

Three.js剪辑和光线投射,three.js,Three.js,我正在使用这里的答案实现剪辑 我尝试过全局和逐对象剪裁。我的光线投射器与对象的剪裁部分相交。有没有办法保证光线投射器只与对象的可见部分相交?在GPU上进行剪裁。正常光线投射发生在CPU上 您必须在应用程序级别在光线投射逻辑中实现剪裁 另一种方法是使用GPU拾取。您将不得不花费一些时间来理解它是如何工作的,以及它是否适合您的用例 是一个3.js的GPU拾取示例 three.js r.82在GPU上进行剪裁。正常光线投射发生在CPU上 if (renderer.clippingPlanes.leng

我正在使用这里的答案实现剪辑


我尝试过全局和逐对象剪裁。我的光线投射器与对象的剪裁部分相交。有没有办法保证光线投射器只与对象的可见部分相交?

在GPU上进行剪裁。正常光线投射发生在CPU上

您必须在应用程序级别在光线投射逻辑中实现剪裁

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

是一个3.js的GPU拾取示例


three.js r.82在GPU上进行剪裁。正常光线投射发生在CPU上

if (renderer.clippingPlanes.length > 0) {  
  objs = objs.filter(function(elem) {  
    return renderer.clippingPlanes.every(function(elem2) {  
      return elem2.distanceToPoint(elem.point) > 0;  
    });  
  });  
}
您必须在应用程序级别在光线投射逻辑中实现剪裁

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

是一个3.js的GPU拾取示例


three.js r.82

谢谢。我使用平面到点的距离检查在应用层实现了它。谢谢。我在应用层使用平面到点的距离检查实现了它。虽然这段代码可能会解决问题,但应该始终添加解释。虽然这段代码可能会解决问题,但应该始终添加解释。
if (renderer.clippingPlanes.length > 0) {  
  objs = objs.filter(function(elem) {  
    return renderer.clippingPlanes.every(function(elem2) {  
      return elem2.distanceToPoint(elem.point) > 0;  
    });  
  });  
}