Перейти к содержимому


Информация о статье

  • Добавлено:
  • Обновлено:
  • Просмотры: 2789
  • Автор: Dimonoider

 


* * * * *
1 Рейтинг

Creation Kit: Свет и эффекты

Написано в Июн 06 2015 18:35

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

Содержание:

Точечное освещение маркерами

 Начать стоит с "лампочек". Ими задается явное свечение в интерьерах, экстерьерах, в общем - почти всюду. Все лампочки живут по адресу WorldObjects > Light:

 Нажмем правой кнопкой мыши в списке источников света, выберем New и разберемся с появившимся окошком:

 

  • ID - тут все понятно, задаем объекту уникальный идентификатор;
  • Model - по умолчанию освещение имеет свою модель-маркер, но факелы имеют свою уникальную модель, которая прописывается в этом поле;
  • Select Sound - выбрать звук, который будет издавать светящийся объект.
  • Поле This light can be carried - используется для играбельных источников света (факелы);
  • Off by default - по умолчанию факел не будет испускать свет;
  • Name - имя объекта, отображаемое в игре, например "факел";
  • Weight - вес объекта;
  • Value  - цена в золоте;
  • Time - время жизни, факел ведь не может гореть вечно.
  • Поле Color - параметры R, G, B отвечают за яркость красного, зеленого, синего канала в общем свечении лампочки соответственно. Измеряются от 0 до 255, в общей сложности это 16581375 возможных оттенков света; 
  • Кнопка Select Color открывает системное окно настройки оттенков с более наглядной визуализацией; 
  • Fade - яркость по умолчанию для источника освещения, измеряется от 0 до 10 (ручная настройка позволяет достигать больших значений).
  • Параметр Radius - радиус по умолчанию для источника освещения.
  • Поле Flicker Effect  отвечает за анимацию света;
  • Flicker - мерцание света;
  • Pulse - пульсация, более выраженное чем мерцающая анимация;
  • Period - частота с которой свет будет проигрывать анимацию. Чем меньше значение, тем чаще например пульсация;
  • Intensity Amplitude - амплитуда яркости свечения, регулирует колебания яркости лампочки;
  • Movement Amplitude - смещение света относительно его маркера. Большие значения вызывают "блуждание" света по локации.

Используйте параметр Portal-strict для того, чтобы свет не выходил за пределы room-маркеров, т.е. освещал определенную комнату. При использовании портала в другую комнату рядом с источником освещения, свет начнет освещать обе комнаты.

Теперь перейдем к разбору типов точечных источников освещения (Type в окне Light) и управлению ими. Всего типов 4: 

  1. Omnidirectional - шейдерный источник освещения без теней во всех направлениях. Просвечивает сквозь модели и не имеет ограничений по количеству в кадре, но не на модели (об этом ниже);
  2. Shadow Hemisphere - теневой источник освещения в виде полусферы. Половина светит тенью, вторая безтеневым светом;
  3. Shadow Omnidirectional - теневой источник освещения, испускает свет во всех направлениях;
  4. Shadow Spotlight - теневой конусообразный источник освещения.

Все теневые источники освещения имеют ограничение - не более 4 в кадре. Так заведено со времен их появления. В случае, когда необходимо использовать пятый, первый выключается.


Возьмем обыкновенную Omnidirectional лампочку: (отображение маркеров освещения включается комбинацией Ctrl + i) Свет активируется клавишей A, теневой свет необходимо подключить во вкладке Shaders окошка настроек редактора (Preferences)

Активируем отображение радиуса ее свечения (кнопка L):

Увеличить радиус можно либо через свойства лампочки как объекта в локации, так и зажав клавишу S, и удерживая маркер лампочки левой кнопкой мыши, потянув вверх:

Яркость регулируется либо через окно Reference, вкладка Light Data, либо через удерживание левой кнопкой мыши маркера лампочки, при одновременно зажатых Ctrl + Alt + S:

Теперь возьмем Shadow Hemisphere источник. Маркер выглядит так, теневые источники имеют "крестовину" фиолетового цвета в центре маркера. Можно заметить, что выступ начал отбрасывать тень:

Обратите внимание, лампочка светит во всех направлениях, но тень образуется лишь в полусфере:

