2017-12-21 19 views
0

finde ich kein gutes Beispiel zu tun, dass so jede mögliche Hilfe würde sehr nützlich sein :)Deckenleuchten Effect Mit Three.js

ich erreichen wollen diese Art von Licht in der Decke meines Hauses Objekt in drei. js

rectLight = new THREE.RectAreaLight(0xffffff, 500, 10, 10); 
rectLight.position.set(5, 5, 0); 
rectLightHelper = new THREE.RectAreaLightHelper(rectLight); 
scene.add(rectLightHelper); 

ich habe alle versucht, die Lichtart zum Beispiel PUNKT, DirectionalLight, SpotLight und zuletzt fand ich diese ReactAreaLight aber noch nicht erreichen ich diese Art von Licht in meiner three.js Szene.

enter image description here enter image description here

+0

Bitte besuchen Sie die [Hilfe] und sehen was und [fragen]. Tipp: Schreib Mühe und Code! – mplungjan

+0

Es ist besser, solche Fragen in Foren zu stellen (zum Beispiel [hier] (https://discourse.threejs.org/)). Haben Sie dieses [_official_ example] (https://threejs.org/examples/?q=light#webgl_lights_rectarealight) gesehen? – prisoner849

+0

Ich fragte auch, aber immer noch nichts .. :( –

Antwort

0

Sie benötigen Nachbearbeitung anzuwenden. Probieren Sie Effect Composer und BloomPass

//For adding additional effect an the top of rendering 
function postprocessing() { 
    renderScene = new THREE.RenderPass(scene, camera); 
    effectFXAA = new THREE.ShaderPass(THREE.FXAAShader); 
    effectFXAA.uniforms['resolution'].value.set(1/window.innerWidth, 1/window.innerHeight); 
    var copyShader = new THREE.ShaderPass(THREE.CopyShader); 
    copyShader.renderToScreen = true; 
    bloomPass = new THREE.UnrealBloomPass(new THREE.Vector2(window.innerWidth, window.innerHeight), 0.5, 0.1, 0.85); //(resolution, strenght, radius, threshold)); 
    composer = new THREE.EffectComposer(renderer); 
    composer.setSize(window.innerWidth, window.innerHeight); 
    composer.addPass(renderScene); 
    composer.addPass(effectFXAA); 
    composer.addPass(bloomPass); 
    composer.addPass(copyShader); 
} 

// start the render loop 
function render() { 
    renderer.clear(); 
    composer.render(); 
    renderer.render(scene, camera); 
    composer.render(); 
} 
+0

Denken Sie daran, dass das Bild, das Sie teilen, haben helle Karte und AO-Karte angewendet. Sie sollten das gleiche tun, um das nächste Ergebnis zu erhalten. Und auch mit dieser Karte können Sie vermeiden die Notwendigkeit von drei Lichtern. –