Три.тени js не работают должным образом


Я пытался узнать о тенях через три.js и я нашли Этот хороший пример в jsfiddle. Однако я не могу понять, почему, когда я понижаю y света до 65, то есть:

light.position.set( 20, 65, 0 );
Тень полностью исчезает. Между тем, все, что выше 70, совершенно нормально, и тень отбрасывается. Как всегда, я, вероятно, упускаю что-то очевидное, но я действительно не вижу, что может помешать свету создать эту тень.
2 2

2 ответа:

Вы можете попробовать:

light.shadowCameraVisible = true;

Чтобы увидеть положение и направление света на экране, это поможет вам понять, что меняется.

Надеюсь, это поможет :)

Это происходит потому, что тени будут отбрасываться только на объекты внутри фрустрации light.shadowCamera; в этом случае значение по умолчанию light.shadowCameraNear, по-видимому, установлено на 50, поэтому фрустрация начинается слишком далеко от источника света, и когда свет position.y находится в 65, полоса не включается. Когда свет position.y равен 70, ближайший край фрустрации shadowCamera перемещается вверх, чтобы включить полосу, и тень отбрасывается правильно.

Вы можете исправить это, установив light.shadowCameraNear на меньшее число. В этой скрипке раскомментируйте строку:

light.shadowCameraNear = 1;
И тень появится независимо от того, как низко вы переместите свет.