Реклама

  • Страница 1 из 1
  • 1
Killing Floor Форум » Killing Floor Форум » Игровое редактирование Killing Floor » KF SDK: Освещение (Всё об освещении)
KF SDK: Освещение
slipe777Дата: Пятница, 13.Июля.2012, 01:33 | Сообщение # 1
Полковник
Группа: Заблокированные
Сообщений: 181
Статус: Offline
В этой статье:
- Свойства “лампочек”
- Описание различных источников света
- Добавление и настройка корон
- Разрешение и формат карт освещения
- Корректировка яркости и оттенка карты


Освещение является неотъемлемой частью дизайна и одной из важнейших особенностей любой карты. Скудная проработка и декорирование иногда и вовсе незаметны при хорошем освещении, а отличный дизайн и “начинку” уровня можно запросто испортить плохим освещением или Ambient-яркостью. Поэтому очень важен должный подход к этому делу.

Для новичков:
- Для работы с освещением используются режимы окон редактора Lighting Only(Alt+0) и Dynamic Light(Alt+5). Первый позволяет видеть освещение в “чистом” виде и является основным, во втором свет виден уже наложенным на текстуры геометрии и объектов и служит для корректировки и полного предпросмотра.
- После добавления или изменения источников света, освещение должно быть скомпилировано. Помимо полного билда карты есть 2 кнопки для компиляции освещения отдельно – Build Lighting и Build Changed Lighting .

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

Освещение, как таковое, можно разделить на 3 условных категории:

Фоновое

Освещения без видимого для игрока источника(нельзя ассоциировать с чем-либо). Как правило это группы обычных Light-ов одинакового(или близкого) оттенка и насыщенности, среднего(12-32) радиуса освещения, практически равномерно распределенные по площади освещаемого учаска.



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

Естественное

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



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

Дополнительное

Преимущественно Light-ы с малым(2-8) радиусом освещения и высокой(опционально) яркостью.



Используется в комбинации с другими источниками света для дополнительного освещения определенных деталей или мест, недоступных для других видов освещения. Так же может использоваться для “подчеркивания” каких либо особенностей.

Итак, начнем собственно с имеющегося набора для создания освещения.

Light

Обыкновенная шаблонная “лампочка”, включена в набор Actor-ов по умолчанию и добавляется нажатием ПКМ > Add Light Here. Сама же находится в браузере по незамысловатому адресу Actor > Light и является “корнем” всех других типов освещения.
Рассмотрим основные свойства.



Light Color:
bActorShadows – отбрасывают ли Actor-ы тени (на практикеизменение параметра ни на что не влияет)
bAttenByLife[/b] – (теоретически) ослабление света со временем(по мере жизни)
[b]bCorona
– включить корону (подробнее чуть ниже)
bDirectionalCorona – включить зависимость размера короны от угла, под которым игрок на неё смотрит (корона будет иметь максимальный размер, если смотреть прямо на неё и “исчезнет” при взгляде под углом в 90 градусов)
bDynamicLight – при включении делает свет динамическим, таким образом свет от данного источника проходит все объекты “насквозь” не отбрасывая теней(зачастую выглядит неестественно), но не требует компиляции и может быть использован для некоторых эффектов.
bLightingVisibility– будет ли производится расчет видимости освещения от данного источника при проверке карты
bSpecialLit – при True ,свет от данного источника будет виден только на поверхностях BSP брашей с отмеченной галочкой Special Lit
LightCone – угол конуса освещения(только при LE_Spotlight), максимальное значение(255) равняется приблизительно 160(+ -) градусам
LightEffect – здесь можно выбрать особый эффект для освещения (не все из существующих корректно раюотают)
Light Period\Phase – теоретически должны отвечать за анимацию особых эффектов, но в стандартном наборе я не нашел ни одного эффекта, на которого бы влияли данные параметры
LightRadius – радиус освещения, имеет собственные единицы измерения отличающиеся от UU (каждая единица радиуса от источника до “предела” равна приблизительно 27 UU), границы реального радиуса освещения можно узнать установив отображение Actor-ов в окне редактора на Radii View



