2016-10-05 9 views
0

그래서 ThreeJS에서 그림자로 작업하고 있습니다. WebGLRenderer와 함께 Perspective 카메라를 사용하고 있습니다. 조명 설정은 그대로입니다.벽 근처에서 재미있는 ThreeJS 그림자

var light = new THREE.SpotLight(0xdddddd, 1); 
light.castShadow = true; 
light.shadow = new THREE.LightShadow(new THREE.PerspectiveCamera(60, 1, 1, 2500)); 
light.shadow.bias = 0.0001; 
light.shadow.mapSize.width = 1024; 
light.shadow.mapSize.height = 1024; 
light.position.set(100, 800, 0); 

나는 벽을 닫을 때 그림자를 자른다. 그림자 비아스와 함께 연주했지만 어둠 속에서 총 찌르기입니다.

나는 이상한 그림자 동작을 얻습니다. 나는 스크린 샷을 첨부하고 그것을 가리키는 화살표와 함께 빨간색으로 동그라미를 그렸다. 빛이 벽에서 반사되어 그림자를 없애는 것처럼 그림자가 어떻게 잘리는 지 확인하십시오. 이 방법을 피하는 방법은 무엇입니까?

enter image description here

+0

그것은의 [그림자 카메라 도우미]를 사용 보인다 (http://stackoverflow.com/a/35178593/4977165)을 검사하고 단지 시도 ''''''''''에서''''''''이라고 말하는 것을''''''로 증가 시키십시오. –

+0

당신이 지적한대로 예제를 설정 했으므로 당신이 맞다고 생각합니다. 나는 그것을 90으로 설정하는 방법에 대해서 확신이 없다. – Dale

+0

'''light.shadow = new THREE.LightShadow (새로운 THREE.PerspectiveCamera (90, 1, 1, 2500));''' –

답변

1

는 대부분의 경우 그림자 카메라 frustm은 축소하는 것입니다. 다음을 사용하여 확인할 수 있습니다 shadow camera helper :

var helper = new THREE.CameraHelper(light.shadow.camera); 
scene.add(helper); 

그림자 카메라 때문에 성능의 크기가 제한되어 있지만, 당신은 당신의 요구에 맞게 그것에서 모든면을 조정하거나 90 60에서의 각도를 (증가시킬 수있다 예) : 그림자 카메라 프러스 텀이 좁혀처럼

light.shadow = new THREE.LightShadow(new THREE.PerspectiveCamera(90, 1, 1, 2500));