【问题标题】:Three.js Clipping and RaycastingThree.js 剪辑和光线投射
【发布时间】:2016-12-07 05:21:11
【问题描述】:

我正在使用glClipPlane - Is there an equivalent in webGL? 此处的答案实现剪辑。

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

【问题讨论】:

    标签: three.js


    【解决方案1】:
    if (renderer.clippingPlanes.length > 0) {  
      objs = objs.filter(function(elem) {  
        return renderer.clippingPlanes.every(function(elem2) {  
          return elem2.distanceToPoint(elem.point) > 0;  
        });  
      });  
    }
    

    【讨论】:

    • 虽然这段代码可能会解决问题,但应该始终添加解释。
    【解决方案2】:

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

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

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

    Here 是 GPU 拾取的三个.js 示例。

    three.js r.82

    【讨论】:

    • 谢谢。我使用平面到点的距离检查在应用层实现了它。
    猜你喜欢
    • 1970-01-01
    • 2014-03-01
    • 1970-01-01
    • 2016-06-19
    • 2014-07-24
    • 2021-07-05
    • 1970-01-01
    • 2017-12-13
    • 2019-11-18
    相关资源
    最近更新 更多