Ru/Intermediate Lighting: Difference between revisions

From Valve Developer Community
< Ru
Jump to navigation Jump to search
No edit summary
m (obsolete language category)
 
(63 intermediate revisions by 7 users not shown)
Line 1: Line 1:
{{otherlang2
{{LanguageBar|title = Управление освещением}}
|title=Вспомогательное освещение
|en=Intermediate Lighting
}}


{{Int level design}}
{{Int level design}}
Этот учебник охватывает более продвинутые способы освещения, используемого на картах [[Source]]. Если вы новичок в работе с [[Valve Hammer Editor|Hammer]], прочтите сначала [[Adding_Light:ru|добавление света]]. Здесь будут раскрыты все возможные способы создания освещения, а также все параметры, связанные с игрой света. Это будет сопровождаться серией углублённых мини-статей.
Этот учебник расскажет о самых продвинутых способах освещения, которые используются на картах {{Source|3.1}}. Если вы новичок в работе с {{Hammer|1}}, прочтите сначала {{L|Adding Light|добавление света}}. Здесь же будут раскрыты все возможные способы создания освещения, а также настройки игры света. Всё это будет сопровождаться серией углублённых мини-статей по теме.


== Энтити освещения ==
== Объекты освещения ==
Это - список сущностей физического освещения в той или иной форме. Заголовок каждого раздела ссылается на страницу данной сущности.
Это - список объектов физического освещения разного типа. Заголовок каждого раздела ссылается на страницу описания указанного объекта.


=== [[light]] ===
{{category header}}
[[Image:Light.png|left]]
{{category newcolumn}}
[[image:int_light.jpg|thumb|150px|right]]


A static, invisible, omni-directional light source. Can be turned on and off through the [[Inputs and Outputs|I/O system]] (note that this will increase the complexity of your lightmaps, as pre-compiled values must be stored for each on/off combination and cost more memory). Able to set up with patterns given effects but cannot move locations. Light is cast in all directions from the origin of the entity. The brightness depends upon the falloff values you set up. This light entity is the simplest of all lights and is used commonly.{{clr}}
[[File:int_light.jpg|thumb|150px|right]]
=== {{ent|light}} ===
[[File:Light.png|link=light|left]]


=== [[light_spot]] ===
Статичный, невидимый, всенаправленный источник света. Может включаться и выключаться через {{L|Inputs and Outputs|систему ввода-вывода}} (обратите внимание, что это усложнит вашу карту освещенности, и при компилировании будут сохраняться значения для всех комбинаций вкл/выкл, что скажется на загрузке памяти). Можно делать шаблоны с эффектами, но нельзя перемещать с места на место. Свет распространяется во всех направлениях из точки объекта освещения. Яркость зависит от установленного значения рассеивания. Данный объект является самым простым и широко используется на картах.{{clr}}
[[Image:light_spot.gif|left]]
[[image:int_spot.jpg|thumb|150px|right]]


A static, directional form of the light entity. This light can be pointed in any direction and contains controls for the shape and properties of the light cone. It can also be turned on and off through the [[Inputs and Outputs|I/O system]], though a switchable light_spot may cause lightmap errors. The controls of the light make it the easiest to mimic real-world light sources, and is recommended for common use.
{{category cell}}


{{note|When using this entity, it may be necessary to turn the brightness value up significantly to achieve visible results. Streetlights for example may need brightnesses of 3000-4000.}}{{clr}}
[[File:int_spot.jpg|thumb|150px|right]]
=== {{ent|light_spot}} ===
[[File:light_spot.gif|link=light_spot|left]]


=== [[light_environment]] ===
Статичный, направленный свет. Может светить в любом направлении и содержит элементы управления свойствами формы и конуса. Также может быть включен и выключен с помощью {{L|Inputs and Outputs|системы ввода/вывода}}, однако, переключаемый light_spot может вызвать ошибки карты освещенности. Легко имитирует реальные источники света и рекомендуется для широкого применения.
[[Image:light_environment.png|left]]
[[Image:toolsskybox.gif|thumb|128px|right|The skybox texture.]]
[[image:int_envlight.jpg|thumb|200px|right|A Hammer and an in-game representation.]]


A directional light cast in only one direction, commonly used for sunlight. The direction is decided by the values entered into the entity. The key is that the light is only cast from the <code>tools/toolsskybox</code> texture. The first key value, Brightness, controls direct lighting. This approximates direct sunlight. The second key value, Ambient, controls indirect lighting from the sky. This is the diffuse light that is cast on every face that can "see" the sky. Basically the color and brightness of the shadow the light leaves.
{{Note|Вполне возможно, что для достижения видимых результатов яркость этого объекта придётся значительно увеличить. Например, яркость уличных фонарей должна быть 3000-4000.}}{{clr}}


If you don't want to come up with your own values for this entity, the values used in the official [[Valve]] games for each skybox, are given [[Sky_List|here]].
{{category cell}}


Normally, only one light_environment entity is required per level. If multiple light_environment entities are placed, [[Vrad]] uses the [[keyvalue]]s from the first found light_environment to calculate the lighting.{{clr}}
[[File:int_envlight.jpg|thumb|right|Представление в Хаммере и игре.]]
=== {{ent|light_environment}} ===
[[File:light_environment.png|link=light_environment|left]]
[[File:toolsskybox.gif|thumb|left|Текстура скайбокса.]]


=== [[point_spotlight]], [[npc_spotlight]] ===
Изображает солнечный свет, направленный в одну сторону. Направление задаётся числами параметров оъекта. Ключевым является то, что свет исходит из текстуры <code>tools/toolsskybox</code>. Первое значение - Brightness (яркость), задаёт направление освещения. Это приблизительно прямые солнечные лучи. Второе значение - Ambient (окружение), задает рассеянный свет с неба. Он падает на каждую открытую небу поверхность. В основном, цвет и яркость теней на листьях.
[[image:int_point.jpg|thumb|225px|right]]


A straight beam of light used for a spotlight effect. The visual effects include a flare around the light source, a beam along the direction it’s pointing, and a [[light_dynamic]] where the beam touches the ground. While incapable of moving on its own, the light or its target may be tied to a moving entity. Alternatively, [[npc_spotlight]] can be used to produce the same visual effect while being controlled precisely and fluently by an [[NPC]]'s intelligence. This dynamic lighting source is expensive to render and should be used sparingly.{{clr}}
Если Вы не хотите придумывать свои значения для этого объекта освещения, то {{L|Sky_List|вот}} список официальных значений, используемых для каждого небосвода в играх {{L|Valve}}.


