Настройка неотъемлемой части не только мира реального, но и мира виртуального — света.
Свет является неотъемлемой частью не только мира реального, но и мира виртуального. В компьютерных играх через освещение и вспомогательные эффекты (солнечные лучи, пробивающиеся через листву деревьев, легкая дымка, стелющаяся у земли ранним утром) передается не просто "цвет", но и "настроение", "температура" пространства. Таким образом можно плавно перейти к рассмотрению процесса создания освещения локаций в Скайриме.
Точечное освещение маркерами
Начать стоит с "лампочек". Ими задается явное свечение в интерьерах, экстерьерах, в общем - почти всюду. Все лампочки живут по адресу 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:
- Omnidirectional - шейдерный источник освещения без теней во всех направлениях. Просвечивает сквозь модели и не имеет ограничений по количеству в кадре, но не на модели (об этом ниже);
- Shadow Hemisphere - теневой источник освещения в виде полусферы. Половина светит тенью, вторая безтеневым светом;
- Shadow Omnidirectional - теневой источник освещения, испускает свет во всех направлениях;
- 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 - наследуется список регионов с погодой (такой же как при выборе неба в локации) Экстерьерное свечение динамично во времени, и соответствует суточному ходу освещения. Применимо как для эффектов, так и для самих маркеров света:
Обратите внимание, днем все три канала светят на одном уровне:
С наступлением сумерек красный оттенок преобладает, зеленый и синий затухают:
Ночью красного свечения меньше всего:
Правильное использование эффектов и освещения позволяет добиться самого главного - атмосферы в вашей локации. Существуют разные приемы использования света, но в целом, все зависит только от вас.
Итог
Вот небольшая, демонстративная переделка освещения в Драконьем Пределе. Затрагивает все описанные в уроке системы.
Комментарии