2013-05-10 5 views
2

Three.js에서 그림자에 대해 배우려고했는데 this nice example in jsfiddle을 발견했습니다. 그러나 나는 빛의 y 낮은 경우 (65)을 좋아하는 이유를 이해 할 수없는 생각, 즉 :Three.js 그림자가 제대로 작동하지 않습니다.

light.position.set(20, 65, 0); 

그림자가 완전히 사라집니다. 그 사이에, 70 이상 모두는 완벽하게 좋으며 그림자가 드리워졌습니다. 항상 그렇듯이, 나는 분명히 뭔가 빠졌을 것입니다. 그러나 빛이 그 그림자를 만드는 것을 방해 할 수있는 것이 실제로는 없습니다.

답변

4

당신이 시도 할 수 :

light.shadowCameraVisible = true; 

이 당신이 변화를 이해하는 데 도움이 될 것입니다 화면에서 빛의 위치와 방향을 볼 수 있습니다.

은 그림자 만에 의해 그리고 light.shadowCamera의 절두체 내부 객체에 캐스팅되기 때문에 이런 일이 :)

+0

어떻게하면 좋을까요? 나는이 줄을 시도했지만 아무것도 바뀌지 않았다. 그리고 나는 "태양"이 빛이 어디로가는지를 보여줄 것이라고 생각했습니다. 그렇지 않습니까? –

+0

죄송합니다. 잘못된 링크를 추가했습니다. (이것을 확인하십시오. http://jsfiddle.net/Fe7PQ/2/ –

+1

SpotLight를 사용해야한다는 것을 알기 시작했습니다. 이미 몇 가지 예를 발견 했으므로 내가 옳은 길에 있음을 증명해. 고마워. :) –

6

도움이되기를 바랍니다; 이 경우 기본값 인 light.shadowCameraNear은 약 50으로 설정되어 있기 때문에 절두체가 광원에서 너무 멀리 떨어져 시작하고 광원의 position.y65 일 때 막대가 포함되지 않습니다. 광원의 position.y70이면 shadowCamera 절두체의 가장 가까운 모서리가 막대를 포함하도록 위로 이동하고 그림자가 올바르게 캐스팅됩니다.

light.shadowCameraNear을 작은 수로 설정하여이 문제를 해결할 수 있습니다. 해당 바이올린에서 다음 줄의 주석 처리를 제거하십시오.

light.shadowCameraNear = 1; 

빛의 이동 정도에 관계없이 그림자가 나타납니다.

관련 문제