LightType – тип освещения (дополнительный эффект), может использоватся как в комбинации с LightEffect, так и отдельно (для большинства типов требуется установка bDynamicLight на True)

SpotLight

Направленный источник освещения, светит “конусом”. Находится по адресу Actor > Light > Spotlight. По сути это обыкновенный Light с установленным LightEffect=LE_Spotlight, но в отличии от последнего имеет стрелку – указатель направления, что упрощает настройку.

Sunlight

Солнечный свет. Actors > Light > Sunlight. От обычного лайта отличается иконкой, наличием стрелки–указателя и установленным LE_Sunlight по умолчанию.
Такой свет “покрывает” всю территорию карты, на которую может попасть. Независимо от расположения Sunlight-а, источником света всегда будет пространство за бэкдропом, так что наличие “неба” обязательно.
Так же стоит отметить, что на Unreal Engine 2 нет рассеивания света как такового, иными словами – солнечный свет здесь как на луне (если Sunlight единственный источник освещения на карте, то все пространство в тени - чернота).
Частично эта проблема решается добавлением дополнительных источников освещения, в том числе дополнительных Sunlight-ов.
Комбинируя основной Sunlight с дополнительными(меньшей яркости и без оттенка), сохраняя общий угол падения “солнечных лучей” можно получить солнечный свет близкий к реалистичному на открытых пространствах.



Количество и свойства дополнительных Sunlight-ов может быть разным в зависимости от карты. Это однако требует некоторой возни с параметрами во вкладке Movement, точной настройки Rotation-а по 3м осям и некоторых математических расчетов. Альтернатива – фоновое освещение мест “в тени”.

TriggerLight

Actor > Light > TriggerLight. Свет, который может включатся\выключатся по системе Event > Tag (в свойствах лайта, во вкладке Events прописывается тэг в поле Tag, триггеру прописывается этот же тэг в поле Event).
Является Dynamic Light-ом по умолчанию. Для корректной работы требует настройки InitialState.



Для начала рассмотрим возможные InitialState (aka типы активации).
- TriggerTurnsOn: при активации свет “включается” и остается включенным
- TriggerTurnsOff: при активации свет “выключается” и остается выключенным
- TriggerToggle: активация может неоднократно и “включать” и “выключать” свет
- TriggerControl: (актуально только для использования обычных Trigger-ов) свет включен, пока Trigger активирован и наоборот.
-TriggerPound: теоретически после активации свет должен плавно “включатся” и “выключатся” на протяжении времени заданном в RemainOnTime, но на практике работает как одноразовый on\off.

Прочие свойства:
bDelayFullOn – делает включение\выключение света плавным игнорируя ChangeTime
bInitiallyOn – включен ли свет изначально
ChangeTime – время, за которое яркость переходит от 0 до установленного значения при включении и наоборот при выключении
RemainOnTime – теоретически является параметром только для TriggerPound, на практике никакого эффекта не наблюдается

KFMovableLight

Находится по адресу Actor > Light > KFMovableLight Данный лайт может быть “привязан” к муверу и таким образом динамически передвигаться.



Для корректной работы необходимо в свойствах вручную установить bDynamicLight=True(вкладка Lighting), затем прописать тэг в поле AttachTag(вкладка Movement). Точно такой же тэг следует прописать муверу(к которому будет осуществлена привязка) в поле Tag(вкладка Events).
Таким образом при движении мувера лайт повторит точно такое же движение относительно своей исходной позиции.

Effect_TacLightGlow и HeadlightCorona я пропущу ввиду их неактуальности.

Короны

Одни из самых простых и в то же время красивых декораций карты – это короны света. По сути это видимые скины для лампочек, спрайты с полупрозрачной(как правило) тексрурой.



Для добавления короны нужно в свойствах лайта во вкладке Lighting установить bCorona=True, затем во вкладке Display добавить Skin(выбрать текстуру в браузере и нажать Use или прописать путь вручную).



CoronaRotation – коэффициент вращения короны в зависимости от расстояния от игрока до источника
CoronaRotationOffset – начальное вращение короны
Max\Min CoronaSize – максимальный\минимальный размер короны
UseOwnFinalBlend – (?) используется ли сложная текстура-FinalBlend

