【问题标题】:Post-processing to selected meshes对选定网格进行后处理
【发布时间】:2016-09-28 01:21:40
【问题描述】:

在 three.js 中是否可以仅对选定的网格应用后处理效果?

例如,在场景的其余部分没有的情况下,有一个具有颗粒效果的立方体。 谢谢!

【问题讨论】:

    标签: three.js post-processing


    【解决方案1】:

    是的。有一个three.js example 展示了如何使用遮罩对选定的网格应用后处理。

    我认为为了清楚起见可以改进该示例,但您可以像这样修改示例:

    composer4 = new THREE.EffectComposer( renderer, new THREE.WebGLRenderTarget( rtWidth, rtHeight, rtParameters ) );
    
    composer4.addPass( renderScene );
    composer4.addPass( renderMask );
    composer4.addPass( effectDotScreen );
    composer4.addPass( clearMask );
    composer4.addPass( effectVignette );
    

    你会得到这样的输出:

    这是一个复杂的例子,所以你必须仔细研究它

    三个.js.r.77

    【讨论】:

    • 谢谢@WestLangley,设法让它工作。但是我有一个与深度信息丢失有关的问题:是否可以使用三js的后期效果(主要作为片段着色器构建),用作网格的材料,绕过蒙版的需要?跨度>
    • 还有其他问题:我有一组围绕中心旋转的分离对象,我想对中心对象应用一个遮罩,与应用于围绕该对象旋转的一组分离对象的遮罩不同...有什么方法可以添加/减去蒙版以在两个元素中进行不同的后处理而不会出现深度故障?
    • (1) 是的,使用自定义 ShaderMaterial。 (2) 也许您应该发布一个新问题并询问社区。​​span>
    • 谢谢。对于(1),您能否提供一个示例或链接?对于 (2),stackoverflow.com/questions/38464211/…
    【解决方案2】:

    是的,如果你把你的对象放到另一个场景中。但是您将面临一个问题,即部门渲染,某些对象将始终位于顶部。这取决于您的场景情况。

    【讨论】:

    • 是的,我需要进行深度工作...例如,我不能先渲染同一个场景,然后对没有后处理的元素应用一些蒙版,然后在另一个场景中渲染除了“后处理元素”之外的所有内容。所以“非后处理元素”在第二个场景中不可见,但仍然遮挡了“后处理元素”..
    • 这取决于您使用的后期处理。我只知道使用渲染器进行后期处理,并且需要在整个场景中使用渲染器。
    • 我不能对材质应用着色器通道吗?或者调整材质着色器,根据屏幕坐标进行一些颜色/效果计算?
    • 谢谢!会检查它
    • 所以我做了一个后期处理片段着色器材质,并使用 MultiMaterial 将其添加到通常的 Phong/Lambert/Standard 中?
    猜你喜欢
    • 2015-08-12
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-18
    • 2020-06-27
    • 1970-01-01
    相关资源
    最近更新 更多