我想在场景上添加遮罩效果。我发现了这个很酷的jsfiddle:https ://jsfiddle.net/f2Lommf5/4703/
我一直在想是否可以将纹理的白色部分设置为透明,以便可以根据上述平面纹理裁剪背景对象。
我试图发挥alphaTest
价值,但徒劳无功。
有谁知道如何达到这个结果?谢谢
我不确定100%知道您的预期结果,但是应该可以通过后期处理来实现效果。在下面的实时演示中,MaskPass
用于创建一个遮罩,其中未渲染实际美容通道的任何像素。重要的代码部分是:
var clearPass = new ClearPass();
var maskPass = new MaskPass( sceneMask, camera );
maskPass.inverse = true;
var renderPass = new RenderPass( scene, camera );
renderPass.clear = false;
var clearMaskPass = new ClearMaskPass();
var outputPass = new ShaderPass( CopyShader );
var parameters = {
minFilter: THREE.LinearFilter,
magFilter: THREE.LinearFilter,
format: THREE.RGBFormat,
stencilBuffer: true
};
var renderTarget = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, parameters );
composer = new EffectComposer( renderer, renderTarget );
composer.addPass( clearPass );
composer.addPass( maskPass );
composer.addPass( renderPass );
composer.addPass( clearMaskPass );
composer.addPass( outputPass );
请注意,蒙版对象(平面)是在单独的场景中管理的。
现场演示:https : //jsfiddle.net/e6p0axb1/5/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句