2012-06-20 3 views
6

У меня есть зеленый самолет и красный куб над ним. Свет - направленный свет.Почему тень не в том месте? (Three.js)

shadow

Почему тень в неположенном месте? Код: http://jsfiddle.net/pD8dn/


Edit:

Если я изменю light.shadowBias то тень на плоскости правильно, но тень на кубе некорректной:

shadow

http://jsfiddle.net/pD8dn/4/

Заранее благодарен,

+2

Можете ли вы предоставить код? –

+0

@ EmilVikström Вот он: http://jsfiddle.net/pD8dn/ – eqiproo

ответ

6

Это один из самых распространенных артефактов для теневых карт, это называется «Peter Panning».

Обходной путь добавить некоторый небольшой уклон для тестирования глубины:

light.shadowBias = 0.001; 

Точное значение смещения должно быть настроены для каждой сцены (и, к сожалению, иногда вы не сможете избавиться от всех артефакты повсюду, настройка теневых карт - это больше искусства, чем наука).

Это то, что работает для вашего примера:

http://jsfiddle.net/pD8dn/2/

+0

спасибо, но все равно багги. Я отредактировал вопрос – eqiproo

+3

Да, вот что я имел в виду: с теневыми картами вам нужно играть с параметрами (разрешение, размер и положение уклона света, смещение) и найти баланс между различными типами артефактов. Обратите внимание, что смещение может быть очень чувствительным к крошечным вариациям, экспериментировать с ним и видеть эффекты. – alteredq

+0

Если у меня на моей сцене большие и мелкие объекты, то я не могу найти хорошее решение. Это ошибка в Three.js? Потому что в демонстрациях других 3D-библиотек я не нашел ошибку, подобную этой. – eqiproo

Смежные вопросы