2012-06-06 26 views
8

Como dice el título. Cuando renderizo la escena actual todo funciona bien. Solo la sombra del mono blanco se corta. ¿Cómo puede suceder esto, y hay una resolución para ello?three.js shadow cutoff

Aquí es el sitio: http://hammer.bz/test/ y una pantalla;)
http://i.stack.imgur.com/6jd0h.png

supongo que tiene que ver con la cámara o con las luces .. así que aquí están ellos:

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); 

¡Gracias de antemano!
Bram

EDIT: lo consiguió:

sólo tiene que utilizar THREE.SpotLight lugar. Fue una pregunta tonta.

Simplemente póngase shadowCameraVisible = true; para ver la luz y funcionará. Sintiéndose un poco tonto ahora por esta pregunta jaja;)

+1

¡Me alegra que lo haya descubierto! Nunca te sientas tonto por hacer una pregunta con una respuesta simple. No puedo decirte cuántas veces he descubierto mis propios problemas al escribir una pregunta sobre el desbordamiento de pila o inmediatamente después de publicarla. Recomendaría en realidad agregar sus hallazgos como una respuesta a esta pregunta y luego marcarla como la respuesta aceptada después de la espera requerida de 24 horas. Eso ayuda a otros a identificar que el problema se ha resuelto en el futuro. – Toji

Respuesta

5

simplemente use THREE.SpotLight en su lugar.

Simplemente póngase shadowCameraVisible = true; para ver la luz y funcionará. Offcourse está obligado a establecer la posición position.set(x, y, z);