与红点光的白色场面

时间:2017-01-27 19:45:28

标签: three.js

我希望有一个完全白色的场景,除了红点光。所以基本上什么是黑色,如果没有光到达它应该是白色的。 有什么建议我怎么能实现这个目标?

2 个答案:

答案 0 :(得分:1)

我无法想象比使用反转场景颜色的传递更好。这个想法取自here

const uniforms = {
  "tDiffuse": {
    type: "t",
    value: null
  }
};

const vertexShader = `
varying vec2 vUv;
  void main() {
  vUv = uv;
  gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0    );
}
`

const fragmentShader = `
varying vec2 vUv;
uniform sampler2D tDiffuse;
void main() {
  vec4 color = texture2D(tDiffuse, vUv);
  gl_FragColor = vec4(1.0 - color.x, 1.0 - color.y, 1.0 - color.z, 1.0);
}
`

var shader = {
    uniforms: uniforms,
    vertexShader: vertexShader,
    fragmentShader: fragmentShader
}

...
composer = new THREE.EffectComposer(renderer);
composer.addPass(new THREE.RenderPass(scene, camera));

var pass = new THREE.ShaderPass(shader);
composer.addPass(pass);
pass.renderToScreen = true;
pass.enabled = true;

然后在动画循环中你必须放

composer.render(scene, camera);

而不是renderer.render(scene, camera);

jsfiddle示例

PS如果有人有更好的想法,我想知道它。enter image description here

答案 1 :(得分:0)

尽管缺少自己的代码,但您可以从renderer.setClearColor(0xFFFFFF, 1)

开始

这将设置场景" background"颜色为白色。你将不得不处理任何孩子依赖他们的材料/纹理等场景

你可能还需要处理可能的阴影或使用雾......这么多的可能性没有任何代码可以开始。