== Related items ==
Обычно, на карте требуется только один объект light_environment. Если Вы разместите несколько таких объектов, {{L|Vrad}} будет брать значения из первого обработанного.{{clr}}
This is a list of all the topics related to lighting itself but don't emit light. While none of these emit any physical light they're all essential to creating effects with it. If it’s controlling the lighting of entities or controlling an [[npc antlion|antlion's]] shadow they all fall under lighting effects.{{clr}}


=== [[env_sun]] ===
{{category cell}}
[[image:int_sun.jpg|thumb|225px|right|The env_sun effect.]]


Often misinterpreted as a light that creates lighting like the sun it is instead an effect that places a flare in the sky that looks and acts like the sun. Casting no light at all it is often used with a light_environment to create its lighting effect.{{clr}}
[[File:int_point.jpg|thumb|right]]
=== {{ent|point_spotlight}}, {{ent|npc_spotlight}} ===


=== [[env_sprite]]===
Прямой луч света для эффекта прожектора. Визуальные эффекты включают блики вокруг источника света, направленный яркий луч, и {{L|light_dynamic|динамическое освещение}} земли. Не перемещается самостоятельно, но свет и его цель могут быть привязаны к двигающемуся объекту мира. Также, {{L|npc_spotlight}} может использоваться для создания визуального эффекта, когда светом управляет интеллект {{L|NPC}}. Этот источник динамического света весьма нагружает графику, и должен использоваться бережно.{{clr}}
One entity that also does not cast light is env_sprite. Env_sprite is mainly used for light glows and even as glares and other various extreme glows. In Episode 1, a map near the end of the game uses env_sprite to simulate strong amounts of light in a large area filled with light. This is how env_sprite can be used to act as light pouring in from an area like outside of a dark place and even can be used for a more HDR friendly lighting technique. That map name near the end of [[Ep1]] is called ep1_c17_06_d.


=== [[shadow_control]] ===
{{category end}}
[[Image:shadow_control.png|left]]


Used to control all the [[dynamic shadows]] cast within the game. Shadows cast by any movable object (NPC and physics entities) fall into this category. Used to line up the shadows angles so they appear correct with lighting. The one directional nature may be a problem but use of triggers to even it out should help. In Left 4 Dead, Portal 2 and Alien Swarm, the direction of a shadow is calculated on a per-entity basis, and dictated by the closest light to the entity. But not in Source2006/2007 mods, unless you apply [[Dynamic RTT shadow angles in Source 2007]] to your mod. {{clr}}
== Вспомогательные объекты ==
Это - список всех тем, связанных с объектами освещения, которые не испускают свет. Несмотря на это, они нужны для эффектов, связанных с освещением. Если они управляются освещением объектов или теней для {{L|npc antlion|antlion's}}, то обязательно попадают под эффекты освещения.{{clr}}


Shadow_control is designed for use with [[light environment|light_environment]]; and is therefore of very limited use with [[light]], [[light spot|light_spot]] or [[light dynamic|light_dynamic]].
{{category header}}
* Shadow_control calculates shadows from only one light source, and only one shadow_control per environment will work, so an object may cast only one dynamic shadow.
{{category newcolumn}}
* Shadow_control calculates shadows from only 'parallel' light rays (eg sun / moon); not rays radiating from a point source (eg light bulb).
* Shadow_control has no effect on [[Lightmap]]s (and vice versa).
Dynamic shadows do not blend well with subtle [[Lightmap]] shadows.
* Movable objects (most entity models: NPC, prop_phys, weapon_, prop_vehicle, prop_dynamic, etc) never cast lightmap shadows; but do cast dynamic shadows (when shadow_control is enabled). Only [[Brush|World Brushes]] and prop_static objects never cast dynamic shadows; but they do cast lightmap shadows.
* [[Lightmap]] Scale does not affect dynamic shadow detail/diffusion (lightmap scale equivalent would be 1 luxel/unit).
* Dynamic shadows and lightmap shadows from the same light source do not merge, but overlap or "double-up".
* See also [[Info no dynamic shadow|Info_no_dynamic_shadow]].
* Dynamic shadows are only received by brushes.


=== [[Vrad]] ===
[[File:int_sun.jpg|thumb|right|Эффект env_sun.]]
It is the part of the compiling process that will generate all your lighting effects, it’s also one of the longest parts of a compile and can often be the one you need to run the most. With no way to estimate lighting effects apart from experience, it can often be tiresome to compile enough time to get a lighting effect right. The topic of how to compile Rad well is tackled later. For now familiarization with its features and setup should be a priority.{{clr}}
=== {{ent|env_sun}} ===
[[File:Env sun(gmod).png|link=env_sun|left]]


== Techniques ==
Зачастую неправильно трактуется как солнечный свет, по сути являясь эффектом наложения бликов на небе, который выглядит и действует как солнце. Он вообще не излучает свет, но часто используется вместе с light_environment для создания эффекта освещения.{{clr}}
This covers how to use the mentioned items to create effective lighting. Before, a lot of practical knowledge was covered. But knowledge is useless unless it's utilized well. The next few sections are specifics about how to use all the information to create better lighting in your maps.{{clr}}


=== Color temperature ===
{{category cell}}
While the RGB color of the ''Brightness'' setting of every light entity is preset to <code>255 255 255</code>, very few forms of real life lighting are actually white in color. Depending on the "blackbody temperature" of the light emitted, it will emit a color somewhere between orange "red" (referred to as "warm", although its temperature is actually lower) and ultra violet "blue" (referred to as "cool"), as shown accurately [http://www.techmind.org/colour/coltemp.html on this scale]. You can use [[Wikipedia:Color_temperature|this article]] as a reference to where on the scale your light source should end up, or you can use Valve map standards, where the RGB value for a common tungsten light bulb is a "warm" <code>254 216 146</code>, a common fluorescent light is a "cool" <code>159 237 215</code>, and usual Combine lighting is an icy <code>147 226 240</code>.


=== Lighting psychology ===
==={{ent|env_sprite}}===
Еще один объект освещения, который не излучает свет. Env_sprite в основном используется для лёгкого свечения и различных ярких засветов. В Episode 1, в конце карты используется env_sprite, изображающий большую залитую светом площадку. Это пример того, как env_sprite может быть использован в качестве яркой заливки светом из-за пределов тёмного пространства, и вместе с тем может задействовать технологию HDR. Эта карта находится в конце {{L|Ep1}} и называется ep1_c17_06_d.


[[Image:Lighting-greentinge.jpg|thumb|250px|There are many color combinations to be found. Here, a delicate green tinge gives a sickly appearance.]]
{{category cell}}


It has been proven that cooler lighting in the "blackbody temperature" spectra (see above) will stress players, making them feel uneasy and sometimes even sick, while warmer lighting will not.
==={{ent|shadow_control}}===
[[File:shadow_control.png|link=shadow_control|left]]


This subconscious emotional response to lighting can be utilized to deliver purposely lighted environments that will set the mood of the player. It can be as simple as choosing between using fluorescent lights (for horror settings) or glowing light bulbs (for safe environments).
Управляет всеми динамическими тенями в игре. В эту категорию попадают тени от всех движущиеся объектов (NPC и физических объектов). Выравнивает тени согласно с освещением. Однонаправленный характер теней может стать проблемой, но триггеры помогут это исправить. В {{Left 4 Dead|4}}, {{Portal 2|4}} и {{as|4}}, направление тени рассчитывается на уровне каждого оьъекта, и диктуется ближайшим от неё освещением. Но не в модах Source2006/2007, если для вашего мода не применяются {{L|Dynamic RTT shadow angles in Source 2007}}. {{clr}}


For instance, in the first map of [[Half-Life 2]] there is a corridor that a civil protection guard will escort the player through when he is being brought in for interrogation (or what-not). Examination of the lighting will reveal that Valve has kept the psychological effects in mind while setting it. The corridor starts off with a standard tungsten lamp (with a warm glow), directly followed by a fluorescent light (with an uneasy glow). This combination is at most very rare in real life, because it would require that the architect would suddenly change his mind while designing the corridor, or the electrician running out of light fixtures. It is more likely that Valve (or the Combine) wanted to achieve the effect that one would be walking from a safe environment to an unsafe one.
Shadow_control предназначен для использования вместе с {{ent|light_environment}}; и поэтому имеет ограничение в использовании с {{ent|light}}, {{ent|light_spot}} или {{ent|light_dynamic}}.  
* Shadow_control рассчитывает тени только от одного источника света, и работать будет только один shadow_control, так что объект сможет отбрасывать только одну динамическую тень.
* Shadow_control рассчитывает тени только от 'параллельных' солнечных лучей (например, солнце / луна); игнорирует лучи от точечных источников света (например, лампы).
* Shadow_control не влияет на {{L|Lightmap}} (и наоборот).
Динамические тени не сочетаются с тонкими тенями {{L|Lightmap}}.
* Подвижные объекты (большинство моделей: NPC, prop_phys, weapon_, prop_vehicle, prop_dynamic, и т.д.) никогда не отбрасывают теней карты освещенности; но отбрасывают динамические (когда включено shadow_control). Только {{L|Brush|браши}} и объекты prop_static не отбрасывают динамических теней; но отбрасывают тени карты освещенности.
* Величина {{L|Lightmap}} не влияет на резкость/рассеивание динамических теней (шкала карты освещения примерно равна 1 luxel/unit).
* Динамические тени и тени карты освещения от одного источника света не сливаются, но пересекаются или "удваиваются".
* См. также {{L|Info no dynamic shadow|Info_no_dynamic_shadow}}.
* Динамические тени падают только на браши.


In the cell before the one the player enters, he may bear witness to an unsettling scene involving a citizen explaining his predicament. Here there is a tungsten light hanging from the ceiling. This is probably because a fluorescent light would clash too much with the small, cubic room. (Fluorescent lights are usually used for corridors and large areas.) However, off to the side, is a ''disembodied'' [[light_spot]], whose sole purpose is to provide the mood lighting for the scene.
{{category cell}}


Apart from the above direct effects, using [[Color theory (level design)|color theory]] can also aid in setting the mood of the environment through indirect half subconscious association. Taking fluorescent lights as an example, they have a cold uneasy feeling in general, so the soft unnatural blue glow can conjure up feelings of cold emptiness and isolation.
=== {{L|Vrad}} ===
Является частью компиляции, создаёт все световые эффекты на карте. Будучи самым длинным процессом компиляции, он должен запускаться первым. Невозможность оценить световые эффекты опытным путём заставляет прибегать к такой утомительной процедуре, которая одна даёт правильное освещение. Статья компиляции в Rad будет размещена позже. Сейчас же приоритетом должно стать ознакомление с его возможностями и настройками.{{clr}}


The color isn't the only effect though. The spacing and brightness of the light and what isn't lit, carries much weight too. Bright rooms feel safer because what's there is directly visible and easy to work with, but on the other hand sporadically dotted lights will amplify or create an uneasy feeling because the user has so much hidden or not quite visible to them. Along the same lines, if every corner of a room is lit except one, that corner will be perceived as holding a potential threat, or other hidden stuff, and will therefore often draw the exploring players attention.
{{category end}}


Using this knowledge is up to the level designer. Horror maps and kids games alike can be augmented by it, and accidentally creating a spooky kids game is a sure way to lose the pay check for the work. Lighting doesn't just make things be seen, it defines how they appear to everyone.
== Методы ==
Они раскрывают, как использовать указанные элементы для создания эффективного освещения. Ранее было преподано много практических знаний. Но знание бесполезно, если оно используется ненадлежащим образом. Следующие разделы покажут вам, как использовать всю полноту информации, чтобы создавать лучшее освещение на ваших картах.{{clr}}


=== Creating a believable light source ===
=== Цветовая температура ===
Creating a believable light source can often be a challenge. Simply placing a light entity in a map does nothing to explain where that light came from or why it's there. A believable light source is one that appears like it should be there and sits comfortably within the environment. Often a good light is made up of multiple entities. Commonly there are two: One for the light and one for its source, often a lamp (made from a prop_static or a [[func_detail]] with an appropriate texture).
Обычно, яркость цвета RGB выставляется на <code>255 255 255</code>, но в реальности ярко-белое освещение встречается редко. В зависимости от "температуры чёрного тела", оно будет излучать цвета где-то между оранжевым "красным" (именуется "тёплым", хотя его температура на самом деле ниже) и ультрафиолетовым "синим" (именуемым "холодным"), как точно показано [http://www.techmind.org/colour/coltemp.html на этой шкале]. Вы можете взять [[Wikipedia:Color_temperature|эту статью]] в качестве ссылки на ваш способ создания света, или использовать стандартные карты Valve, где уже выставлены значения RGB для "теплого" света лампы накаливания <code>254 216 146</code>, "холодного" света флюоресцентной лампы <code>159 237 215</code>, и обычного сочетания ледяного света <code>147 226 240</code>.


[[Image:Light_decklight01_on.jpg|thumb|125px|right|A common lamp.]]
=== Психология освещения ===
The first step is to determine what light sources are available. Look for textures or models that would be emitting light. Filtering by the word "light" or "lamp" in either the model or texture browser, works well. Now pick one that fits the feel of the room (i.e. industrial lights for an industrial scene) and place that model or texture in the room. For this example pick the light shown on the right and place it with a prop_static.


Now that there's something that looks like it would emit light, the next step is to create the light it's emitting. Look at the source that has been chosen and ask yourself if the light emitted is going to be colored by tinted glass, and if the source is focusing/shading the light into a directed light source. Use the assorted light entities and set its properties accordingly to create the effect. With the given example the light is going to be focused in one direction, so pick a light_spot. Next, this is an intense light, so give it a brightness of 1000. Now look at its color. The glass is not tinted, and while the light emitted is intense, a flood light in the real world will gain its intensity through using very reflective surfaces on its inside to focus the light, so the temperature is also close enough to justify leaving the values at <code>255 255 255</code>. Now line it up compared to the prop_static, and alter the angles and focus of the light so that it appears to come from the prop_static.
[[File:Lighting-greentinge.jpg|thumb|250px|Существует много цветовых комбинаций. Здесь нежный зелёный оттенок придаёт болезненный вид.]]


Now there’s a light lined up to its source, there may be a problem though. If the aligned light source has ended up inside the boundaries of the model/brush used for the source, it is going to block the light emitted (only lighting up props). To prevent this, go into the properties of the prop_static, and make sure that it has "Disable shadows" set to "Yes". (If the light source is a brush, tie it to a [[func_brush]] and alter its properties in the same way. This prevent the light from being blocked by the light source itself.
Было доказано, что спектр холодного освещения "температуры чёрного тела" (см. выше) угнетает игроков, заставляя чувствовать себя неловко, а иногда и болезненно, даже если и присутствует тёплый цвет.


Now that you have a working setup, a good idea is to group them (and perhaps also turn this group into a prefab for insertion into other maps) so that they always stay together. Now if you need more lights, you can copy this group.
Эта подсознательная эмоциональная реакция может быть использована для создания определённого настроения игрока. Например, комнаты с люминесцентными лампами будут изображать ужасы, а яркие глоу-лампы - спокойную обстановку.


Another way to create a high quality light source that portrays real life better but doesn't compromise on performance, is combination of a light and light_spot. Position the light_spot as described above, but position the light around 50 units away from the model that is the light's source. Make this light have a brightness of approximately 50, and be the same color as the light_spot. This will often create a more correct form of glow on surfaces that the light_spot often lacks.{{clr}}
Например, на первой карте {{L|Half-Life 2}} есть коридор, где охранник ведёт игрока на допрос (типа того). Исследование освещения покажет, что Valve постоянно сохраняет психологический эффект. Коридор начинается с обычной лампы накаливания (тёплое свечение), за которым идёт лампа дневного света (с неприятным свечением). Такая комбинация довольно редко встречается в реальной жизни, потому что это означает, что архитектор передумал строить коридор, или у электрика закончились нормальные лампы. Вероятнее всего, Valve (или Комбайны) хотели добиться эффекта перехода между опасной и безопасной зонами.


=== Static versus dynamic ===
Перед тем, как зайти в одну из камер, игрок видит тревожную сцену с участием гражданина, объясняющего своё затруднительное положение. Здесь на потолке светит лампа накаливания. Скорее всего это потому, что дневной свет будет некомфортен для такого объёма. (Флуоресцентный свет используется в основном для коридоров и больших пространств.) Тем не менее, чуть в стороне расположен ''бестелесный'' {{L|light_spot}}, который придаёт определённое настроение сцене.
There are many advantages, performance wise, of using static light sources over dynamic ones. Static lights carry no additional processing weight so their use is essential to fast rendering maps. Dynamic lights can carry a lot of rendering weight and can be expensive to use in your map. Its important to know where and when to use each type of light and avoid using the wrong type.


Firstly static lights are calculated during the VRAD compile process; therefore, there is next to no calculations done in game it merely needs to render the light calculated which is a fast process. The common static lights are light, light_spot and light_environment but there are conditions that can change this. The problem which comes with static lights is the fact that it is static. While they allow very precise and detailed lighting no special effects can be given with static lighting because it’s not going to change.  
Помимо вышеперечисленных прямых эффектов, в создании определённого настроения также может помочь {{L|Color theory (level design)|теория цвета}}. Принимаемые в качестве примера лампы дневного света, тем не менее имеют неприятное холодное ощущение, поскольку неестественное мягкое синее свечение вызывает чувство холодной пустоты и изоляции.


Dynamic lighting on the other hand comes in two flavors. There are the switchable lights and the true dynamically calculated lights. Each has its own processing weight but both are expensive to render and should be used sparingly.
Хотя, цвет - не единственный эффект. Расстояние и освещённость также вносят свою лепту. Освещённые комнаты кажутся более безопасными, потому что хорошо просматриваются, а комнаты с постоянно мерцающим светом вызывают неприятные чувства, поскольку большая часть пространства скрыта от игрока. Также, если в комнате хорошо видны все углы, кроме одного, то именно этот угол станет потенциальной угрозой, и будет находиться под пристальным вниманием игроков.


Switchable lights are the same as static lights in that they use lightmap information compiled during RAD. A light is set as being switchable by one of three things such as giving it a name, giving it a style, or giving it a pattern. Regular lights that don't support dynamic effects are the lights generally used as switchable lights, this includes lights like light, and light_spot but '''not''' light_environment. Switchable lights use a set of two lightmaps on and off. Switchable lights alternate or blend between the two lightmaps, this allows partial brightness while keeping it to just two lightmaps. This gives all the benefits of the static lighting but allows it to change and be partially dynamic. Say you have two switchable lights shining on the same face, how many lightmaps are needed?
Используйте эту информацию, чтобы стать дизайнером уровня. Она поможет создавать как карты ужасов, так и карты для детей, но не старайтесь пугать детей до икоты: Бог вас покарает. Освещение не просто делает мир видимым, оно определяет его.


* Light 1 & 2 ON
=== Правдоподобный источник света ===
* Light 1 ON, 2 OFF
Создание правдоподобного источника света может стать нетривиальной задачей. Простое размещение объектов освещения, излучающих свет, ничего не даёт в плане того, зачем оно там и почему. Правильный источник света - это такой источник, который выглядит на карте как родной. Зачастую хороший свет состоит из нескольких объектов освещения. Обычно их два: один - источник света, а другой - лампа (берётся prop_static или {{L|func_detail}} с соответствующей текстурой).
* Light 1 OFF, 2 ON
* Light 1 & 2 OFF


That's four states in total. You add a third switchable light and it goes up to eight lightmaps. Here becomes the problem with switchable lights, it becomes expensive in lightmaps to create all the possible states. So expensive in fact that there is a hard-coded limit that means you can only have two switchable lights affecting the same face. There is a slight solution though, the lights with identical names will all be given the same lightmap, so you can have 50 switchable lights with the same name shining on the same face; however, you cannot have more than 32 light source names. . Because of the extra lightmaps switchable lights use it increases the amount of time it takes RAD to run, increases file size, and also uses up system resources when it alternates between them; however, a switchable light sat in one state or the other, has little or no more effect than a static light.  
[[File:Light_decklight01_on.jpg|thumb|125px|right|Обычная лампа.]]
Первый шаг состоит в том, чтобы определиться с источником света. Найдите нужную текстуру или модель. Фильтр по словам "light" или "lamp" в браузере текстур или моделей даст хороший результат. Теперь выберите лампу, подходящую по обстановке (т.е. промышленные для промышленной сцены) и разместите в комнате модель или текстуру. Для нашего примера выберите лампу, показанную справа, и поставьте её на карту как prop_static.


True dynamic lighting is something that has to be built into the entity itself, its  most often recognized by the Parent property within the entity. The entities with the built in dynamic effect are light_dynamic and point_spot. Point_spot is special in the unique fact that is has a flag that can enable it as dynamic or static, its set to dynamic by default and can often catch you off guard. The dynamic process done for dynamic lights is run entirely within the game, this means it has little to no effect on the RAD compile or file size but it will slow down your map. The system slowdown caused by dynamic lights is generally consistent as the light needs to be rendered continuously. Such entities should only be used when the source of the light is moving, if the light itself is not meant to move then it shouldn't be a true dynamic light. If it’s merely meant to turn on and off it should be switchable. No movement should be static. If used improperly the costs of using dynamic lighting will outweigh the benefits of doing so. Dynamic lights should be used even more sparingly than switchable lights. Another down side to the dynamic light is that to simplify the calculations it doesn’t run process like reflection and diffusion, this results in harsher simpler looking lights.  
Следующим шагом будет создание света. Посмотрите на выбранный источник и спросите себя: будет ли свет исходить из-за тонированного стекла, и не является ли он узко направленным лучом. Задействуйте разные объекты освещения, и задайте им соответствующие свойства, которые создадут нужный эффект. В данном примере свет будет направленным, так что берём light_spot. Далее, этот будет интенсивный свет, поэтому выставляем яркость на 1000. Теперь посмотрим на цвет источника. Стекло не тонировано, а излучаемый поток в реальном мире получается интенсивным за счёт отражающих поверхностей внутри, поэтому оставим значение температуры на <code>255 255 255</code>. Теперь отрегулируйте линию луча так, как если бы он исходил из prop_static.


Static lights are easy on the engine and give great detail, but dynamic lights represent the possibility for movement and change, but cost a greater amount to render and lose detail. The easiest way to tell what effect the dynamic lights are having is to test your map with the <code>+[[Showbudget]]</code> command. This allows you to figure out when an effect is too much and lighting effects are slowing down your map. Good use of dynamic lights can only improve your map, but they can be a costly effect.{{clr}}
Теперь может возникнуть проблема. Если вы поместили источник света внутри модели/браша, она может блокировать свет (который будет освещать только модель). Чтобы избежать этого, зайдите в свойства prop_static, и напротив строки  "Disable shadows" поставьте "Yes". (Если источником света является браш, преобразуйте его в {{L|func_brush}} и измените его свойства точно также. Это предотвратит блокировку источника света).


=== Quick and effective RAD ===
Теперь, когда у вас есть рабочие материалы, неплохо будет сгруппировать их (а возможно, и создать из них префабы, чтобы вставлять на другие карты) таким образом, чтобы они всегда оставались вместе.
The RAD compile process can be quite long, so frequently compiling can easily slow development progress to a crawl. There are a number of strategies you can employ to tackle this:
* Turn off RAD for the majority of your compiles, and only turn it on specifically when you want to tweak and test your lighting.
* Use the [[Cordon]] tool, so you are never compiling more of the level than you need to. (If you are using a [[light_environment]], make sure that you copy it so that there is one within the cordon boundary.)
* Make multiple changes at once. Rather than tweaking just one section of lights in the map, can you tweak multiple sets in different parts of the level, and then compile all your changes at once?
* Standardize your lighting. Choose RGB and brightness values for each type of light in your level (e.g. fluorescents, or spotlights, etc), and make each instance of that type of light have the same values to start with. Then instead of coming up with light values for each light in your level, you need only slightly tweak the light values to get the effect you need (e.g. a larger room might need a larger light of a particular type).
* Make use of any spare computer you have in your house. Install the SDK on those computers and use them to do your lighting compiles. Then you can continue doing other edits to the level, while you wait for the results of the lighting compile.
**Using a program like [http://www.dropbox.com Dropbox] or [http://sparkleshare.org/ SparkleShare] can automate synchronizing your map files, and make this easier.


== Conclusion ==
Еще одним способом создания высококачественного источника света, неотличимого от настоящего, и не идущего на компромиссы с производительностью, будет комбинация света и light_spot. Поместите light_spot так, как показано выше, но отодвиньте его примерно на 50 единиц от модели. Создайте свет с яркостью порядка 50 и того же цвета, как light_spot. Это придаст свечению правильную форму, чего зачастую одному light_spot не под силу.{{clr}}
This covers the base of all lighting effects that can be found in standard Source games. New lighting effects may be added with the release of [[Half-Life 2: Episode Two|Episode Two]].


== See also ==
=== Статичное освещение против динамического ===
* [[Lighting]]
У статичных источников света есть значительное преимущество перед динамическими. Статичные источники не дают дополнительной нагрузки на графику, поэтому они используются для быстрой прорисовки карты. Динамический свет весьма сильно нагружает движок, и может замедлить вашу карту. Важно понимать, где и как использовать тот или иной тип освещения.
* [[Advanced Lighting]]


[[Category:Lighting]]
Во-первых, статичное освещение рассчитывается во время VRAD-компиляции; поэтому, в игре оно просто визуализируется и не влияет на производительность. Стандартное статичное освещение - это light, light_spot и light_environment, но есть условия, которые могут это изменить. Проблема со статичным освещением в том, что оно - статично. И будучи таковым, оно не даст каких-либо специальных эффектов.
[[Category:Level Design]]
 
Динамическое же освещение представлено в двух вариантах. Существует переключаемое освещение, и динамически рассчитываемый свет. Каждый из них по-своему влияет на обработку, но оба они весьма нагружают графику, и должны использоваться экономно.
 
Переключаемое освещение похоже на статическое тем, что информацию о карте освещённости оно собирает в процессе компиляции RAD. Свет делают переключаемым с помощью трёх вещей: ему дают имя, ему дают стиль, ему задают шаблон. Обычным освещением, которое не поддерживает динамические эффекты, являются переключаемые огни: это light и light_spot, но отнюдь '''не''' light_environment. Переключаемый свет использует две карты освещенности: включено и выключено. Переключаемое освещение чередует или смешивает карты освещённости, что позволяет создавать их только две. Это даёт статическому освещению все преимущества, позволяя быть частично динамическим. Допустим, у вас есть два переключаемых источника света, которые падают на одну поверхность, сколько необходимо карт освещённости?
 
* Light 1 & 2 ВКЛ
* Light 1 ВКЛ, 2 ВЫКЛ
* Light 1 ВЫКЛ, 2 ВКЛ
* Light 1 & 2 ВЫКЛ
 
В целом, это четыре состояния. Вы добавили третью переключаемую лампу, и образовали восемь карт освещённости. Здесь возникает проблема с освещением, ибо для карты освещённости слишком тяжело создавать все возможные состояния. Дело в том, что существует жёстко запрограммированный лимит: для одной поверхности вы можете создавать только две переключаемых лампочки. Есть некоторое решение: для одной поверхности вы можете сделать 50 переключаемых лампочек с одним и тем же именем; тем не менее, нельзя создавать более 32 поименованных источников света. Переключаемое освещение увеличивает время запуска RAD, увеличивает размер файла, а также нагружает систему во время переключения; однако, в любом состоянии оно оказывает не большее воздействие, чем статичное освещение.
 
Истинное динамическое освещение - это то, что присуще самому объекту, и связано со свойствами её предков (Parent). Объект встроенного динамического эффекта -  light_dynamic и point_spot. Point_spot имеет уникальный флажок, который переводит его в динамический или статический режим освещения, и по-умолчанию включен динамический режим, что может застать Вас врасплох. Динамический процесс освещения полностью выполняется во время игры, что означает, что он не влияет на компилятор RAD и размер файла, но тормозит во время игры на карте. Система тормозит потому, что динамический свет должен постоянно прорисовываться. Такие объекты должны использоваться только тогда, когда источник света движется, если же свет не предназначен для движения, то он не должен быть истинно динамическим. Если он предназначен для включения и выключения, то должен быть переключаемым. Ни какое перемещение не должно иметь статичный свет. При неправильном использовании, затраты на динамическое освещение будут перевешивать его преимущества. Динамическое освещение должно использоваться гораздо более экономно, чем переключаемое освещение. Еще одной слабой стороной динамического освещения является то, что для упрощения вычислений оно не запускает процессы отражения и диффузии, что даёт резкий свет.
 
Статическое освещение легко для движка, и даёт хорошую детализацию, динамическое же освещение может перемещаться и изменяться, но при этом нагружается графика и возникает потеря детализации. Самым простым способом проверить вашу карту на загрузку динамическим освещением, является команда <code>+{{L|Showbudget}}</code>. Она позволяет выяснить, когда на вашей карте слишком много световых эффектов. Добротное использование динамического освещения может весьма улучшить вашу карту, и одновременно тормозить её.{{clr}}
 
=== Быстрый и эффективный RAD ===
Процесс компиляции RAD может проходить очень долго, что станет тормозом в процессе разработки карты. Решить это можно следующим образом:
* Выключите компиляцию RAD, и включайте её только тогда, когда необходимо настроить и проверить освещение карты.
* Используйте инструмент {{L|Hammer Cordon Usage|Cordon}}, чтобы компилировать только отдельные участки карты. (Если вы используете {{L|light_environment}}, создайте его копию, и поместите в пределах компилируемого участка карты.)
* Внесите несколько изменений сразу. Зачем настраивать только пару точек освещения, когда их можно настроить в разных частях карты, и всё это сразу скомпилировать?
* Стандартизируйте ваше освещение. Установите значения RGB и цвета для каждого типа освещения вашего уровня (напр., флуоресцентных ламп или прожекторов, и т.д.), чтобы каждый экземпляр имел одинаковые исходные значения. Тогда, вместо того, чтобы для каждого источника света придумывать свои значения, вам нужно всего лишь подправить некоторые значения для получения нужного эффекта (напр., в большой комнате понадобится много света определённого типа).
* Используйте любой свободный компьютер в доме. Установите на них SDK, и компилируйте там ваше освещение. Пока они компилируют, вы будете продолжать рисовать карту.
**Автоматизируйте синхронизацию ваших файлов с помощью программы [http://www.dropbox.com Dropbox] или [http://sparkleshare.org/ SparkleShare], чтобы упростить процесс.
 
== Заключение ==
Мы раскрыли основы эффектов освещения в стандартных играх Source. С выпуском {{L|Half-Life 2: Episode Two|Episode Two}} могут быть добавлены новые эффекты.
 
== См. также ==
* {{L|Lighting|Освещение}}
* {{L|Advanced Lighting|Продвинутое освещение}}
 
{{ACategory|Lighting}}
{{ACategory|Level Design}}
 
{{ACategory|Lighting}}
{{ACategory|Level Design}}

Latest revision as of 03:50, 22 August 2024

English (en)Русский (ru)中文 (zh)Translate (Translate)

Этот учебник расскажет о самых продвинутых способах освещения, которые используются на картах Source. Если вы новичок в работе с Hammer, прочтите сначала добавление света(en). Здесь же будут раскрыты все возможные способы создания освещения, а также настройки игры света. Всё это будет сопровождаться серией углублённых мини-статей по теме.

Объекты освещения

Это - список объектов физического освещения разного типа. Заголовок каждого раздела ссылается на страницу описания указанного объекта.

Int light.jpg

light

Light.png
Статичный, невидимый, всенаправленный источник света. Может включаться и выключаться через систему ввода-вывода(en) (обратите внимание, что это усложнит вашу карту освещенности, и при компилировании будут сохраняться значения для всех комбинаций вкл/выкл, что скажется на загрузке памяти). Можно делать шаблоны с эффектами, но нельзя перемещать с места на место. Свет распространяется во всех направлениях из точки объекта освещения. Яркость зависит от установленного значения рассеивания. Данный объект является самым простым и широко используется на картах.
Int spot.jpg

light_spot

Light spot.gif

Статичный, направленный свет. Может светить в любом направлении и содержит элементы управления свойствами формы и конуса. Также может быть включен и выключен с помощью системы ввода/вывода(en), однако, переключаемый light_spot может вызвать ошибки карты освещенности. Легко имитирует реальные источники света и рекомендуется для широкого применения.

Note.pngПримечание:Вполне возможно, что для достижения видимых результатов яркость этого объекта придётся значительно увеличить. Например, яркость уличных фонарей должна быть 3000-4000.
Представление в Хаммере и игре.

light_environment

Light environment.png
Текстура скайбокса.

Изображает солнечный свет, направленный в одну сторону. Направление задаётся числами параметров оъекта. Ключевым является то, что свет исходит из текстуры tools/toolsskybox. Первое значение - Brightness (яркость), задаёт направление освещения. Это приблизительно прямые солнечные лучи. Второе значение - Ambient (окружение), задает рассеянный свет с неба. Он падает на каждую открытую небу поверхность. В основном, цвет и яркость теней на листьях.

Если Вы не хотите придумывать свои значения для этого объекта освещения, то вот(en) список официальных значений, используемых для каждого небосвода в играх Valve(en).

Обычно, на карте требуется только один объект light_environment. Если Вы разместите несколько таких объектов, Vrad(en) будет брать значения из первого обработанного.
Int point.jpg

point_spotlight, npc_spotlight

Прямой луч света для эффекта прожектора. Визуальные эффекты включают блики вокруг источника света, направленный яркий луч, и динамическое освещение(en) земли. Не перемещается самостоятельно, но свет и его цель могут быть привязаны к двигающемуся объекту мира. Также, npc_spotlight(en) может использоваться для создания визуального эффекта, когда светом управляет интеллект NPC(en). Этот источник динамического света весьма нагружает графику, и должен использоваться бережно.

Вспомогательные объекты

Это - список всех тем, связанных с объектами освещения, которые не испускают свет. Несмотря на это, они нужны для эффектов, связанных с освещением. Если они управляются освещением объектов или теней для antlion's(en), то обязательно попадают под эффекты освещения.

Эффект env_sun.

env_sun

Env sun(gmod).png
Зачастую неправильно трактуется как солнечный свет, по сути являясь эффектом наложения бликов на небе, который выглядит и действует как солнце. Он вообще не излучает свет, но часто используется вместе с light_environment для создания эффекта освещения.

env_sprite

Еще один объект освещения, который не излучает свет. Env_sprite в основном используется для лёгкого свечения и различных ярких засветов. В Episode 1, в конце карты используется env_sprite, изображающий большую залитую светом площадку. Это пример того, как env_sprite может быть использован в качестве яркой заливки светом из-за пределов тёмного пространства, и вместе с тем может задействовать технологию HDR. Эта карта находится в конце Ep1(en) и называется ep1_c17_06_d.

shadow_control

Shadow control.png
Управляет всеми динамическими тенями в игре. В эту категорию попадают тени от всех движущиеся объектов (NPC и физических объектов). Выравнивает тени согласно с освещением. Однонаправленный характер теней может стать проблемой, но триггеры помогут это исправить. В Left 4 Dead Left 4 Dead, Portal 2 Portal 2 и Alien Swarm Alien Swarm, направление тени рассчитывается на уровне каждого оьъекта, и диктуется ближайшим от неё освещением. Но не в модах Source2006/2007, если для вашего мода не применяются Dynamic RTT shadow angles in Source 2007(en).

Shadow_control предназначен для использования вместе с light_environment; и поэтому имеет ограничение в использовании с light, light_spot или light_dynamic.

  • Shadow_control рассчитывает тени только от одного источника света, и работать будет только один shadow_control, так что объект сможет отбрасывать только одну динамическую тень.
  • Shadow_control рассчитывает тени только от 'параллельных' солнечных лучей (например, солнце / луна); игнорирует лучи от точечных источников света (например, лампы).
  • Shadow_control не влияет на Lightmap(en) (и наоборот).

Динамические тени не сочетаются с тонкими тенями Lightmap(en).

  • Подвижные объекты (большинство моделей: NPC, prop_phys, weapon_, prop_vehicle, prop_dynamic, и т.д.) никогда не отбрасывают теней карты освещенности; но отбрасывают динамические (когда включено shadow_control). Только браши(en) и объекты prop_static не отбрасывают динамических теней; но отбрасывают тени карты освещенности.
  • Величина Lightmap(en) не влияет на резкость/рассеивание динамических теней (шкала карты освещения примерно равна 1 luxel/unit).
  • Динамические тени и тени карты освещения от одного источника света не сливаются, но пересекаются или "удваиваются".
  • См. также Info_no_dynamic_shadow(en).
  • Динамические тени падают только на браши.

Vrad(en)

Является частью компиляции, создаёт все световые эффекты на карте. Будучи самым длинным процессом компиляции, он должен запускаться первым. Невозможность оценить световые эффекты опытным путём заставляет прибегать к такой утомительной процедуре, которая одна даёт правильное освещение. Статья компиляции в Rad будет размещена позже. Сейчас же приоритетом должно стать ознакомление с его возможностями и настройками.

Методы

Они раскрывают, как использовать указанные элементы для создания эффективного освещения. Ранее было преподано много практических знаний. Но знание бесполезно, если оно используется ненадлежащим образом. Следующие разделы покажут вам, как использовать всю полноту информации, чтобы создавать лучшее освещение на ваших картах.

Цветовая температура

Обычно, яркость цвета RGB выставляется на 255 255 255, но в реальности ярко-белое освещение встречается редко. В зависимости от "температуры чёрного тела", оно будет излучать цвета где-то между оранжевым "красным" (именуется "тёплым", хотя его температура на самом деле ниже) и ультрафиолетовым "синим" (именуемым "холодным"), как точно показано на этой шкале. Вы можете взять эту статью в качестве ссылки на ваш способ создания света, или использовать стандартные карты Valve, где уже выставлены значения RGB для "теплого" света лампы накаливания 254 216 146, "холодного" света флюоресцентной лампы 159 237 215, и обычного сочетания ледяного света 147 226 240.

Психология освещения

Существует много цветовых комбинаций. Здесь нежный зелёный оттенок придаёт болезненный вид.

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

Эта подсознательная эмоциональная реакция может быть использована для создания определённого настроения игрока. Например, комнаты с люминесцентными лампами будут изображать ужасы, а яркие глоу-лампы - спокойную обстановку.

Например, на первой карте Half-Life 2(en) есть коридор, где охранник ведёт игрока на допрос (типа того). Исследование освещения покажет, что Valve постоянно сохраняет психологический эффект. Коридор начинается с обычной лампы накаливания (тёплое свечение), за которым идёт лампа дневного света (с неприятным свечением). Такая комбинация довольно редко встречается в реальной жизни, потому что это означает, что архитектор передумал строить коридор, или у электрика закончились нормальные лампы. Вероятнее всего, Valve (или Комбайны) хотели добиться эффекта перехода между опасной и безопасной зонами.

Перед тем, как зайти в одну из камер, игрок видит тревожную сцену с участием гражданина, объясняющего своё затруднительное положение. Здесь на потолке светит лампа накаливания. Скорее всего это потому, что дневной свет будет некомфортен для такого объёма. (Флуоресцентный свет используется в основном для коридоров и больших пространств.) Тем не менее, чуть в стороне расположен бестелесный light_spot(en), который придаёт определённое настроение сцене.

Помимо вышеперечисленных прямых эффектов, в создании определённого настроения также может помочь теория цвета(en). Принимаемые в качестве примера лампы дневного света, тем не менее имеют неприятное холодное ощущение, поскольку неестественное мягкое синее свечение вызывает чувство холодной пустоты и изоляции.

Хотя, цвет - не единственный эффект. Расстояние и освещённость также вносят свою лепту. Освещённые комнаты кажутся более безопасными, потому что хорошо просматриваются, а комнаты с постоянно мерцающим светом вызывают неприятные чувства, поскольку большая часть пространства скрыта от игрока. Также, если в комнате хорошо видны все углы, кроме одного, то именно этот угол станет потенциальной угрозой, и будет находиться под пристальным вниманием игроков.

Используйте эту информацию, чтобы стать дизайнером уровня. Она поможет создавать как карты ужасов, так и карты для детей, но не старайтесь пугать детей до икоты: Бог вас покарает. Освещение не просто делает мир видимым, оно определяет его.

Правдоподобный источник света

Создание правдоподобного источника света может стать нетривиальной задачей. Простое размещение объектов освещения, излучающих свет, ничего не даёт в плане того, зачем оно там и почему. Правильный источник света - это такой источник, который выглядит на карте как родной. Зачастую хороший свет состоит из нескольких объектов освещения. Обычно их два: один - источник света, а другой - лампа (берётся prop_static или func_detail(en) с соответствующей текстурой).

Обычная лампа.

Первый шаг состоит в том, чтобы определиться с источником света. Найдите нужную текстуру или модель. Фильтр по словам "light" или "lamp" в браузере текстур или моделей даст хороший результат. Теперь выберите лампу, подходящую по обстановке (т.е. промышленные для промышленной сцены) и разместите в комнате модель или текстуру. Для нашего примера выберите лампу, показанную справа, и поставьте её на карту как prop_static.

Следующим шагом будет создание света. Посмотрите на выбранный источник и спросите себя: будет ли свет исходить из-за тонированного стекла, и не является ли он узко направленным лучом. Задействуйте разные объекты освещения, и задайте им соответствующие свойства, которые создадут нужный эффект. В данном примере свет будет направленным, так что берём light_spot. Далее, этот будет интенсивный свет, поэтому выставляем яркость на 1000. Теперь посмотрим на цвет источника. Стекло не тонировано, а излучаемый поток в реальном мире получается интенсивным за счёт отражающих поверхностей внутри, поэтому оставим значение температуры на 255 255 255. Теперь отрегулируйте линию луча так, как если бы он исходил из prop_static.

Теперь может возникнуть проблема. Если вы поместили источник света внутри модели/браша, она может блокировать свет (который будет освещать только модель). Чтобы избежать этого, зайдите в свойства prop_static, и напротив строки "Disable shadows" поставьте "Yes". (Если источником света является браш, преобразуйте его в func_brush(en) и измените его свойства точно также. Это предотвратит блокировку источника света).

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

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

Статичное освещение против динамического

У статичных источников света есть значительное преимущество перед динамическими. Статичные источники не дают дополнительной нагрузки на графику, поэтому они используются для быстрой прорисовки карты. Динамический свет весьма сильно нагружает движок, и может замедлить вашу карту. Важно понимать, где и как использовать тот или иной тип освещения.

Во-первых, статичное освещение рассчитывается во время VRAD-компиляции; поэтому, в игре оно просто визуализируется и не влияет на производительность. Стандартное статичное освещение - это light, light_spot и light_environment, но есть условия, которые могут это изменить. Проблема со статичным освещением в том, что оно - статично. И будучи таковым, оно не даст каких-либо специальных эффектов.

Динамическое же освещение представлено в двух вариантах. Существует переключаемое освещение, и динамически рассчитываемый свет. Каждый из них по-своему влияет на обработку, но оба они весьма нагружают графику, и должны использоваться экономно.

Переключаемое освещение похоже на статическое тем, что информацию о карте освещённости оно собирает в процессе компиляции RAD. Свет делают переключаемым с помощью трёх вещей: ему дают имя, ему дают стиль, ему задают шаблон. Обычным освещением, которое не поддерживает динамические эффекты, являются переключаемые огни: это light и light_spot, но отнюдь не light_environment. Переключаемый свет использует две карты освещенности: включено и выключено. Переключаемое освещение чередует или смешивает карты освещённости, что позволяет создавать их только две. Это даёт статическому освещению все преимущества, позволяя быть частично динамическим. Допустим, у вас есть два переключаемых источника света, которые падают на одну поверхность, сколько необходимо карт освещённости?

  • Light 1 & 2 ВКЛ
  • Light 1 ВКЛ, 2 ВЫКЛ
  • Light 1 ВЫКЛ, 2 ВКЛ
  • Light 1 & 2 ВЫКЛ

В целом, это четыре состояния. Вы добавили третью переключаемую лампу, и образовали восемь карт освещённости. Здесь возникает проблема с освещением, ибо для карты освещённости слишком тяжело создавать все возможные состояния. Дело в том, что существует жёстко запрограммированный лимит: для одной поверхности вы можете создавать только две переключаемых лампочки. Есть некоторое решение: для одной поверхности вы можете сделать 50 переключаемых лампочек с одним и тем же именем; тем не менее, нельзя создавать более 32 поименованных источников света. Переключаемое освещение увеличивает время запуска RAD, увеличивает размер файла, а также нагружает систему во время переключения; однако, в любом состоянии оно оказывает не большее воздействие, чем статичное освещение.

Истинное динамическое освещение - это то, что присуще самому объекту, и связано со свойствами её предков (Parent). Объект встроенного динамического эффекта - light_dynamic и point_spot. Point_spot имеет уникальный флажок, который переводит его в динамический или статический режим освещения, и по-умолчанию включен динамический режим, что может застать Вас врасплох. Динамический процесс освещения полностью выполняется во время игры, что означает, что он не влияет на компилятор RAD и размер файла, но тормозит во время игры на карте. Система тормозит потому, что динамический свет должен постоянно прорисовываться. Такие объекты должны использоваться только тогда, когда источник света движется, если же свет не предназначен для движения, то он не должен быть истинно динамическим. Если он предназначен для включения и выключения, то должен быть переключаемым. Ни какое перемещение не должно иметь статичный свет. При неправильном использовании, затраты на динамическое освещение будут перевешивать его преимущества. Динамическое освещение должно использоваться гораздо более экономно, чем переключаемое освещение. Еще одной слабой стороной динамического освещения является то, что для упрощения вычислений оно не запускает процессы отражения и диффузии, что даёт резкий свет.

Статическое освещение легко для движка, и даёт хорошую детализацию, динамическое же освещение может перемещаться и изменяться, но при этом нагружается графика и возникает потеря детализации. Самым простым способом проверить вашу карту на загрузку динамическим освещением, является команда +Showbudget(en). Она позволяет выяснить, когда на вашей карте слишком много световых эффектов. Добротное использование динамического освещения может весьма улучшить вашу карту, и одновременно тормозить её.

Быстрый и эффективный RAD

Процесс компиляции RAD может проходить очень долго, что станет тормозом в процессе разработки карты. Решить это можно следующим образом:

  • Выключите компиляцию RAD, и включайте её только тогда, когда необходимо настроить и проверить освещение карты.
  • Используйте инструмент Cordon(en), чтобы компилировать только отдельные участки карты. (Если вы используете light_environment(en), создайте его копию, и поместите в пределах компилируемого участка карты.)
  • Внесите несколько изменений сразу. Зачем настраивать только пару точек освещения, когда их можно настроить в разных частях карты, и всё это сразу скомпилировать?
  • Стандартизируйте ваше освещение. Установите значения RGB и цвета для каждого типа освещения вашего уровня (напр., флуоресцентных ламп или прожекторов, и т.д.), чтобы каждый экземпляр имел одинаковые исходные значения. Тогда, вместо того, чтобы для каждого источника света придумывать свои значения, вам нужно всего лишь подправить некоторые значения для получения нужного эффекта (напр., в большой комнате понадобится много света определённого типа).
  • Используйте любой свободный компьютер в доме. Установите на них SDK, и компилируйте там ваше освещение. Пока они компилируют, вы будете продолжать рисовать карту.
    • Автоматизируйте синхронизацию ваших файлов с помощью программы Dropbox или SparkleShare, чтобы упростить процесс.

Заключение

Мы раскрыли основы эффектов освещения в стандартных играх Source. С выпуском Episode Two(en) могут быть добавлены новые эффекты.

См. также