Освещение

From Valve Developer Community
Jump to: navigation, search
English 简体中文
Серия полезных советов Выскажите свои мысли (EN) — Помогите нам воплотить больше идей

Амуниция | Животные | Анимированные облака | Анимированное небо | Муравьиные львы | Лучи | Растительность | Провода | Цвет | Сражение | Комбайны | Существа | Двери | Туман | Лифты | Освещение | Взрывы | Огонь | Туман | Листва | Стекло | Земля | Хедкраб | Здоровье | Лестницы | Лазеры и лучи | Свечение | Двигающиеся облака | Звук и музыка | Оптимизация | Окружение | Физика | Сканер сетчатки | Провода и веревки | Дым | Звуки | Спецэффекты | Солнце | Почва | Поезда | Деревья | Турели | Вода | Погода | Окна | Зомби

Руководства

Пример хорошо освещённой комнаты.

Виды

Статичные источники света

Совет:
Статичный свет компилируется в карты освещения, которые освещают и браши, и модели, и кубмапы, и дают статичные отражения. Это облегчает визуализацию, поскольку огни уже прописаны в карте.


light
Неподвижный, все-направленный точечный источник света (типа лампочки или пламени).
light_spot
Неподвижный, однонаправленный точечный источник света (типа фонарика). Конический угол луча не должен превышать 90°.
light_environment
Содержит два связанных источника света:
  • Рассеянный 'окружающий' свет (отраженный от облаков и атмосферы в целом), исходящий из всех поверхностей скайбокса.
  • Направленный 'яркий' свет (солнечный или лунный), падающий в одном направлении.
Оба излучаются материалом toolsskybox везде, где он есть на карте. См. также Скайбокс.
env_particlelight
Освещает частицы, порождаемые env_smokestack. Частицы не подвержены нормальному освещению. Используйте не более двух.
Светящиеся текстуры
Брашевые поверхности со светоизлучающим материалом (определяемым в game_dir/lights.rad), который отбрасывает свет на угол 180°.

Статичные приёмники света

Браши
Инструмент Масштаб карты освещения диалогового окна Hammer Face Edit Dialog может быть использован для управления резкостью и размытостью карты освещения на поверхности браша - эффект наиболее заметен в зонах с повышенной контрастностью, например, затенённых местах. Обратите внимание, что добавление новых источников света не сильно скажется на производительности, но уменьшение масштаба карты освещения (т.е. увеличение разрешения) сразу увеличит размер карты и объём занимаемой памяти.
prop_static
В отличие от других моделей, prop_static светится статично: значение освещения сохраняется для каждой вершины, а модель сетки столкновений (или, опционально, reference mesh) используется для расчёта теней.
Существуют следующие опции:
  • disableshadows - Не отбрасывать тени
  • disablevertexlighting - Сохранять только одно значение освещения для всей модели
  • disableselfshadowing - Не позволять энтите отбрасывать тень на себя
  • ignorenormals - При расчёте освещения игнорировать данные нормалей вершин. Это чрезвычайно полезно для листвы и других тонких типов вершин сетки.

Источники динамического света

Совет:
Динамическое освещение вычисляется во время игры, и потому нагружает визуализацию.


env_projectedtexture светит из дверного проёма.
light_dynamic
Простой, однонаправленный динамический свет, который может быть перемещён, повёрнут и отрегулирован.
point_spotlight
Эффект луча от прожектора с дополнительным динамическим источником света в точке падения на поверхность.
npc_spotlight
Прожектор NPC, похожий на point_spotlight, но с возможностью отслеживания целей.
env_projectedtexture
Динамический источник, который светит не однотонным цветом, а как-бы пропущенным через текстуру, и в то же время 'вычитает' реалистичные динамические тени. Влияет на все поверхности, которые могут принимать свет, и используется в фонарике игрока в Episode Two.

Динамические тени

Совет:
Динамические тени отбрасываются только моделями (NPC, физическими пропами и т.д.), и только на брашевые поверхности (от статичных и динамических источников света). Они рассчитываются в реальном времени, поэтому довольно грубы и достаточно затратны для визуализации.


Предупреждение: Это не *настоящие* тени, а процедурные (создаваемые кодом) текстуры, проецируемые объектом. В Left 4 Dead, Portal 2 и Alien Swarm направление теней вычисляется на основе энтити, и обусловлено близостью к ней света. Но не в модах Source2006/2007/2013, если там не используются Углы динамических теней в Source 2007.


