Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
(Three.js)布卢姆在非布卢姆问题上_Three.js_Bloom - Fatal编程技术网

(Three.js)布卢姆在非布卢姆问题上

(Three.js)布卢姆在非布卢姆问题上,three.js,bloom,Three.js,Bloom,有人能稍微改变一下给出的例子来解决主要问题吗? 它将帮助每个人理解如何正确使用场景。遍历和对象材质。处置在一个真正简单的示例中(因为自由潜水有点复杂)。 绽放与不绽放应该是什么样子: 但在示例中,这是不正确的: 要查看和更改的示例 var scene=new THREE.scene(); var摄像机=新的三透视摄像机(60,window.innerWidth/window.innerHeight,11000); 摄像机位置设置(20,0,-20); 相机。图层。启用(1); var rend

有人能稍微改变一下给出的例子来解决主要问题吗? 它将帮助每个人理解如何正确使用场景。遍历和对象材质。处置在一个真正简单的示例中(因为自由潜水有点复杂)。 绽放与不绽放应该是什么样子: 但在示例中,这是不正确的:

要查看和更改的示例

var scene=new THREE.scene();
var摄像机=新的三透视摄像机(60,window.innerWidth/window.innerHeight,11000);
摄像机位置设置(20,0,-20);
相机。图层。启用(1);
var renderer=new THREE.WebGLRenderer({antialas:true});
renderer.autoClear=false;
renderer.setSize(window.innerWidth、window.innerHeight);
renderer.setClearColor(0x000000);
document.body.appendChild(renderer.doElement);
var controls=新的三个.OrbitControls(摄影机、渲染器.doElement);
var灯光=新的三方向灯光(0xffffff,0.75);
灯。位置。设置刻度(100);
场景。添加(灯光);
添加(新的三个环境光(0xffffff,0.25));
//不开花
var obj=new THREE.Mesh(new THREE.BoxGeometry(5,5,4),new THREE.MeshLambertMaterial({color:0xF0,线框:false}));
对象层集(0);
目标位置z=0;
场景。添加(obj);
var obj=new THREE.Mesh(new THREE.BoxGeometry(12,12,1),new THREE.MeshLambertMaterial({color:0x0000ff,线框:false}));
目标位置z=2.5;
对象层集(0);
场景。添加(obj);
var obj=new THREE.Mesh(new THREE.BoxGeometry(5,5,4),new THREE.MeshLambertMaterial({color:0xF0,线框:false}));
对象层集(0);
目标位置z=5;
场景。添加(obj);
//布鲁姆斯塔夫
var objBloomRed=new THREE.Mesh(new THREE.BoxGeometry(5,5,1),new THREE.MeshBasicMaterial({color:0xff0000,线框:false}));
objBloomRed.position.z=-2.25;
objBloomRed.layers.set(1);
scene.add(objBloomRed);
var objBloomGreen=new THREE.Mesh(new THREE.BoxGeometry(5,5,1),new THREE.MeshBasicMaterial({color:0x00ff00,线框:false}));
位置z=7.5;
objBloomGreen.layers.set(1);
场景。添加(绿色);
//“假”物体
var objRed=new THREE.Mesh(new THREE.BoxGeometry(5,5,1),new THREE.MeshBasicMaterial({color:0xff0000,线框:false}));
objRed.position.z=-2.5;
objRed.layers.set(0);
scene.add(objRed);
var objGreen=new THREE.Mesh(new THREE.BoxGeometry(5,5,1),new THREE.MeshBasicMaterial({color:0x00ff00,线框:false}));
objGreen.position.z=7.5;
objGreen.layers.set(0);
scene.add(objGreen);
/**作曲家*/
renderScene=新的三个。RenderPass(场景、摄影机)
effectFXAA=new THREE.ShaderPass(THREE.fxashader)
effectFXAA.uniforms.resolution.value.set(1/window.innerWidth,1/window.innerHeight)
bloomPass=new THREE.UnrealBloomPass(new THREE.Vector2(window.innerWidth,window.innerHeight),1.5,0.4,0.85)
bloomPass.threshold=0.21
bloomPass.strength=1.2
孔型半径=0.55
bloomPass.renderToScreen=true
composer=new THREE.EffectComposer(渲染器)
composer.setSize(window.innerWidth、window.innerHeight)
composer.addPass(renderScene)
composer.addPass(effectFXAA)
作曲者。addPass(bloomPass)
var-delta=0;
render();
函数render(){
请求动画帧(渲染);
δ+=0.05;
objBloomRed.material.color.g=Math.sin(delta);
objBloomRed.material.color.b=Math.cos(delta);
objRed.material.color.g=Math.sin(delta);
objRed.material.color.b=Math.cos(delta);
.clear();
相机。图层。设置(1);
composer.render();
.clearDepth();
相机。图层。设置(0);
渲染器。渲染(场景、摄影机);
}
正文{
溢出:隐藏;
保证金:0;
}

好的,我会尽快完成。让所有想要的人都知道如何去做!只需查看代码,就可以解决“bloom over not bloom”问题:

var整个场景=0,BLOOM场景=1;
var bloomLayer=新的三个.Layers();
布卢姆图层设置(布卢姆场景);
var darkMaterial=新的3.MeshBasicMaterial({color:“yellow”});
var材料={};
var scene=new THREE.scene();
var摄像机=新的三透视摄像机(60,window.innerWidth/window.innerHeight,11000);
摄像机位置设置(20,0,-20);
var renderer=new THREE.WebGLRenderer({antialas:true});
renderer.setSize(window.innerWidth、window.innerHeight);
document.body.appendChild(renderer.doElement);
var controls=新的三个.OrbitControls(摄影机、渲染器.doElement);
var灯=新的三方向灯(0xffffff,0.5);
灯。位置。设置刻度(100);
场景。添加(灯光);
添加(新的三个环境光(0xffffff,0.25));
//设置场景
场景。遍历(处置材料);
scene.children.length=0;
//不开花
var obj=new THREE.Mesh(new THREE.BoxGeometry(5,5,4),new THREE.MeshBasicMaterial({color:0x444444,线框:false}));
目标位置z=0;
对象层启用(整个场景)
场景。添加(obj);
var obj=new THREE.Mesh(new THREE.BoxGeometry(12,12,1),new THREE.MeshBasicMaterial({color:0x0000ff,线框:false}));
目标位置z=2.5;
对象层启用(整个场景)
场景。添加(obj);
var obj=new THREE.Mesh(new THREE.BoxGeometry(5,5,4),new THREE.MeshBasicMaterial({color:0x444444,线框:false}));
目标位置z=5;
对象层启用(整个场景)
场景。添加(obj);
//布鲁姆斯塔夫
var objBloomRed=new THREE.Mesh(new THREE.BoxGeometry(5,5,1),new THREE.MeshBasicMaterial({color:0xff0000,线框:false}));
objBloomRed.position.z=-2.5;
objBloomRed.layers.enable(BLOOM_场景)
scene.add(objBloomRed);
var objBloomGreen=new THREE.Mesh(new THREE.BoxGeometry(5,5,1),new THREE.MeshBasicMaterial({color:0x00ff00,线框:false}));
位置z=7.5;
objBloomGreen.layers.enable(BLOOM_场景)
场景。添加(绿色);
window.onresize=函数(){
变量宽度=window.innerWidth;
var height=window.innerHeight;
camera.aspect=宽度/高度;
camera.updateProjectMatrix();
设置大小(宽度、高度);
bloomComposer.setSize(宽度、高度);
最终组合