Рекомендую для корон создавать отдельные “лампы” с нулевой яркостью и большим радиусом.

Настройка теней

Качество теней в первую очередь зависит от разрешения карт освещения, однако это применимо только для BSP геометрии.
Выделив нужные поверхности BSP брашей и открыв их свойства, можно изменить параметр Light map от 256 до 1 (по умолчанию 16.0).



Чем меньше значение установлено в Light map – тем больше разрешение карт освещения(максимум 1.0).
Для сравнения:

16.0


1.0


Стоит так же отметить, что это влияет на вес карты, длительность компиляции и немного на производительность, так что выставлять 1.0-2.0 имеет смысл только там, где это наиболее заметно. Исключение – маленькие “ненагруженные” карты, на таких можно сразу нажать Shift+S и выставить максимальное качество.

На полигональные модели и ландшафт свет ложится несколько иначе(vertex lit). Чем больше полигонов у модели(и чем меньше их размеры) – тем качественнее освещение и тени(схожая ситуация с сеткой ландшафта). Тем не менее, до максимального качества теней на BSP все равно очень далеко.
Однако возможно реализовать отдельные тени в качестве Projector-ов(Actor > Projector) и они будут выглядеть должным образом на любых объектов.



Формат освещения

Одна из важнейших и в то же время очень простых опций – формат освещения. Его можно установить в опциях компиляции(Build Options )



На выбор есть 3 варианта: DXT1(максимальное сжатие), DXT3(среднее сжатие) и RGB8(без сжатия). По умолчанию, при компиляции освещения происходит сжатие в DXT3.
Если выставить формат RGB8, то качество освещения будет намного выше, оно будет более мягким и пропадет эффект “цветных пятен”.
Использование несжатого формата освещения влияет на вес карты и производительность, но не так сильно, как высокое разрешение карт освещения.

Для сравнения, разные настройки формата и разрешения light map-ов:

Формат DXT3, light map окружения 16.0 (настройки по умолчанию)


Формат RGB8, light map окружения 16.0


Формат DXT3, light map окружения 1.0-2.0


Формат RGB8, light map окружения 1.0-2.0


Как видно, формат RGB8 выглядит намного лучше DXT3 при невысоком разрешении light map-ов, но разница становится очень небольшой при высоком разрешении. Так же стоит отметить, что искажения при сжатии намного более заметны при “цветном” освещении, чем при “белом”.
Основываясь на производительности карты выбирайте себе подходящую комбинацию.

Корректировка яркости и оттенков

Это скорее относится к теме о зонах, но к освещению имеет непосредственное отношение.
При создании карты многие сталкиваются с одной проблемой. При проверке карты в игре, оказывается что яркость и общая гамма карты не соответствуют видимому в редакторе(как правило карта оказывается слишком яркой).

Коррекцию цветов можно установить в свойствах ZoneInfo для зоны или в Level Properties(F6) сразу для всей карты.



Нужно установить bDistanceFog=True(вкладка ZoneInfo) и bNewKFColorCorrection=True(вкладка ZoneLight), затем отрегулировать гамму в KFOverlayColor. Если просто понизить все 3 параметра B, G и R(синий, зеленый, красный), то и общая яркость карты снизится.
Туман является обязательным для корректной работы ColorCorrection, но если он нежелателен можно просто задать ему запредельный радиус.

Мануал сделан маппером К-2 и взят с сайта killingfloor.ru


Сообщение отредактировал slipe777 - Пятница, 13.Июля.2012, 01:35
 
Killing Floor Форум » Killing Floor Форум » Игровое редактирование Killing Floor » KF SDK: Освещение (Всё об освещении)
  • Страница 1 из 1
  • 1
Поиск:
Лента обновлений
Случайные Файлы
Самые активные
  • DIMON
    количество постов — 1018
  • stalker
    количество постов — 785
  • Kowalsky
    количество постов — 383
  • Maximus
    количество постов — 262
  • Luponero
    количество постов — 239
  • J-Dog
    количество постов — 197
  • Sailor
    количество постов — 188
  • slipe777
    количество постов — 181
  • hater
    количество постов — 164
  • TT
    количество постов — 157