2012-06-06 2 views
8

Как говорится в названии. Когда я снимаю текущую сцену, все работает нормально. Только тень белой обезьяны обрезается. Как это может случиться, и есть ли для этого разрешение?three.js shadow cutoff

Вот сайт: http://hammer.bz/test/ и экран;)
http://i.stack.imgur.com/6jd0h.png

Я предполагаю, что он должен делать с камерой или с огнями .. так вот они:

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

Спасибо заранее!
Брэм

EDIT: получил его:

просто использовать THREE.SpotLight вместо этого. Это был немой вопрос.

Просто наденьте shadowCameraVisible = true;, чтобы увидеть свет, и он будет работать. Чувство немного глупо сейчас для этого вопроса haha;)

+1

Рад, что вы это поняли! Никогда не сомневайтесь, задав вопрос простым ответом. Я не могу сказать, сколько раз я выяснял свои собственные проблемы либо при наборе вопроса о переполнении стека, либо сразу после его публикации. Я бы рекомендовал на самом деле добавить ваши результаты в качестве ответа на этот вопрос, а затем отметить его как принятый ответ после требуемого 24-часового ожидания. Это помогает другим определить, что проблема решена в будущем. – Toji

ответ

5

просто используйте THREE.SpotLight вместо этого.

Просто наденьте shadowCameraVisible = true;, чтобы увидеть свет, и он будет работать. Вы должны установить позицию position.set(x, y, z);