Предупреждение:Иногда динамические тени проникают сквозь стены и полы, выдавая местоположение игроков или объектов. Если вы столкнулись с этой проблемой, используйте info_no_dynamic_shadow.
Примечание:Тени "скользят" по визуальной сетке, если только нет shadowlod, задаваемого в QC. Shadow LOD при создании тени используют низкую детализацию. Это не относится к теням на карте (фонарикам, env_projectedtexture)
Примечание:Если динамические тени пересекаются, то они не сливаются друг с другом или освещением карты. Это может приводить к нежелательным эффектам 'удвоения', когда, например, физические пропы находятся на физическом пропе стола. Чтобы обойти эту проблему, вы можете включать и отключать динамические тени в энтитях.
Примечание:Динамические тени поддерживают полупрозрачность. Если ваша модель имеет разные уровни прозрачности, они могут отразиться на тени.
shadow_control
Точечная энтитя использует управление динамической тенью по всей карте, в том числе максимальное расстояние отбрасывания, направление отбрасывания и резкость/рассеяние.
info_no_dynamic_shadow
Точечные энтити используют список брашевых поверхностей, чтобы не отбрасывать динамические тени.
Энтити prop_physics 
Имеют значение "shadowcastdist", чтобы переопределять дальность отбрасывание динамических теней.
Энтити prop_dynamic 
Имеют значение "disableshadows" и входы "enableshadows" и "disableshadows" для управления отбрасываемыми ими динамическими тенями.
Энтити NPC 
Имеют управление prop_dynamic shadow, плюс "disablereceiveshadows" To do: чтобы предотвращать...?

Эффекты Тиндаля

Эффекты Тиндаля вызваны рассеянием света на взвешенных (коллоидных) частицах в прозрачной среде. Например, автомобильные фары в тумане.

  • env_sprite - энтитя, используемая для создания всенаправленного свечения или засветки.
  • env_lightglow - несимметричное свечение (для зон с контрастным освещением).
  • env_sun - добавляет яркое пятно с ореолом в скайбоксе для задания положения Солнца или Луны.
  • Брашевая текстура : models/effects/vol_light001
  • Брашевая текстура : models/effects/vol_light002
  • Модель : models/Effects/vol_light.mdl - используется вместе с prop_static.

Обычные значения

Автомобильные фары
Brightness 231 223 192
Note:Взято из L4D2 SDK
День в Сити 17
Brightness 237 218 143 800
Ambience 190 201 220 100
Ночь в Ревенхольме
Brightness 175 230 239 50
Ambience 43 45 57 5
Лампа кобайнов
Brightness 147 226 240 3000
Ambience N/A
Лампа накаливания
Brightness 254 216 146
Ambience N/A
Флюоресцентная лампа
Brightness 159 237 215
Ambience N/A

Значения для скайбоксов смотрите в списке.

Примечания

  • Именование света делает его гораздо тяжелее. Давайте имена только необходимым источникам света. Несколько источников света с одинаковыми именами легче, чем с разными.
  • light_dynamic - самый тяжёлый, и на некоторых системах может не отображаться
  • Основные энтити света не связаны с видимыми источниками (например, лампочки). Для этого вам нужна модель. Смотри список моделей освещения.
  • Основные энтити света не "отсвечивают", как будто в тумане или сумерках. Чтобы это заработало, скомпилируйте и запустите карту с включённым HDR, или добавьте point_spotlightотключенным динамическим освещением, если таковое не нужно) или энтитю env_lightglow.
  • Карты не будут освещены, если вы не запустите vrad (или эквивалент). Врад не сможет работать как надо и не будет рассчитывать реалистичное отражение света, если в карте присутствуют утечки.
  • Некоторые текстуры сами отбрасывают свет и могут быть созданы с помощью lights.rad в папке мода или в sourcesdk/bin.
  • Перемещаемые объекты не меняют свечения. Их освещение будет рассчитываться только в соответствии с их положением в Хаммере (например, браш из тёмной комнаты не станет ярче, если его перенести в освещённую комнату).

Консольные команды

mat_fullbright 2. Ярко-белые физические модели, кажется, работают с ошибкой; они освещаются правильно во время движения.
mat_fullbright <0-2>
0 - нормальное освещение.
1 - 'полноценное' освещение, когда всё освещено на 100%.
2 был введён в Orange Box и 'только светит'. Он заменяет все текстуры на однотонный цвет, позволяя вам увидеть что, где и как горит.

См. также

Внешние ссылки