2012-06-06 4 views
8

Wie der Titel sagt. Wenn ich die aktuelle Szene rendere funktioniert alles gut. Nur der Schatten des weißen Affen wird abgeschnitten. Wie kann das passieren, und gibt es eine Lösung dafür? Hierthree.js shadow cutoff

ist die Website: http://hammer.bz/test/ und ein Bildschirm;)
http://i.stack.imgur.com/6jd0h.png

Ich denke, es hat mit der Kamera oder mit dem Licht zu tun .. so hier sind sie:

renderer.shadowMapEnabled = true; 
renderer.sortObjects = false; 
renderer.shadowMapWidth = 3072; 
renderer.shadowMapHeight = 3072 
renderer.shadowCameraNear = 2; 
renderer.shadowCameraFar = 40000; 
renderer.shadowCameraFov = 50; 
renderer.shadowMapBias = -0.00022; 
renderer.shadowMapDarkness = 0.55; 
renderer.shadowMapSoft  = true; 
renderer.physicallyBasedShading = true; 
renderer.setClearColorHex(0x999999, 1); 


camera = new THREE.PerspectiveCamera(70, window.innerWidth/window.innerHeight, 0.1, 40000); 
camera.position.x = x; 
camera.position.y = y; 
camera.position.z = z; 
camera.rotation.x = -0.8; 
scene.add(camera); 


var light = new THREE.DirectionalLight(0xffffff, 1); 
light.position.set(-2, 5, 2).normalize(); 
light.shadowCameraNear = 0.01; 
light.shadowCameraFar = 1000000; 
light.castShadow  = true; 
light.shadowDarkness  = 0.5; 
light.shadowCameraVisible = false; 
scene.add(light); 

Vielen Dank im Voraus!
Bram

EDIT: got it:

THREE.SpotLight nur stattdessen verwenden. Es war eine dumme Frage.

Einfach auf shadowCameraVisible = true; setzen, um das Licht zu sehen, und es wird funktionieren. Gefühl ein bisschen dumm jetzt für diese Frage haha;)

+1

Froh, dass Sie es herausgefunden haben! Niemals dumm fühlen, eine Frage mit einer einfachen Antwort zu stellen. Ich kann Ihnen nicht sagen, wie oft ich meine eigenen Probleme herausgefunden habe, entweder während ich eine Stack Overflow Frage eingegeben habe oder direkt nachdem ich sie gepostet habe. Ich würde empfehlen, Ihre Ergebnisse tatsächlich als Antwort auf diese Frage hinzuzufügen und sie dann als die akzeptierte Antwort nach der erforderlichen 24-Stunden-Wartezeit zu markieren. Das hilft anderen zu erkennen, dass das Problem in der Zukunft gelöst wurde. – Toji

Antwort

5

verwenden Sie einfach THREE.SpotLight statt.

Einfach auf shadowCameraVisible = true; setzen, um das Licht zu sehen, und es wird funktionieren. Natürlich sind Sie verpflichtet, die Position position.set(x, y, z);