gpt4 book ai didi

javascript - 三个js EffectComposer + BloomPass 不起作用

转载 作者:行者123 更新时间:2023-12-03 04:58:26 25 4
gpt4 key购买 nike

我一生都无法弄清楚出了什么问题(尤其是这两个 .js 文件没有文档记录),但我已将 EffectComposer 和 BloomPass 包含在我的项目中,并尝试像这样调用它:

parameters = { bloomStrength: 1.3, bloomFactor: 1.0,}

var renderPass = new THREE.RenderPass(scene, camera);
var copyPass = new THREE.ShaderPass(THREE.CopyShader);
copyPass.renderToScreen = true;

composer = new THREE.EffectComposer ( renderer );
composer.addPass(renderPass);
composer.addPass(copyPass);

var effectBloom = new THREE.BloomPass ( 3, 25, 5, 256);
composer.addPass (effectBloom);

BloomPass.js 本身抛出一个错误(不在我的代码中),指出“Uncaught TypeError: Cannot read property 'prototype' of undefined at BloomPass.js:76”BloomPass 76 行如下:

THREE.BloomPass.prototype = Object.assign( Object.create( THREE.Pass.prototype ), {

我相信由于这个原因,EffectComposer 也会抛出一个错误composer.addPass(effectBloom); 行:未捕获的类型错误:pass.setSize 不是 THREE.EffectComposer.addPass 的函数

pass.setSize( size.width, size.height );

知道我做错了什么吗?根据几个例子,我正确设置了一切......非常感谢任何帮助!

最佳答案

您应该将 CopyShader 放在 Composer 的末尾而不是中间。这段代码对我有用:

    renderer.autoClear = false;
composer = new THREE.EffectComposer(renderer);
var sunRenderModel = new THREE.RenderPass(scene, camera);
var effectBloom = new THREE.BloomPass(1, 25, 5);
var sceneRenderModel = new THREE.RenderPass(scene, camera);
var effectCopy = new THREE.ShaderPass(THREE.CopyShader);
effectCopy.renderToScreen = true;
composer.addPass(sunRenderModel);
composer.addPass(effectBloom);
composer.addPass(effectCopy);

关于javascript - 三个js EffectComposer + BloomPass 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42341932/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com