我希望有一个完全白色的场景,除了红点光。所以基本上什么是黑色,如果没有光到达它应该是白色的。 有什么建议我怎么能实现这个目标?
答案 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示例
答案 1 :(得分:0)
尽管缺少自己的代码,但您可以从renderer.setClearColor(0xFFFFFF, 1)
这将设置场景" background"颜色为白色。你将不得不处理任何孩子依赖他们的材料/纹理等场景
你可能还需要处理可能的阴影或使用雾......这么多的可能性没有任何代码可以开始。