Ru/Lighting: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
mNo edit summary
 
(54 intermediate revisions by 14 users not shown)
Line 1: Line 1:
'''Освещение''' - без света никто не может выжить. Но карта в Half-Life без единого источника освещения просто включает команду в консольке '''mat_fullbright 1''' то бишь делая всю карту полностью засвеченной без теней но всё каким-то противным на глаз белым светом. Естесно, это укорачивает время компиляции, но если вы хотите сделать правдоподобную карту, или просто показать её кому-либо в готовом варианте, то без освещения вам точно не обойтись. {{Note|Если вы делаете футуристическую карту, где гордон ходит с фомкой по клеточкам компьютера :-), то эта статья наверное вам не пригодится. Но всё же, берите на вооружение. ;-)
{{LanguageBar|title=Освещение}}
{{Abstract Mapping}}


Вот вы сделали хорошую карту, на открытом небе, но без источников света да и ещё с fullbright. Ваш друг (тот человек или человеки, которым Вы её показваете) скажет, а почему свет какой-то неестественный. Во избежание этого хм.. фиаско тут мы и рассмотрим базовое освещение. Ну если вы конечно уже его не рассмотрели :-)
== Руководства ==
[[File:Proper lighting example.png|right|thumb|Пример хорошо освещённой комнаты.]]
* {{L|Adding Light|Добавление света}} - Уроки для начинающих о том, как настраивать основные энтити {{L|light|света}}.
* {{L|Intermediate Lighting|Вспомогательное освещение}} - Подробный материал обо всех источниках света.
* {{L|Advanced Lighting|Продвинутое освещение}}
* {{L|Constant-Linear-Quadratic Falloff|Константно-Линейно-Квадратичное рассеивание}} - Простое объяснение старой системы C-L-Q затухания света.
* {{L|HDR}} - Освещение, поддерживающее технологию широкого динамического диапазона.


== Добавление света ==
== Виды ==
=== Статичные источники света ===


Вы в хаммере. В '''Object Toolbar''' выделите '''Light'''
{{Tip|Статичный свет компилируется в {{L|Lightmap|лайтмапы}}, освещающие {{L|brush|браши}}, {{L|model|модели}}, {{L|Cubemaps|кубмапы}} и дают статичные {{L|reflection|отражения}}.


Это самая базовая (главная наверно) энтитя освещения.
Это {{L|free|упрощает}} процесс рендеринга, поскольку источники освещения уже прописаны в карту.}}