Shadow Omnidirectinal источник освещает пространство во всех направлениях:

Shadow Spotlight:

Некоторые особенности работы точечных источников освещения

 Модель затенения в Скайриме не идеальна. Тени имеют некоторое искажение, а так же своего рода "белое пятно" - место, в котором тень отсутствует, а вот свет наоборот светит. Размер бывает от буквально тончайшей полоски, до вот такого просвета:

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

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

Чтобы выставить максимальную дальность отрисовки света необходимо во вкладке Light Data свойств маркера света активировать параметр Never Fades:

Результат не заставит себя ждать:

С теневым освещением бывает, что текстура объекта или тень становится полосатой:

Для того, чтобы это как-то поправить необходимо изменить параметр Shadow Depth Bias в Light Data. Обычно он выставляется автоматически, в зависимости от радиуса лампочки, но иногда его можно подтянуть вручную:

 


Поговорим об оптимизации света. Как видите обычных шейдерных источников может быть много. Теневых 4, кроме того, им лучше всего прописывать небольшие радиусы, в противном случае ваши FPS улетят глубоко вниз, особенно в пространстве со сложной геометрией:

В Скайриме существует ограничение - не более 7 точечных источников света на модель. Для примера возьмем 7 лампочек.

Теперь добавим еще одну - восьмую для уже освещенных панелей:

Начнем двигать ее так, чтобы ее радиус попал на уже освещенные объекты:

Как видите появляется черная текстура. Это связано с тем, что для данной модели было превышено количество источников освещения:

Если поместить оранжевую лампочку в центр комнаты и увеличить радиус, то уже освещенные белым светом модели никак не отреагируют на изменение освещения (при перезагрузке ячейки (F5) могут окрасится оранжевым, но возникнут другие артефакты), в это же время комната окрасится оранжевым, и появится 4 черных квадрата - места, не освещаемые основными источниками света, но затрагиваемые их радиусом:

Для того, чтобы как-то контролировать количество и освещенных моделей используется особый шейдер. На основной панели CreationKit найдите кнопку Preferences (справа от кнопок загрузки и сохранения плагина). Перейдите на вкладку Shaders:

В окне Debug активируйте шейдер # of Lights:

Все объекты приобретут окрас, отражающий количество источников освещения, воздействующих на них. Как видите максимальная загруженность светом выделяется красным. Зеленые области характеризуют отсутствие какого-либо специального освещения (свечение солнца не влияет на показания освещенности):

Воспроизведем наш эксперимент в шейдерной обработке. Обратите внимание, те самые черные квадраты окрашены в красный цвет. В бордовый окрасились соседние с ними (поэтому мы не видели там черной текстуры), оранжевая лампочка окрасила модели в своем радиусе:

Минус в том, что мы даже понятия не имеем о моделях, которые окрашены. Картинка слишком плоская. Чтобы исправить это нам необходимо включить отображение геометрии коллизий (F4) либо wireframe (безтекстурная отрисовка моделей треугольниками - кнопка 7 на клавиатуре):


Попробуем очистить локацию от источников света:

Ключевой момент: Даже если источник света не задевает модель визуально, он может задеть ее "границы", учитывайте этот фактор во время работы над освещением:

Теперь хотелось бы дать несколько советов по точечным источникам освещения:

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

  • Учитывайте пост обработку игры. К примеру яркость в настойках Экран в игре очень влияет на картинку:

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

Рассеянный свет

 При создании качественного освещения нельзя ограничиваться только точечными маркерами. Необходимым условием является небольшая подсветка каждого объекта в локации. За это отвечает система  Lighting Template. Это Directional подсветка всех объектов, создание неба в интерьерах и плавное затуманивание отдаленных объектов. Отображение их вызывается кнопкой Toggle Sky на основной панели редактора (клавиша 6). Готовые шаблоны можно найти по адресу WorldData > Lighting Template:

Я предпочитаю настраивать освещение непосредственно для ячейки. Альтернативное окно можно открыть выбрав в окне Cell View свою локацию и нажав Edit:

Перед нами откроется окно Cell:

Здесь нас сперва интересует вкладка Directional Ambient Lighting

