Из данного материала вы узнаете, как можно управлять отбрасыванием теней энтити-объектами.
Все брашевые энтити по умолчанию пропускают свет, то есть не
отбрасывают теней. Согласитесь, довольно глупо смотрится ящик
неотбрасывающий тень, тогда, как расположенные рядом стены ее
отбрасывают (смотрите картинку ниже).
Естественно, вместо ящика из энтити-объекта func_wall можно
было использовать простой браш, который отбрасывал бы тень, но тогда
земля была бы разбита на более мелкие полигоны. Если ящиков мало (пара
штук), то можно использовать и простые браши, а если штук десять в одном
месте, то они могут серьезно повысить количество видимых отрисовываемых
полигонов (и снизить FPS).
Чтобы энтити-объект отбрасывал свет нужно выставить световые флаги. Данные флаги есть у подавляющего большинства брашевых энтити, и они доступны в свойствах объекта (смотрите картинку ниже).
Возможные варианты
1. Normal — по умолчанию (энтити не отбрасывает теней);
2. EmbeddedFix — не использовать сложную коррекцию освещения.
Иногда брашевый объект, проходящий сквозь стену, бывает нереалистично
освещён. Воспользуйтесь данным флагом для избежания подобной ситуации;
3. Opaque (Block Light) — объект отбрасывает тени. Делает
объект «непрозрачным», в результате чего он начинает отбрасывать тень.
Полезно использовать этот флаг для func_wall, некоторых
func_illusionary, func_door и, возможно, других объектов для достижения
различных эффектов;
4. Opaque + Embedded Fix — это комбинация предыдущих 2-ух флагов;
5. Opaque + Concave Fix — используется для искривленных
объектов func_wall, особенно арок. Когда эти объекты имеют флаг
непрозрачности Opaque (3), внутренняя сторона арки (вогнутая часть)
будет иметь тёмные края, особенно в местах стыковки брашей. Установка
флага ConcaveFix решает проблему тёмных швов, однако объект не может
использовать флаг EmbeddedFix при этом.
Что же, всякий из флагов со словом Opaque, заставляет энтити блокировать свет. Для простых объектов (к примеру, ящиков) можно указывать Opaque (blocks light). Другие флаги Opaque применяются редко, большей частью для сложных арок, состоящих из немалого количества объектов func_wall.
Как видно из картинки ниже, большой ящик справа отбрасывает тень, хотя также, как и левый, является объектом func_wall.
Другой способ управления тенями
Давайте рассмотрим ещё 1 метод управления тенями. Наряду с Light Flags есть ещё Light Origin.
В данном параметре указывается название объекта info_target,
который по своей сути является объектом-мишенью. Таким образом, при
расчёте освещения брашевый энтити-объект будет временно перемещен на
место объекта info_target, название которого указано в параметре Light Origin. Посмотрите на картинку ниже.
В месте, где находится тень, на самом деле установлен объект info_target с именем target1. Это же название записано в свойствах ящика func_wall в параметре Light Origin (смотрите картинку ниже).
Трудно сказать, когда нужно использовать Light Origin. В отличии от Light Flags он применяется очень редко.
Рекомендация: не устанавливайте блокировку света двигающимся или
разрушаемым энтити-объектам, так как тень будет просчитана и останется
на месте при изменении положения объекта или при его разрушении.