Перейти к содержанию
  • Автор оригинала: Dimonoider

    Настройка неотъемлемой части не только мира реального, но и мира виртуального — света.

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

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

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

    1.png

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

    • 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)

    3.jpg

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

    4.jpg

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

    5.jpg

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

    6.jpg

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

    7.jpg

    8.jpg

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

    9.jpg

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

    10.jpg

    Shadow Spotlight:

    11.jpg

    12.jpg

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

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

    13.jpg

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

    14.jpg

    15.jpg

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

    16.jpg

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

    17.png

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

    18.jpg

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

    19.jpg

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

    20.png

    21.png

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

    22.jpg

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

    23.jpg

    24.jpg

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

    25.jpg

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

    26.jpg

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

    28.jpg

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

    29.jpg

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

    30.png

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

    31.png

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

    32.jpg

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

    33.png

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

    34.png

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

    36.png

    37.png

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

    38.png

    39.png

    40.png

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

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

    oDNeMIVuVuI.jpg

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

    Qx04Xw9SCsA.jpg

    qrh7y-nNXiM.jpg

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

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

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

    42.png

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

    43.png

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

    44.png

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

    45.png

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

    41.png

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

    46.png

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

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

    48.png

    49.png

    50.png

    51.png

    52.png

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

    53.png

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

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

    54.png

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

    55.png

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

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

    56.png

    57.png

    58.png

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

    59.png

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

    60.png

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

    62.png

    ImageSpace

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

    63.png

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

    64.png

    65.png

    66.png

    67.png

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

    68.png

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

    Цитата:

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

    72.png

    Эффекты

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

    Тенеобразующие источники света на эффекты не влияют:

    75.png

    76.png

    77.png

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

    78.png

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

    79.png

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

    81.png

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

    80.png

    82.png

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

    83.png

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

    84.png

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

    85.png

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

    86.png

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

    Итог

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

    bydMWJJAGyU.jpg

    06rfbv_4eRI.jpg

    CotQjwA4dng.jpg

    d6-Cs7BQJR4.jpg

    dx9xr2qU3-g.jpg

    edBERMb85xk.jpg-IwI9Y86N0U.jpg

    usT983QtfBc.jpg

    zIg0Igxoyrc.jpg

     

    • Нравится 10

    Обратная связь

    Рекомендуемые комментарии

    Lord RZ

    Опубликовано

    Шикарный мануал!

    • Нравится 3
    werr

    Опубликовано

    Это ж надо было столько понаписать.

    • Нравится 1
    ANYBIS_000

    Опубликовано

    спасибо

    Sirin...

    Опубликовано

    Спасибо!

    Хисимэль

    Опубликовано

    Очень полный, качественный и понятный мануал. Спасибо!

    Stealch

    Опубликовано

    1. Воспроизведем наш эксперимент в шейдерной обработке. - КАК?
    2. КАК выйти из режима Debug (#OfLights) и вернутся к моделям?


    Для публикации сообщений создайте учётную запись или авторизуйтесь

    Вы должны быть пользователем, чтобы оставить комментарий

    Создать аккаунт

    Зарегистрируйте новый аккаунт в нашем сообществе. Это очень просто!

    Регистрация нового пользователя

    Войти

    Уже есть аккаунт? Войти в систему.

    Войти

×
×
  • Создать...