Top.Mail.Ru
Ответы

Valve hammer editor v3.4 - проблема со светом

В общем не буду ходить вокруг да около - проблема с тем, что свет проникает сквозь закрытые двери. Двери сделаны как entity_door. Свет пробовал разный - и обычный light и light_spot, и light_enviroment... Какого бы вида не был источник света, он проникает сквозь двери. Как избежать проникновение света сквозь entity двери? Пусть даже свет появляется мгновенно, после открытия двери - пофиг. Главное что бы его не было видно при закрытой двери на блоках, которые находятся вне освещенной комнаты.

По дате
По рейтингу
Аватар пользователя

Ты знал что такие вопросы можно задавать нейронкам?

1. Использование func_brush вместо func_door
Двери, сделанные как func_door, не блокируют свет, так как они считаются динамическими объектами, а свет рассчитывается только для статической геометрии.

Решение: Сделайте дверь из func_brush и привяжите её к триггеру или другому механизму открытия (например, через trigger_multiple или скрипты). func_brush будет учитываться при расчёте освещения и блокировать свет, когда дверь закрыта.

Недостаток: Это менее удобно для анимации открытия/закрытия, но можно настроить через I/O (Inputs/Outputs).
2. Добавление "теневой стены"
Создайте невидимую статическую стену (например, из текстуры tools/toolstrigger или tools/toolsnodraw) позади двери, которая будет блокировать свет.

Эта стена должна быть привязана к двери через I/O: когда дверь открывается, стена становится невидимой или отключается (используйте Disable или Kill), а при закрытии — включается обратно (Enable).

Это позволяет сохранить дверь как func_door, но требует точной настройки.
3. Использование light_dynamic
Если вам не принципиально использовать статический свет (light, light_spot, light_environment), попробуйте заменить его на light_dynamic. Этот тип света рендерится в реальном времени и учитывает динамические объекты, такие как двери.

Плюс: Свет не будет проникать сквозь закрытую дверь.

Минус: light_dynamic нагружает производительность, поэтому используйте его умеренно.
4. Разделение световых зон с помощью "leak-proof" геометрии
Убедитесь, что комната полностью герметична (без "ликов") и свет не "протекает" через щели в геометрии. Для этого:
Проверьте карту на утечки через Map > Load Pointfile после компиляции.

Используйте текстуру tools/toolsnodraw на всех поверхностях, которые не видны игроку, чтобы минимизировать ошибки компиляции.
Если геометрия комнаты замкнута, свет не должен проникать наружу, даже с func_door. Однако это работает только для статического света.
5. Настройка параметров компиляции VRAD
Убедитесь, что вы компилируете карту с финальными настройками освещения (-final в VRAD), чтобы получить более точный расчет теней.

Попробуйте увеличить разрешение световых карт (lightmap scale) на поверхностях рядом с дверью (в Hammer: выделите поверхность, нажмите Ctrl+L, уменьшите значение, например, до 8 или 4). Это может помочь точнее обработать тени.
Рекомендация
Самый простой и эффективный способ для большинства случаев — это комбинация func_door с "теневой стеной" из func_brush. Настройте их взаимодействие через I/O, чтобы стена исчезала при открытии двери и появлялась при закрытии. Это сохранит динамику двери и решит проблему со светом.

Аватар пользователя
Мастер

все это конечно интересно... а позвольте узнать где найти func_brush в этом редакторе? ткните плиз пальцем...

Аватар пользователя
Мастер
Аватар пользователя

а fucn_door почему не использовать,я про энтити доор воббще не слышал,ещё может дверь слишком тонкая
распиши проблему тут и всё ответит
https://trychatgpt.ru/
https://chat.deepseek.com/
https://x.com/i/grok

Аватар пользователя

на последнем впн нужен включённый в браузере в США



Видео по теме