Разместите её где-нить в центре потолка вашей комнаты на 3d виде.
;{{ent|light}}:Неподвижный, все-направленный точечный источник света (различные лампы, огонь и др.).
;{{ent|light_spot}}:Неподвижный, однонаправленный точечный источник света (например, направленный прожектор). Конический угол луча не должен превышать 90°.
;{{ent|light_environment}}: Содержит два связанных источника света:
:*Рассеянный 'окружающий' свет (отраженный от облаков и атмосферы в целом), исходящий из всех поверхностей скайбокса.
:*Направленный 'яркий' свет (солнечный или лунный), падающий в одном направлении.
:Оба излучаются материалом [[Tool textures#skybox|toolsskybox]] везде, где он есть на карте. См. также {{L|Skybox Basics|Скайбокс}}.
;{{ent|env_particlelight}}: Освещает частицы, порождаемые {{ent|env_smokestack}}. Частицы не подвержены нормальному освещению. Используйте не более двух.
;{{L|Glowing Textures|Светящиеся текстуры}}
:{{L|Brush|Брашевые}} поверхности со светоизлучающим материалом (определяемым в <code>game_dir/lights.rad</code>), который отбрасывает свет на угол 180&deg;.


Для проверки компильте карту со всеми VIS и RAD'ами и вы увидете СВЕТ!
=== Статичные светоприёмники ===


Сейчас попробуем изменить настройки Light'а. Кликните два раза по энтите на 3d виде чтобы открыть окно Object Properties. Тут вы увидете настройки.
;{{L|Brush|Браши}}
:Инструмент {{L|Lightmap_Scale|Масштаб карты освещения}} диалогового окна {{L|Hammer Face Edit Dialog}} может быть использован для управления резкостью и размытостью лайтмапа на поверхности браша - эффект наиболее заметен в зонах с повышенной контрастностью, например, в затенённых местах. Обратите внимание, что добавление новых источников света не сильно скажется на производительности, но уменьшение масштаба карты освещения (т.е. увеличение разрешения) сразу увеличит размер карты и объём занимаемой памяти.
;{{ent|prop_static}}
:В отличие от других моделей, prop_static светится статично: значение освещения сохраняется для каждой {{L|vertex|вершины}}, а модель {{L|collision mesh|сетки столкновений}} (или, опционально, {{L|reference mesh}}) используется для расчёта теней.
:Существуют следующие опции:
:*<code>disableshadows</code> - Не отбрасывать тени;
:*<code>disablevertexlighting</code> - Сохранять только одно значение освещения для всей модели;
:*<code>disableselfshadowing</code> - Не позволять энтити отбрасывать тень на себя;
:*<code>ignorenormals</code> - При расчёте освещения игнорировать данные нормалей вершин. Это чрезвычайно полезно для листвы и других тонких типов вершин сетки.


1. нажмите на ''Brightness'' в окошке, если хотите поднять яркость света. {{Note| не переборщите с параметрами, а то испортите не дай бог}}
=== Динамические источники света ===
{{Tip|Динамическое освещение вычисляется в процессе игры, что делает рендеринг более {{L|expensive|дорогим}}.}}


2. Чтобы открыть диалоговое окно для выделения цвета, нажмите на ''Pick color'' кнопке снизу значений.
[[File:Shadowmap.jpg|thumb|180px|{{L|env_projectedtexture}} светит из дверного проёма.]]
Вы увидете до боли знакомое окошко из пэинта например. Выберите цвет, нажмите ок, вуаля - цвет выбран.


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


Если Вы хотите, чтобы свет был ярче наберите в Brightness с 200 в конце на 800. Результат на лицо и на мониторе.
=== Динамические тени ===


Сейчас мы рассмотрели стандартное самое основное освещение для вашей карты. Экспериментируйте, не бойтесь ничего, и Вы может когда нибудь сделаете великий мод для всеми любимой игры.
{{Tip|Динамические тени отбрасываются только {{L|model|моделями}} (NPC, физическими пропами и т.д.), и только на {{L|brush|брашевые}} поверхности (от статичных и динамических источников света). Они рассчитываются в реальном времени, поэтому довольно грубы и достаточно {{L|showbudget|затратны}} для визуализации.}}
 
{{warning| Это не *настоящие* тени, а процедурные (создаваемые кодом) текстуры, проецируемые объектом. В Left 4 Dead, Portal 2 и Alien Swarm направление теней вычисляется на основе энтити, и обусловлено близостью к ней света. Но не в модах Source2006/2007/2013, если там не используются {{L|Dynamic RTT shadow angles in Source 2007|Динамические RTT углы теней из Source 2007-го года}}.}}
 
{{warning|Иногда динамические тени проникают сквозь стены и полы, выдавая местоположение игроков или объектов. Если вы столкнулись с этой проблемой, используйте {{L|info_no_dynamic_shadow}}.}}
 
{{Note|Тени "скользят" по визуальной сетке, если только нет shadowlod, задаваемого в {{L|QC}}. Shadow LOD при создании тени используют низкую детализацию. Это не относится к теням на карте (фонарикам, {{L|env_projectedtexture}}) }}
 
{{Note|Если динамические тени пересекаются, то они не сливаются друг с другом или освещением карты. Это может приводить к нежелательным эффектам 'удвоения', когда, например, физические пропы находятся на физическом пропе стола. Чтобы обойти эту проблему, вы можете включать и отключать динамические тени требуемых энтити.}}
 
{{Note|Динамические тени поддерживают полупрозрачность. Если ваша модель имеет разные уровни прозрачности, они могут отразиться на тени.}}
 
;{{ent|shadow_control}}:Точечная энтити, использует управление динамическими тенями по всей карте, в том числе максимальное расстояние отбрасывания, направление отбрасывания и резкость/рассеяние.
;{{ent|info_no_dynamic_shadow}}:Точечное энтити, использет список {{L|Brush|брашевых}} поверхностей, чтобы ''не'' отбрасывать динамические тени.
;Энтити {{ent|prop_physics}}: Имеет значение "shadowcastdist" для переопределения дальности отбрасывания динамических теней.
;Энтити {{ent|prop_dynamic}}: Имеет значение "disableshadows" и входы "enableshadows" и "disableshadows" для управления отбрасываемыми ими динамическими тенями.
;Энтити NPC : Имеет управление prop_dynamic shadow, а также "disablereceiveshadows" {{TODO|чтобы предотвращать...?}}
 
=== Эффекты Тиндаля ===
{{L|Wikipedia:Tyndall effect|Эффекты Тиндаля}} вызваны рассеянием света на взвешенных (коллоидных) частицах в прозрачной среде. Например, автомобильные фары в тумане.
* {{L|Wikipedia:Halo_(optical_phenomenon)|Эффекты Гало}} (светящийся спрайт) :
:*{{ent|env_sprite}} - энтити, используемая для создания всенаправленного свечения или засветки.
:*{{ent|env_lightglow}} - асимметричное свечение (для зон с контрастным освещением).
:*{{ent|env_sun}} - добавляет яркое пятно с ореолом в {{L|Skybox|скайбоксе}} для задания положения Солнца или Луны.
* {{L|Wikipedia:Light beam|Эффекты ярких лучей}} (объёмный свет) :
:*Брашевая текстура : <code>models/effects/vol_light001</code>
:*Брашевая текстура : <code>models/effects/vol_light002</code>
:*Модель : <code>models/Effects/vol_light.mdl</code> - используется вместе с  {{ent|prop_static}}.
* См. также {{L|Render Modes|Режимы отрисовки}} для спрайтов, особенно [[Render Modes#World Space Glow (9)|Свечение]]''.
 
== Стандартные значения ==
{| class="wikitable"
! !! Яркость
|-
| Автомобильные фары
| style="background: #e7dfc0;" class="table-yes"|<code style="color:black;">231 223 192</code>
|-
| Лампа Комбайнов
| style="background: #93e2f0;" class="table-yes"|<code style="color:black;">147 226 240</code>
|-
| Вольфрамовая лампа
| style="background: #fed892;" class="table-yes"|<code style="color:black;">254 216 146</code>
|-
| Флуоресцентная труба
| style="background: #9fedd7;" class="table-yes"|<code style="color:black;">159 237 215</code>
|-
| Лампа накаливания
| style="background: #fff591;" class="table-yes"|<code style="color:black;">255 245 145</code>
|}
Значения для {{L|Skybox Basics|скайбоксов}} смотрите в {{L|List of Skyboxes|списке}}.
 
== Примечания ==
*Указание имени источника делает его гораздо тяжелее для рендеринга. Давайте имена только необходимым источникам света. Несколько источников света с одинаковыми именами движку проще обрабатывать, чем с разными.
*{{L|light_dynamic}} - самый тяжёлый, и на некоторых системах может не отображаться
*Основные энтити света не связаны с видимыми источниками (например, лампочки). Для этого вам нужна модель. Смотрите список {{L|HL2 Light Props|моделей освещения}}.
*Основные энтити света не "отсвечивают", как будто в тумане или сумерках. Чтобы это заработало, скомпилируйте и запустите карту с включённым {{L|HDR}}, или добавьте {{L|point_spotlight}} (с ''отключенным'' динамическим освещением, если таковое не нужно) или энтитю {{L|env_lightglow}}.
*Карты не будут освещены, если вы не запустите {{L|vrad}} (или эквивалент). VRAD не сможет работать как надо и не будет рассчитывать реалистичное отражение света, если на карте присутствуют {{L|Leak|утечки}}.
*Некоторые текстуры сами отбрасывают свет и могут быть созданы с помощью <code>{{L|lights.rad}}</code> в папке мода или в <code>sourcesdk/bin</code>.
*Перемещаемые объекты не меняют свечения. Их освещение будет рассчитываться только в соответствии  с их положением в Хаммере (например, браш из тёмной комнаты не станет ярче, если его перенести в освещённую комнату).
 
== {{L|Console command|Консольные команды}} ==
 
[[File:Mat fullbright 2.jpg|thumb|<code>mat_fullbright 2</code>. Ярко-белые физические модели, кажется, работают с ошибкой; они освещаются правильно во время движения.]]
 
;<code>mat_fullbright <0-2></code>
:<code>0</code> - нормальное освещение.
:<code>1</code> - 'полноценное' освещение, когда всё освещено на 100%.
:<code>2</code> был введён в Orange Box и отображает 'только освещение'. Он заменяет все текстуры на однотонный цвет, позволяя вам увидеть что, где и как излучает свет.
 
== См. также ==
* {{L|HL2 Light Props}}
* {{L|Color Theory in Level Design|Теория цвета (дизайн уровней)}}
* [[List_of_entities#Light_entities|Энтити света]] - Список энтити света.
* {{L|Intermediate Lighting|Вспомогательное освещение}}
* {{L|Advanced Lighting|Продвинутое освещение}}
* {{L|Window lighting|Освещение из окна}} - Как имитировать солнечный свет, исходящий из проёмов.
 
== Внешние ссылки ==
<!--
* [http://www.halflifestorm.com/?page=tutorials&tutorial=18 Understanding and Using Lightmaps] - Tutorial
* [http://www.halflifestorm.com/?page=tutorials&tutorial=44 Volumetric Lighting] - Tutorial
the Half-Life Storm website seems to have gone AWOL -->
* [http://source-tutorials.synthasite.com/lighting-tutorial.php Lighting Tutorial] - Covers entities & variables with examples
* [http://www.editlife.net/tutorials.php?id=15 Quadratic/Linear/Constant in Lights]
<!-- SDK nuts has closed. When (and if) this tutorial is ported onto the VDC, please link to it instead!
*[http://www.sdknuts.net/akg/?sdk=tutlights HDR/Shaped Light/Burning Light/Darkness/Sun/Volumetric]
-->
 
{{ACategory|Level Design}}
{{ACategory|Hubs}}
{{ACategory|Lighting|*}}

Latest revision as of 07:18, 30 May 2025

English (en)Español (es)Русский (ru)中文 (zh)Translate (Translate)
Серия Воссоздание окружающей обстановки(en) Выскажите свои мысли — Помогите нам воплотить больше идей

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

Руководства

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

Виды

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

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

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

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

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

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

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

Tip.pngСовет:Динамические тени отбрасываются только моделями(en) (NPC, физическими пропами и т.д.), и только на брашевые(en) поверхности (от статичных и динамических источников света). Они рассчитываются в реальном времени, поэтому довольно грубы и достаточно затратны(en) для визуализации.
Warning.pngПредупреждение: Это не *настоящие* тени, а процедурные (создаваемые кодом) текстуры, проецируемые объектом. В Left 4 Dead, Portal 2 и Alien Swarm направление теней вычисляется на основе энтити, и обусловлено близостью к ней света. Но не в модах Source2006/2007/2013, если там не используются Динамические RTT углы теней из Source 2007-го года(en).
Warning.pngПредупреждение:Иногда динамические тени проникают сквозь стены и полы, выдавая местоположение игроков или объектов. Если вы столкнулись с этой проблемой, используйте info_no_dynamic_shadow(en).
Note.pngПримечание:Тени "скользят" по визуальной сетке, если только нет shadowlod, задаваемого в QC(en). Shadow LOD при создании тени используют низкую детализацию. Это не относится к теням на карте (фонарикам, env_projectedtexture(en))
Note.pngПримечание:Если динамические тени пересекаются, то они не сливаются друг с другом или освещением карты. Это может приводить к нежелательным эффектам 'удвоения', когда, например, физические пропы находятся на физическом пропе стола. Чтобы обойти эту проблему, вы можете включать и отключать динамические тени требуемых энтити.
Note.pngПримечание:Динамические тени поддерживают полупрозрачность. Если ваша модель имеет разные уровни прозрачности, они могут отразиться на тени.
shadow_control
Точечная энтити, использует управление динамическими тенями по всей карте, в том числе максимальное расстояние отбрасывания, направление отбрасывания и резкость/рассеяние.
info_no_dynamic_shadow
Точечное энтити, использет список брашевых(en) поверхностей, чтобы не отбрасывать динамические тени.
Энтити prop_physics
Имеет значение "shadowcastdist" для переопределения дальности отбрасывания динамических теней.
Энтити prop_dynamic
Имеет значение "disableshadows" и входы "enableshadows" и "disableshadows" для управления отбрасываемыми ими динамическими тенями.
Энтити NPC
Имеет управление prop_dynamic shadow, а также "disablereceiveshadows"
Нужно сделать: чтобы предотвращать...?

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

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

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

Стандартные значения

Яркость
Автомобильные фары 231 223 192
Лампа Комбайнов 147 226 240
Вольфрамовая лампа 254 216 146
Флуоресцентная труба 159 237 215
Лампа накаливания 255 245 145

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

Примечания

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

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

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

См. также

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