Эта вкладка отвечает за общую подсветку каждого объекта в локации по определенной координате. Кнопка Set From Ambient выставляет значения различные для осей в той гамме, которая выставлена в параметре Ambient в окне Lighting. Возьмем освещенную точечным источником часть локации:

Теперь пропишем всем объектам небольшую подсветку:

Перейдем на вкладку Lighting.

Параметр Show Sky отвечает за отображение неба в ячейках, в том числе за имитацию солнечного света (без теней):

Следующий блок Directional - это дополнительная подсветка объектов под определенным углом с определенной стороны:

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

Блок Fog отвечает за дымку, плавное затуманиванивание отдаленных объектов, или общую затуманенность локации. Для наглядности возьмем крайние ярки значения, выставим Near - ближний туман и Far - дальний туман. Как видно, дальний туман окрашивает фон локации там, где отсутствует небо:

Мы не увидели окрашивание объектов в связи с тем, что ниже, параметры дальности для Near и Far небыли выставлены. Логично, что граница ближнего тумана должна быть меньше чем дальнего. Вот результат:

Как видите в самом низу блоки сохранили серость, далее идет красноватый цвет, переход через желтизну в яркий зеленый. Резкость перехода и интенсивность тумана регулируется параметрами Pow и Max. (используйте значения от 0.1 до 1)

При низком значении Pow  интенсивность ближнего тумана резко снижается, объекты окрашиваются дальним затуманиванием, а резкость перехода очень большая:

При среднем (0.5) значении параметра Max, и идентичном (или меньше) значении Pow преобладают промежуточные, переходные оттенки тумана. Видимость самих объектов повышается:

При низком значении Max преобладает ближнее (Near) затуманивание:

Нормальными значениями для ближнего и дальнего затуманивания являются значения, близкие к Directional освещению самой локации, обычно более яркие. Near туман можно сделать менее ярким чем Far. Значения для Pow и Max обычно держат в районе от 0.5 до 1.

ImageSpace

ImageSpace - пост обработка кадра. Настройка интенсивности размытия, размера солнца и прочее. Проживает по адресу SpecialEffect > Imagespace и Imagespace Mod. Локации используют просто Imagespace:

Выберем любой ImageSpace и кликнем два раза мышкой по нему. Откроется окно настройки со списком существующих шаблонов, просто перебираем их нажимая стрелки на клавиатуре, а в окне рендера будет наглядно отображаться изменение окружения под какой-то конкретный ImageSpace:

Предположим, что я выбрал интересующий меня шаблон. Для того, чтобы активировать его для локации, необходимо открыть меню Cell и во вкладке Common Data в блоке ImageSpace найти выбранную настройку по имени:

Народная мудрость:

Для каждой отдельной комнаты можно задавать собственный LightingTemplate и ImageSpace

Эффекты

 

Чтобы подчеркнуть особенности атмосферы локации, какого-то объекта или освещения используются различные эффекты дымки, тумана, световых столбов и прочего. Они активно взаимодействуют с освещением. Большинство эффектов проживает по адресу WorldObjects > MovableStatic > Effects. Тенеобразующие источники света на эффекты не влияют:

Паутина так же реагирует на освещение:

 

 

 

В разделе Static можно найти "ореолы" для светящихся объектов, все они в названии имеют Glow:

 

Иногда случается, что необходимо подсветить эффект не используя основное освещение. Для этого есть параметр Emmitance в одноименной вкладке любого объекта:

  •  Interior Light - наследуется список "лампочек" из раздела Light

  • Exterior Light - наследуется список регионов с погодой (такой же как при выборе неба в локации) Экстерьерное свечение динамично во времени, и соответствует суточному ходу освещения. Применимо как для эффектов, так и для самих маркеров света:

Обратите внимание, днем все три канала светят на одном уровне:

 

С наступлением сумерек красный оттенок преобладает, зеленый и синий затухают:

Ночью красного свечения меньше всего:

Правильное использование эффектов и освещения позволяет добиться самого главного - атмосферы в вашей локации. Существуют разные приемы использования света, но в целом, все зависит только от вас.

Итог

Вот небольшая, демонстративная переделка освещения в Драконьем Пределе. Затрагивает все описанные в уроке системы. В сущности своей 14-минутная компиляция полуторачасового творения на ходу:

Скриншоты