#three.js #camera #geometry #scene #light
Вопрос:
Я хочу осветить все вокруг игрока так же, как направленный свет освещает всю сцену. Поскольку я работаю над проектом с видом сверху вниз, я должен быть в состоянии увидеть проблеск света на земле
Я попытался добиться эффекта, используя 2 слоя: один для всего, кроме области, подлежащей освещению, и другой, содержащий область, подлежащую освещению, и дополнительный источник света:
new three.SpotLight(0xffffff, .6, 0, Math.PI / 3, 0, 0);
Свет всегда находится сверху игрока, и игрок является его целью
Это работает, но есть 2 проблемы: это не направленный свет, поэтому я не могу получить эти красивые оттенки на разных лицах; и свет не все время рассеивается:
Когда свет отбрасывается на импортированные модели, это действительно хорошее отражение на земле вокруг проигрывателя, но для программно созданных геометрий, похоже, это не так. Я предполагаю, что на одну грань может быть нанесен только 1 цвет от источника света, но усложнение геометрии добавит дополнительные накладные расходы поверх правильных расчетов освещения
Я думал, можно ли ограничить направленный свет, чтобы он воздействовал только внутри сферы
Ответ №1:
Я думаю, вы можете использовать слои : https://threejs.org/docs/#api/en/core/Layers
Кроме того, попробуйте использовать свет от HDR (проверьте генератор PMREM), это может дать хорошие результаты, которые вы можете объединить со своим светом и сделать сцену лучше.